chore: initialize qiming workspace repository
1
qimingcode/packages/console/app/src/app.css
Normal file
@@ -0,0 +1 @@
|
||||
@import "./style/index.css";
|
||||
44
qimingcode/packages/console/app/src/app.tsx
Normal file
@@ -0,0 +1,44 @@
|
||||
import { MetaProvider, Title, Meta } from "@solidjs/meta"
|
||||
import { Router } from "@solidjs/router"
|
||||
import { FileRoutes } from "@solidjs/start/router"
|
||||
import { Suspense } from "solid-js"
|
||||
import { Favicon } from "@opencode-ai/ui/favicon"
|
||||
import { Font } from "@opencode-ai/ui/font"
|
||||
import "@ibm/plex/css/ibm-plex.css"
|
||||
import "./app.css"
|
||||
import { LanguageProvider } from "~/context/language"
|
||||
import { I18nProvider, useI18n } from "~/context/i18n"
|
||||
import { strip } from "~/lib/language"
|
||||
|
||||
function AppMeta() {
|
||||
const i18n = useI18n()
|
||||
return (
|
||||
<>
|
||||
<Title>opencode</Title>
|
||||
<Meta name="description" content={i18n.t("app.meta.description")} />
|
||||
<Favicon />
|
||||
<Font />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<Router
|
||||
explicitLinks={true}
|
||||
transformUrl={strip}
|
||||
root={(props) => (
|
||||
<LanguageProvider>
|
||||
<I18nProvider>
|
||||
<MetaProvider>
|
||||
<AppMeta />
|
||||
<Suspense>{props.children}</Suspense>
|
||||
</MetaProvider>
|
||||
</I18nProvider>
|
||||
</LanguageProvider>
|
||||
)}
|
||||
>
|
||||
<FileRoutes />
|
||||
</Router>
|
||||
)
|
||||
}
|
||||
BIN
qimingcode/packages/console/app/src/asset/black/hero.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 697 B |
@@ -0,0 +1,18 @@
|
||||
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(30, 0)">
|
||||
<g clip-path="url(#clip0_1401_86283)">
|
||||
<mask id="mask0_1401_86283" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300">
|
||||
<path d="M240 0H0V300H240V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86283)">
|
||||
<path d="M180 240H60V120H180V240Z" fill="#4B4646"/>
|
||||
<path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86283">
|
||||
<rect width="240" height="300" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 631 B |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,16 @@
|
||||
<svg width="240" height="300" viewBox="0 0 240 300" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86283)">
|
||||
<mask id="mask0_1401_86283" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300">
|
||||
<path d="M240 0H0V300H240V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86283)">
|
||||
<path d="M180 240H60V120H180V240Z" fill="#4B4646"/>
|
||||
<path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86283">
|
||||
<rect width="240" height="300" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 593 B |
|
After Width: | Height: | Size: 697 B |
@@ -0,0 +1,18 @@
|
||||
<svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(30, 0)">
|
||||
<g clip-path="url(#clip0_1401_86274)">
|
||||
<mask id="mask0_1401_86274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300">
|
||||
<path d="M240 0H0V300H240V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86274)">
|
||||
<path d="M180 240H60V120H180V240Z" fill="#CFCECD"/>
|
||||
<path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#211E1E"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86274">
|
||||
<rect width="240" height="300" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 631 B |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,16 @@
|
||||
<svg width="240" height="300" viewBox="0 0 240 300" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86274)">
|
||||
<mask id="mask0_1401_86274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="240" height="300">
|
||||
<path d="M240 0H0V300H240V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86274)">
|
||||
<path d="M180 240H60V120H180V240Z" fill="#CFCECD"/>
|
||||
<path d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z" fill="#211E1E"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86274">
|
||||
<rect width="240" height="300" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 593 B |
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1,30 @@
|
||||
<svg width="641" height="115" viewBox="0 0 641 115" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86292)">
|
||||
<mask id="mask0_1401_86292" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="641" height="115">
|
||||
<path d="M640.714 0H0V115H640.714V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86292)">
|
||||
<path d="M49.2868 82.1433H16.4297V49.2861H49.2868V82.1433Z" fill="#4B4646"/>
|
||||
<path d="M49.2857 32.8573H16.4286V82.143H49.2857V32.8573ZM65.7143 98.5716H0V16.4287H65.7143V98.5716Z" fill="#B7B1B1"/>
|
||||
<path d="M131.427 82.1433H98.5703V49.2861H131.427V82.1433Z" fill="#4B4646"/>
|
||||
<path d="M98.5692 82.143H131.426V32.8573H98.5692V82.143ZM147.855 98.5716H98.5692V115H82.1406V16.4287H147.855V98.5716Z" fill="#B7B1B1"/>
|
||||
<path d="M229.997 65.7139V82.1424H180.711V65.7139H229.997Z" fill="#4B4646"/>
|
||||
<path d="M230.003 65.7144H180.718V82.143H230.003V98.5716H164.289V16.4287H230.003V65.7144ZM180.718 49.2859H213.575V32.8573H180.718V49.2859Z" fill="#B7B1B1"/>
|
||||
<path d="M295.717 98.5718H262.859V49.2861H295.717V98.5718Z" fill="#4B4646"/>
|
||||
<path d="M295.715 32.8573H262.858V98.5716H246.43V16.4287H295.715V32.8573ZM312.144 98.5716H295.715V32.8573H312.144V98.5716Z" fill="#B7B1B1"/>
|
||||
<path d="M394.286 82.1433H345V49.2861H394.286V82.1433Z" fill="#4B4646"/>
|
||||
<path d="M394.285 32.8573H344.999V82.143H394.285V98.5716H328.57V16.4287H394.285V32.8573Z" fill="#F1ECEC"/>
|
||||
<path d="M459.998 82.1433H427.141V49.2861H459.998V82.1433Z" fill="#4B4646"/>
|
||||
<path d="M459.997 32.8573H427.14V82.143H459.997V32.8573ZM476.425 98.5716H410.711V16.4287H476.425V98.5716Z" fill="#F1ECEC"/>
|
||||
<path d="M542.146 82.1433H509.289V49.2861H542.146V82.1433Z" fill="#4B4646"/>
|
||||
<path d="M542.145 32.8571H509.288V82.1429H542.145V32.8571ZM558.574 98.5714H492.859V16.4286H542.145V0H558.574V98.5714Z" fill="#F1ECEC"/>
|
||||
<path d="M640.715 65.7139V82.1424H591.43V65.7139H640.715Z" fill="#4B4646"/>
|
||||
<path d="M591.429 32.8573V49.2859H624.286V32.8573H591.429ZM640.714 65.7144H591.429V82.143H640.714V98.5716H575V16.4287H640.714V65.7144Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86292">
|
||||
<rect width="640.714" height="115" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,30 @@
|
||||
<svg width="640" height="115" viewBox="0 0 640 115" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86330)">
|
||||
<mask id="mask0_1401_86330" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="640" height="115">
|
||||
<path d="M640 0H0V115H640V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86330)">
|
||||
<path d="M49.2346 82.1433H16.4141V49.2861H49.2346V82.1433Z" fill="#CFCECD"/>
|
||||
<path d="M49.2308 32.8573H16.4103V82.143H49.2308V32.8573ZM65.641 98.5716H0V16.4287H65.641V98.5716Z" fill="#656363"/>
|
||||
<path d="M131.281 82.1433H98.4609V49.2861H131.281V82.1433Z" fill="#CFCECD"/>
|
||||
<path d="M98.4649 82.143H131.285V32.8573H98.4649V82.143ZM147.696 98.5716H98.4649V115H82.0547V16.4287H147.696V98.5716Z" fill="#656363"/>
|
||||
<path d="M229.746 65.7139V82.1424H180.516V65.7139H229.746Z" fill="#CFCECD"/>
|
||||
<path d="M229.743 65.7144H180.512V82.143H229.743V98.5716H164.102V16.4287H229.743V65.7144ZM180.512 49.2859H213.332V32.8573H180.512V49.2859Z" fill="#656363"/>
|
||||
<path d="M295.383 98.5718H262.562V49.2861H295.383V98.5718Z" fill="#CFCECD"/>
|
||||
<path d="M295.387 32.8573H262.567V98.5716H246.156V16.4287H295.387V32.8573ZM311.797 98.5716H295.387V32.8573H311.797V98.5716Z" fill="#656363"/>
|
||||
<path d="M393.848 82.1433H344.617V49.2861H393.848V82.1433Z" fill="#CFCECD"/>
|
||||
<path d="M393.844 32.8573H344.613V82.143H393.844V98.5716H328.203V16.4287H393.844V32.8573Z" fill="#211E1E"/>
|
||||
<path d="M459.485 82.1433H426.664V49.2861H459.485V82.1433Z" fill="#CFCECD"/>
|
||||
<path d="M459.489 32.8573H426.668V82.143H459.489V32.8573ZM475.899 98.5716H410.258V16.4287H475.899V98.5716Z" fill="#211E1E"/>
|
||||
<path d="M541.539 82.1433H508.719V49.2861H541.539V82.1433Z" fill="#CFCECD"/>
|
||||
<path d="M541.535 32.8571H508.715V82.1428H541.535V32.8571ZM557.946 98.5714H492.305V16.4286H541.535V0H557.946V98.5714Z" fill="#211E1E"/>
|
||||
<path d="M639.996 65.7139V82.1424H590.766V65.7139H639.996Z" fill="#CFCECD"/>
|
||||
<path d="M590.77 32.8573V49.2859H623.59V32.8573H590.77ZM640 65.7144H590.77V82.143H640V98.5716H574.359V16.4287H640V65.7144Z" fill="#211E1E"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86330">
|
||||
<rect width="640" height="115" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,22 @@
|
||||
<svg width="641" height="115" viewBox="0 0 641 115" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86315)">
|
||||
<mask id="mask0_1401_86315" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="641" height="115">
|
||||
<path d="M640.714 0H0V115H640.714V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86315)">
|
||||
<path d="M49.2857 32.8573H16.4286V82.143H49.2857V32.8573ZM65.7143 98.5716H0V16.4287H65.7143V98.5716Z" fill="white"/>
|
||||
<path d="M98.5692 82.143H131.426V32.8573H98.5692V82.143ZM147.855 98.5716H98.5692V115H82.1406V16.4287H147.855V98.5716Z" fill="white"/>
|
||||
<path d="M230.003 65.7144H180.718V82.143H230.003V98.5716H164.289V16.4287H230.003V65.7144ZM180.718 49.2859H213.575V32.8573H180.718V49.2859Z" fill="white"/>
|
||||
<path d="M295.715 32.8573H262.858V98.5716H246.43V16.4287H295.715V32.8573ZM312.144 98.5716H295.715V32.8573H312.144V98.5716Z" fill="white"/>
|
||||
<path d="M394.285 32.8573H344.999V82.143H394.285V98.5716H328.57V16.4287H394.285V32.8573Z" fill="white"/>
|
||||
<path d="M459.997 32.8573H427.14V82.143H459.997V32.8573ZM476.425 98.5716H410.711V16.4287H476.425V98.5716Z" fill="white"/>
|
||||
<path d="M542.145 32.8571H509.288V82.1429H542.145V32.8571ZM558.574 98.5714H492.859V16.4286H542.145V0H558.574V98.5714Z" fill="white"/>
|
||||
<path d="M591.429 32.8573V49.2859H624.286V32.8573H591.429ZM640.714 65.7144H591.429V82.143H640.714V98.5716H575V16.4287H640.714V65.7144Z" fill="white"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86315">
|
||||
<rect width="640.714" height="115" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<svg width="640" height="115" viewBox="0 0 640 115" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1401_86353)">
|
||||
<mask id="mask0_1401_86353" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="640" height="115">
|
||||
<path d="M640 0H0V115H640V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_1401_86353)">
|
||||
<path d="M49.2308 32.8573H16.4103V82.143H49.2308V32.8573ZM65.641 98.5716H0V16.4287H65.641V98.5716Z" fill="black"/>
|
||||
<path d="M98.4649 82.143H131.285V32.8573H98.4649V82.143ZM147.696 98.5716H98.4649V115H82.0547V16.4287H147.696V98.5716Z" fill="black"/>
|
||||
<path d="M229.743 65.7144H180.512V82.143H229.743V98.5716H164.102V16.4287H229.743V65.7144ZM180.512 49.2859H213.332V32.8573H180.512V49.2859Z" fill="black"/>
|
||||
<path d="M295.387 32.8573H262.567V98.5716H246.156V16.4287H295.387V32.8573ZM311.797 98.5716H295.387V32.8573H311.797V98.5716Z" fill="black"/>
|
||||
<path d="M393.844 32.8573H344.613V82.143H393.844V98.5716H328.203V16.4287H393.844V32.8573Z" fill="black"/>
|
||||
<path d="M459.489 32.8573H426.668V82.143H459.489V32.8573ZM475.899 98.5716H410.258V16.4287H475.899V98.5716Z" fill="black"/>
|
||||
<path d="M541.535 32.8571H508.715V82.1428H541.535V32.8571ZM557.946 98.5714H492.305V16.4286H541.535V0H557.946V98.5714Z" fill="black"/>
|
||||
<path d="M590.77 32.8573V49.2859H623.59V32.8573H590.77ZM640 65.7144H590.77V82.143H640V98.5716H574.359V16.4287H640V65.7144Z" fill="black"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1401_86353">
|
||||
<rect width="640" height="115" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 302 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg width="54" height="30" viewBox="0 0 54 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 30H0V0H24V6H6V24H18V18H12V12H24V30Z" fill="#F1ECEC"/>
|
||||
<path d="M12 18H18V24H6V12H12V18Z" fill="#4B4646"/>
|
||||
<path d="M48 12V24H36V12H48Z" fill="#4B4646"/>
|
||||
<path d="M54 30H30V0H54V30ZM36 24H48V6H36V24Z" fill="#F1ECEC"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 333 B |
@@ -0,0 +1,6 @@
|
||||
<svg width="54" height="30" viewBox="0 0 54 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 30H0V0H24V6H6V24H18V18H12V12H24V30Z" fill="#211E1E"/>
|
||||
<path d="M12 18H18V24H6V12H12V18Z" fill="#CFCECD"/>
|
||||
<path d="M48 12V24H36V12H48Z" fill="#CFCECD"/>
|
||||
<path d="M54 30H30V0H54V30ZM36 24H48V6H36V24Z" fill="#211E1E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 333 B |
BIN
qimingcode/packages/console/app/src/asset/lander/avatar-adam.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
BIN
qimingcode/packages/console/app/src/asset/lander/avatar-dax.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
BIN
qimingcode/packages/console/app/src/asset/lander/avatar-jay.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
@@ -0,0 +1,10 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15 7H7V19H15V7ZM19 23H3V3H19V23Z" fill="url(#paint0_linear_1311_94922)" stroke="#F1ECEC"/>
|
||||
<path d="M3 0V26M19 0V26M15 0V26M7 0V26M0 3H22M0 7H22M0 19H22M0 23H22" stroke="#4B4646" stroke-opacity="0.4"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1311_94922" x1="11" y1="3" x2="11" y2="23" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1B1818"/>
|
||||
<stop offset="1" stop-color="#2D2828"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 526 B |
@@ -0,0 +1,10 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15 7H7V19H15V7ZM19 23H3V3H19V23Z" fill="url(#paint0_linear_1311_94913)" stroke="#8E8B8B"/>
|
||||
<path d="M3 0V26M19 0V26M15 0V26M7 0V26M0 3H22M0 7H22M0 19H22M0 23H22" stroke="#110000" stroke-opacity="0.121569"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1311_94913" x1="11" y1="3" x2="11" y2="23" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F9F8F8"/>
|
||||
<stop offset="1" stop-color="#E9E8E8"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 531 B |
BIN
qimingcode/packages/console/app/src/asset/lander/brand.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6 14.3581L10.0541 17.7027L18 7" stroke="#8E8B8B" stroke-width="1.5" stroke-linecap="square"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 207 B |
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.75 8.75V2.75H21.25V15.25H15.25M15.25 8.75H2.75V21.25H15.25V8.75Z" stroke="#8E8B8B" stroke-width="1.5" stroke-linecap="square"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 243 B |
|
After Width: | Height: | Size: 6.0 KiB |
BIN
qimingcode/packages/console/app/src/asset/lander/dock.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_94916)">
|
||||
<path d="M15 19H7V11H15V19Z" fill="#4B4646"/>
|
||||
<path d="M15 7H7V19H15V7ZM19 23H3V3H19V23Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_94916">
|
||||
<rect width="16" height="20" fill="white" transform="translate(3 3)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 385 B |
@@ -0,0 +1,11 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_94907)">
|
||||
<path d="M15 19H7V11H15V19Z" fill="#BCBBBB"/>
|
||||
<path d="M15 7H7V19H15V7ZM19 23H3V3H19V23Z" fill="#211E1E"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_94907">
|
||||
<rect width="16" height="20" fill="white" transform="translate(3 3)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 385 B |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg width="32" height="40" viewBox="0 0 32 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_94973)">
|
||||
<path d="M24 32H8V16H24V32Z" fill="#4B4646"/>
|
||||
<path d="M24 8H8V32H24V8ZM32 40H0V0H32V40Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_94973">
|
||||
<rect width="32" height="40" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 358 B |
@@ -0,0 +1,11 @@
|
||||
<svg width="32" height="40" viewBox="0 0 32 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_94969)">
|
||||
<path d="M24 32H8V16H24V32Z" fill="#BCBBBB"/>
|
||||
<path d="M24 8H8V32H24V8ZM32 40H0V0H32V40Z" fill="#211E1E"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_94969">
|
||||
<rect width="32" height="40" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 358 B |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_95032)">
|
||||
<path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
|
||||
<path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
|
||||
<path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
|
||||
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
|
||||
<path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
|
||||
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
|
||||
<path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
|
||||
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
|
||||
<path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
|
||||
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
|
||||
<path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
|
||||
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
|
||||
<path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
|
||||
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_95032">
|
||||
<rect width="234" height="42" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1311_95049)">
|
||||
<path d="M18 30H6V18H18V30Z" fill="#CFCECD"/>
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#656363"/>
|
||||
<path d="M48 30H36V18H48V30Z" fill="#CFCECD"/>
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#656363"/>
|
||||
<path d="M84 24V30H66V24H84Z" fill="#CFCECD"/>
|
||||
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#656363"/>
|
||||
<path d="M108 36H96V18H108V36Z" fill="#CFCECD"/>
|
||||
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#656363"/>
|
||||
<path d="M144 30H126V18H144V30Z" fill="#CFCECD"/>
|
||||
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#211E1E"/>
|
||||
<path d="M168 30H156V18H168V30Z" fill="#CFCECD"/>
|
||||
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#211E1E"/>
|
||||
<path d="M198 30H186V18H198V30Z" fill="#CFCECD"/>
|
||||
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#211E1E"/>
|
||||
<path d="M234 24V30H216V24H234Z" fill="#CFCECD"/>
|
||||
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#211E1E"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1311_95049">
|
||||
<rect width="234" height="42" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 495 KiB |
BIN
qimingcode/packages/console/app/src/asset/lander/screenshot.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.33203 7.99967V6.33301H10.9987M17.6654 7.99967V6.33301H10.9987M10.9987 6.33301V19.6663M10.9987 19.6663H9.33203M10.9987 19.6663H12.6654" stroke="#F1ECEC" stroke-width="2" stroke-linecap="square"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 310 B |
@@ -0,0 +1,3 @@
|
||||
<svg width="22" height="26" viewBox="0 0 22 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.33203 7.99967V6.33301H10.9987M17.6654 7.99967V6.33301H10.9987M10.9987 6.33301V19.6663M10.9987 19.6663H9.33203M10.9987 19.6663H12.6654" stroke="black" stroke-width="2" stroke-linecap="square"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 308 B |
@@ -0,0 +1,18 @@
|
||||
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
|
||||
<path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
|
||||
<path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
|
||||
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
|
||||
<path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
|
||||
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
|
||||
<path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
|
||||
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
|
||||
<path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
|
||||
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
|
||||
<path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
|
||||
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
|
||||
<path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
|
||||
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,18 @@
|
||||
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18 30H6V18H18V30Z" fill="#CFCECD"/>
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#656363"/>
|
||||
<path d="M48 30H36V18H48V30Z" fill="#CFCECD"/>
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#656363"/>
|
||||
<path d="M84 24V30H66V24H84Z" fill="#CFCECD"/>
|
||||
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#656363"/>
|
||||
<path d="M108 36H96V18H108V36Z" fill="#CFCECD"/>
|
||||
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#656363"/>
|
||||
<path d="M144 30H126V18H144V30Z" fill="#CFCECD"/>
|
||||
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#211E1E"/>
|
||||
<path d="M168 30H156V18H168V30Z" fill="#CFCECD"/>
|
||||
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#211E1E"/>
|
||||
<path d="M198 30H186V18H198V30Z" fill="#CFCECD"/>
|
||||
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#211E1E"/>
|
||||
<path d="M234 24V30H216V24H234Z" fill="#CFCECD"/>
|
||||
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#211E1E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
18
qimingcode/packages/console/app/src/asset/logo.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18 30H6V18H18V30Z" fill="#CFCECD"/>
|
||||
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#656363"/>
|
||||
<path d="M48 30H36V18H48V30Z" fill="#CFCECD"/>
|
||||
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#656363"/>
|
||||
<path d="M84 24V30H66V24H84Z" fill="#CFCECD"/>
|
||||
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#656363"/>
|
||||
<path d="M108 36H96V18H108V36Z" fill="#CFCECD"/>
|
||||
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#656363"/>
|
||||
<path d="M144 30H126V18H144V30Z" fill="#CFCECD"/>
|
||||
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#211E1E"/>
|
||||
<path d="M168 30H156V18H168V30Z" fill="#CFCECD"/>
|
||||
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#211E1E"/>
|
||||
<path d="M198 30H186V18H198V30Z" fill="#CFCECD"/>
|
||||
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#211E1E"/>
|
||||
<path d="M234 24V30H216V24H234Z" fill="#CFCECD"/>
|
||||
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#211E1E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,8 @@
|
||||
<svg width="84" height="30" viewBox="0 0 84 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 24H6V18H18V12H24V24ZM6 18H0V12H6V18Z" fill="#4B4646"/>
|
||||
<path d="M6 24H24V30H0V18H6V24ZM18 18H6V12H18V18ZM24 12H18V6H0V0H24V12Z" fill="#F1ECEC"/>
|
||||
<path d="M54 18V24H36V18H54Z" fill="#4B4646"/>
|
||||
<path d="M54 18H36V24H54V30H30V0H54V18ZM36 12H48V6H36V12Z" fill="#F1ECEC"/>
|
||||
<path d="M78 30H66V12H78V30Z" fill="#4B4646"/>
|
||||
<path d="M78 6H66V30H60V0H78V6ZM84 30H78V6H84V30Z" fill="#F1ECEC"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 499 B |
@@ -0,0 +1,8 @@
|
||||
<svg width="84" height="30" viewBox="0 0 84 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 24H6V18H18V12H24V24ZM6 18H0V12H6V18Z" fill="#CFCECD"/>
|
||||
<path d="M6 24H24V30H0V18H6V24ZM18 18H6V12H18V18ZM24 12H18V6H0V0H24V12Z" fill="#211E1E"/>
|
||||
<path d="M54 18V24H36V18H54Z" fill="#CFCECD"/>
|
||||
<path d="M54 18H36V24H54V30H30V0H54V18ZM36 12H48V6H36V12Z" fill="#211E1E"/>
|
||||
<path d="M78 30H66V12H78V30Z" fill="#CFCECD"/>
|
||||
<path d="M78 6H66V30H60V0H78V6ZM84 30H78V6H84V30Z" fill="#211E1E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 499 B |
80
qimingcode/packages/console/app/src/component/dropdown.css
Normal file
@@ -0,0 +1,80 @@
|
||||
[data-component="dropdown"] {
|
||||
position: relative;
|
||||
|
||||
[data-slot="trigger"] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: var(--space-2);
|
||||
padding: var(--space-2) var(--space-3);
|
||||
border: none;
|
||||
border-radius: var(--border-radius-sm);
|
||||
background-color: transparent;
|
||||
color: var(--color-text);
|
||||
font-size: var(--font-size-sm);
|
||||
font-family: var(--font-sans);
|
||||
cursor: pointer;
|
||||
transition: all 0.15s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: var(--color-surface-hover);
|
||||
}
|
||||
|
||||
span {
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
[data-slot="chevron"] {
|
||||
flex-shrink: 0;
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
[data-slot="dropdown"] {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
z-index: 1000;
|
||||
margin-top: var(--space-1);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--border-radius-sm);
|
||||
background-color: var(--color-bg);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||
min-width: 160px;
|
||||
|
||||
&[data-align="left"] {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
&[data-align="right"] {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
[data-slot="item"] {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: var(--space-2-5) var(--space-3);
|
||||
border: none;
|
||||
background: none;
|
||||
color: var(--color-text);
|
||||
font-size: var(--font-size-sm);
|
||||
font-family: var(--font-sans);
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.15s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: var(--color-bg-surface);
|
||||
}
|
||||
|
||||
&[data-selected="true"] {
|
||||
background-color: var(--color-accent-alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
79
qimingcode/packages/console/app/src/component/dropdown.tsx
Normal file
@@ -0,0 +1,79 @@
|
||||
import { JSX, Show, createEffect, onCleanup } from "solid-js"
|
||||
import { createStore } from "solid-js/store"
|
||||
import { IconChevron } from "./icon"
|
||||
import "./dropdown.css"
|
||||
|
||||
interface DropdownProps {
|
||||
trigger: JSX.Element | string
|
||||
children: JSX.Element
|
||||
open?: boolean
|
||||
onOpenChange?: (open: boolean) => void
|
||||
align?: "left" | "right"
|
||||
class?: string
|
||||
}
|
||||
|
||||
export function Dropdown(props: DropdownProps) {
|
||||
const [store, setStore] = createStore({
|
||||
isOpen: props.open ?? false,
|
||||
})
|
||||
let dropdownRef: HTMLDivElement | undefined
|
||||
|
||||
createEffect(() => {
|
||||
if (props.open !== undefined) {
|
||||
setStore("isOpen", props.open)
|
||||
}
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
const handleClickOutside = (event: MouseEvent) => {
|
||||
if (dropdownRef && !dropdownRef.contains(event.target as Node)) {
|
||||
setStore("isOpen", false)
|
||||
props.onOpenChange?.(false)
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("click", handleClickOutside)
|
||||
onCleanup(() => document.removeEventListener("click", handleClickOutside))
|
||||
})
|
||||
|
||||
const toggle = () => {
|
||||
const newValue = !store.isOpen
|
||||
setStore("isOpen", newValue)
|
||||
props.onOpenChange?.(newValue)
|
||||
}
|
||||
|
||||
return (
|
||||
<div data-component="dropdown" class={props.class} ref={dropdownRef}>
|
||||
<button data-slot="trigger" type="button" onClick={toggle}>
|
||||
{typeof props.trigger === "string" ? <span>{props.trigger}</span> : props.trigger}
|
||||
<IconChevron data-slot="chevron" />
|
||||
</button>
|
||||
|
||||
<Show when={store.isOpen}>
|
||||
<div data-slot="dropdown" data-align={props.align ?? "left"}>
|
||||
{props.children}
|
||||
</div>
|
||||
</Show>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
interface DropdownItemProps {
|
||||
children: JSX.Element
|
||||
selected?: boolean
|
||||
onClick?: () => void
|
||||
type?: "button" | "submit" | "reset"
|
||||
}
|
||||
|
||||
export function DropdownItem(props: DropdownItemProps) {
|
||||
return (
|
||||
<button
|
||||
data-slot="item"
|
||||
data-selected={props.selected ?? false}
|
||||
type={props.type ?? "button"}
|
||||
onClick={props.onClick}
|
||||
>
|
||||
{props.children}
|
||||
</button>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
import { action, useSubmission } from "@solidjs/router"
|
||||
import { Resource } from "@opencode-ai/console-resource"
|
||||
import { Show } from "solid-js"
|
||||
import { useI18n } from "~/context/i18n"
|
||||
|
||||
const emailSignup = action(async (formData: FormData) => {
|
||||
"use server"
|
||||
const emailAddress = formData.get("email")!
|
||||
const listId = "8b9bb82c-9d5f-11f0-975f-0df6fd1e4945"
|
||||
const response = await fetch(`https://api.emailoctopus.com/lists/${listId}/contacts`, {
|
||||
method: "PUT",
|
||||
headers: {
|
||||
Authorization: `Bearer ${Resource.EMAILOCTOPUS_API_KEY.value}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
email_address: emailAddress,
|
||||
}),
|
||||
})
|
||||
console.log(response)
|
||||
return true
|
||||
})
|
||||
|
||||
export function EmailSignup() {
|
||||
const submission = useSubmission(emailSignup)
|
||||
const i18n = useI18n()
|
||||
return (
|
||||
<section data-component="email">
|
||||
<div data-slot="section-title">
|
||||
<h3>{i18n.t("email.title")}</h3>
|
||||
<p>{i18n.t("email.subtitle")}</p>
|
||||
</div>
|
||||
<form data-slot="form" action={emailSignup} method="post">
|
||||
<input type="email" name="email" placeholder={i18n.t("email.placeholder")} required />
|
||||
<button type="submit" disabled={submission.pending}>
|
||||
{i18n.t("email.subscribe")}
|
||||
</button>
|
||||
</form>
|
||||
<Show when={submission.result}>
|
||||
<div style="color: #03B000; margin-top: 24px;">{i18n.t("email.success")}</div>
|
||||
</Show>
|
||||
<Show when={submission.error}>
|
||||
<div style="color: #FF408F; margin-top: 24px;">{submission.error}</div>
|
||||
</Show>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
33
qimingcode/packages/console/app/src/component/faq.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
import { Collapsible } from "@kobalte/core/collapsible"
|
||||
import { ParentProps } from "solid-js"
|
||||
|
||||
export function Faq(props: ParentProps & { question: string }) {
|
||||
return (
|
||||
<Collapsible data-slot="faq-item">
|
||||
<Collapsible.Trigger data-slot="faq-question">
|
||||
<svg
|
||||
data-slot="faq-icon-plus"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M12.5 11.5H19V12.5H12.5V19H11.5V12.5H5V11.5H11.5V5H12.5V11.5Z" fill="currentColor" />
|
||||
</svg>
|
||||
<svg
|
||||
data-slot="faq-icon-minus"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M5 11.5H19V12.5H5Z" fill="currentColor" />
|
||||
</svg>
|
||||
<div data-slot="faq-question-text">{props.question}</div>
|
||||
</Collapsible.Trigger>
|
||||
<Collapsible.Content data-slot="faq-answer">{props.children}</Collapsible.Content>
|
||||
</Collapsible>
|
||||
)
|
||||
}
|
||||
48
qimingcode/packages/console/app/src/component/footer.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
import { createAsync } from "@solidjs/router"
|
||||
import { createMemo } from "solid-js"
|
||||
import { github } from "~/lib/github"
|
||||
import { config } from "~/config"
|
||||
import { useLanguage } from "~/context/language"
|
||||
import { useI18n } from "~/context/i18n"
|
||||
|
||||
export function Footer() {
|
||||
const language = useLanguage()
|
||||
const i18n = useI18n()
|
||||
const community = createMemo(() => {
|
||||
const locale = language.locale()
|
||||
return locale === "zh" || locale === "zht"
|
||||
? ({ key: "footer.feishu", link: language.route("/feishu") } as const)
|
||||
: ({ key: "footer.discord", link: language.route("/discord") } as const)
|
||||
})
|
||||
const githubData = createAsync(() => github())
|
||||
const starCount = createMemo(() =>
|
||||
githubData()?.stars
|
||||
? new Intl.NumberFormat(language.tag(language.locale()), {
|
||||
notation: "compact",
|
||||
compactDisplay: "short",
|
||||
}).format(githubData()!.stars!)
|
||||
: config.github.starsFormatted.compact,
|
||||
)
|
||||
|
||||
return (
|
||||
<footer data-component="footer">
|
||||
<div data-slot="cell">
|
||||
<a href={config.github.repoUrl} target="_blank">
|
||||
{i18n.t("footer.github")} <span>[{starCount()}]</span>
|
||||
</a>
|
||||
</div>
|
||||
<div data-slot="cell">
|
||||
<a href={language.route("/docs")}>{i18n.t("footer.docs")}</a>
|
||||
</div>
|
||||
<div data-slot="cell">
|
||||
<a href={language.route("/changelog")}>{i18n.t("footer.changelog")}</a>
|
||||
</div>
|
||||
<div data-slot="cell">
|
||||
<a href={community().link}>{i18n.t(community().key)}</a>
|
||||
</div>
|
||||
<div data-slot="cell">
|
||||
<a href={config.social.twitter}>{i18n.t("footer.x")}</a>
|
||||
</div>
|
||||
</footer>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
.context-menu {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
min-width: 160px;
|
||||
border-radius: 8px;
|
||||
background-color: var(--color-background);
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(19, 16, 16, 0.08),
|
||||
0 6px 8px -4px rgba(19, 16, 16, 0.12),
|
||||
0 4px 3px -2px rgba(19, 16, 16, 0.12),
|
||||
0 1px 2px -1px rgba(19, 16, 16, 0.12);
|
||||
padding: 6px;
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
box-shadow: 0 0 0 1px rgba(247, 237, 237, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.context-menu-item {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
width: 100%;
|
||||
padding: 8px 16px 8px 8px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
background: none;
|
||||
border: none;
|
||||
align-items: center;
|
||||
color: var(--color-text);
|
||||
font-size: var(--font-size-sm);
|
||||
text-align: left;
|
||||
border-radius: 2px;
|
||||
transition: background-color 0.2s ease;
|
||||
|
||||
[data-slot="copy dark"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
[data-slot="copy light"] {
|
||||
display: none;
|
||||
}
|
||||
[data-slot="copy dark"] {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: var(--color-background-weak-hover);
|
||||
color: var(--color-text-strong);
|
||||
}
|
||||
|
||||
img {
|
||||
width: 22px;
|
||||
height: 26px;
|
||||
}
|
||||
}
|
||||
|
||||
.context-menu-divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-border);
|
||||
margin: var(--space-1) 0;
|
||||
}
|
||||
293
qimingcode/packages/console/app/src/component/header.tsx
Normal file
@@ -0,0 +1,293 @@
|
||||
import logoLight from "../asset/logo-ornate-light.svg"
|
||||
import logoDark from "../asset/logo-ornate-dark.svg"
|
||||
import copyLogoLight from "../asset/lander/logo-light.svg"
|
||||
import copyLogoDark from "../asset/lander/logo-dark.svg"
|
||||
import copyWordmarkLight from "../asset/lander/wordmark-light.svg"
|
||||
import copyWordmarkDark from "../asset/lander/wordmark-dark.svg"
|
||||
import copyBrandAssetsLight from "../asset/lander/brand-assets-light.svg"
|
||||
import copyBrandAssetsDark from "../asset/lander/brand-assets-dark.svg"
|
||||
|
||||
// SVG files for copying (separate from button icons)
|
||||
// Replace these with your actual SVG files for copying
|
||||
import copyLogoSvgLight from "../asset/lander/opencode-logo-light.svg"
|
||||
import copyLogoSvgDark from "../asset/lander/opencode-logo-dark.svg"
|
||||
import copyWordmarkSvgLight from "../asset/lander/opencode-wordmark-light.svg"
|
||||
import copyWordmarkSvgDark from "../asset/lander/opencode-wordmark-dark.svg"
|
||||
import { A, createAsync, useNavigate } from "@solidjs/router"
|
||||
import { createMemo, Match, Show, Switch } from "solid-js"
|
||||
import { createStore } from "solid-js/store"
|
||||
import { github } from "~/lib/github"
|
||||
import { createEffect, onCleanup } from "solid-js"
|
||||
import { config } from "~/config"
|
||||
import { useI18n } from "~/context/i18n"
|
||||
import { useLanguage } from "~/context/language"
|
||||
import "./header-context-menu.css"
|
||||
|
||||
const isDarkMode = () => window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
|
||||
const fetchSvgContent = async (svgPath: string): Promise<string> => {
|
||||
try {
|
||||
const response = await fetch(svgPath)
|
||||
const svgText = await response.text()
|
||||
return svgText
|
||||
} catch (err) {
|
||||
console.error("Failed to fetch SVG content:", err)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
export function Header(props: { zen?: boolean; go?: boolean; hideGetStarted?: boolean }) {
|
||||
const navigate = useNavigate()
|
||||
const i18n = useI18n()
|
||||
const language = useLanguage()
|
||||
const githubData = createAsync(() => github())
|
||||
const starCount = createMemo(() =>
|
||||
githubData()?.stars
|
||||
? new Intl.NumberFormat("en-US", {
|
||||
notation: "compact",
|
||||
compactDisplay: "short",
|
||||
maximumFractionDigits: 0,
|
||||
}).format(githubData()?.stars)
|
||||
: config.github.starsFormatted.compact,
|
||||
)
|
||||
|
||||
const [store, setStore] = createStore({
|
||||
mobileMenuOpen: false,
|
||||
contextMenuOpen: false,
|
||||
contextMenuPosition: { x: 0, y: 0 },
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
const handleClickOutside = () => {
|
||||
setStore("contextMenuOpen", false)
|
||||
}
|
||||
|
||||
const handleContextMenu = (event: MouseEvent) => {
|
||||
event.preventDefault()
|
||||
setStore("contextMenuOpen", false)
|
||||
}
|
||||
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.key === "Escape") {
|
||||
setStore("contextMenuOpen", false)
|
||||
}
|
||||
}
|
||||
|
||||
if (store.contextMenuOpen) {
|
||||
document.addEventListener("click", handleClickOutside)
|
||||
document.addEventListener("contextmenu", handleContextMenu)
|
||||
document.addEventListener("keydown", handleKeyDown)
|
||||
onCleanup(() => {
|
||||
document.removeEventListener("click", handleClickOutside)
|
||||
document.removeEventListener("contextmenu", handleContextMenu)
|
||||
document.removeEventListener("keydown", handleKeyDown)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const handleLogoContextMenu = (event: MouseEvent) => {
|
||||
event.preventDefault()
|
||||
const logoElement = (event.currentTarget as HTMLElement).querySelector("a")
|
||||
if (logoElement) {
|
||||
const rect = logoElement.getBoundingClientRect()
|
||||
setStore("contextMenuPosition", {
|
||||
x: rect.left - 16,
|
||||
y: rect.bottom + 8,
|
||||
})
|
||||
}
|
||||
setStore("contextMenuOpen", true)
|
||||
}
|
||||
|
||||
const copyWordmarkToClipboard = async () => {
|
||||
try {
|
||||
const isDark = isDarkMode()
|
||||
const wordmarkSvgPath = isDark ? copyWordmarkSvgDark : copyWordmarkSvgLight
|
||||
const wordmarkSvg = await fetchSvgContent(wordmarkSvgPath)
|
||||
await navigator.clipboard.writeText(wordmarkSvg)
|
||||
} catch (err) {
|
||||
console.error("Failed to copy wordmark to clipboard:", err)
|
||||
}
|
||||
}
|
||||
|
||||
const copyLogoToClipboard = async () => {
|
||||
try {
|
||||
const isDark = isDarkMode()
|
||||
const logoSvgPath = isDark ? copyLogoSvgDark : copyLogoSvgLight
|
||||
const logoSvg = await fetchSvgContent(logoSvgPath)
|
||||
await navigator.clipboard.writeText(logoSvg)
|
||||
} catch (err) {
|
||||
console.error("Failed to copy logo to clipboard:", err)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<section data-component="top">
|
||||
<div onContextMenu={handleLogoContextMenu}>
|
||||
<A href={language.route("/")}>
|
||||
<img data-slot="logo light" src={logoLight} alt={i18n.t("nav.logoAlt")} width="189" height="34" />
|
||||
<img data-slot="logo dark" src={logoDark} alt={i18n.t("nav.logoAlt")} width="189" height="34" />
|
||||
</A>
|
||||
</div>
|
||||
|
||||
<Show when={store.contextMenuOpen}>
|
||||
<div
|
||||
class="context-menu"
|
||||
style={`left: ${store.contextMenuPosition.x}px; top: ${store.contextMenuPosition.y}px;`}
|
||||
>
|
||||
<button class="context-menu-item" onClick={copyLogoToClipboard}>
|
||||
<img data-slot="copy light" src={copyLogoLight} alt="" />
|
||||
<img data-slot="copy dark" src={copyLogoDark} alt="" />
|
||||
{i18n.t("nav.context.copyLogo")}
|
||||
</button>
|
||||
<button class="context-menu-item" onClick={copyWordmarkToClipboard}>
|
||||
<img data-slot="copy light" src={copyWordmarkLight} alt="" />
|
||||
<img data-slot="copy dark" src={copyWordmarkDark} alt="" />
|
||||
{i18n.t("nav.context.copyWordmark")}
|
||||
</button>
|
||||
<button class="context-menu-item" onClick={() => navigate(language.route("/brand"))}>
|
||||
<img data-slot="copy light" src={copyBrandAssetsLight} alt="" />
|
||||
<img data-slot="copy dark" src={copyBrandAssetsDark} alt="" />
|
||||
{i18n.t("nav.context.brandAssets")}
|
||||
</button>
|
||||
</div>
|
||||
</Show>
|
||||
<nav data-component="nav-desktop">
|
||||
<ul>
|
||||
<li>
|
||||
<a href={config.github.repoUrl} target="_blank" style="white-space: nowrap;">
|
||||
{i18n.t("nav.github")} <span>[{starCount()}]</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href={language.route("/docs")}>{i18n.t("nav.docs")}</a>
|
||||
</li>
|
||||
<li>
|
||||
<A href={language.route("/zen")}>{i18n.t("nav.zen")}</A>
|
||||
</li>
|
||||
<li>
|
||||
<A href={language.route("/go")}>{i18n.t("nav.go")}</A>
|
||||
</li>
|
||||
<li>
|
||||
<A href={language.route("/enterprise")}>{i18n.t("nav.enterprise")}</A>
|
||||
</li>
|
||||
<Show when={props.zen || props.go}>
|
||||
<li>
|
||||
<a href="/auth">{i18n.t("nav.login")}</a>
|
||||
</li>
|
||||
</Show>
|
||||
<Show when={!props.hideGetStarted}>
|
||||
<li>
|
||||
<A href={language.route("/download")} data-slot="cta-button">
|
||||
<svg
|
||||
width="18"
|
||||
height="18"
|
||||
viewBox="0 0 18 18"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
style="flex-shrink: 0;"
|
||||
>
|
||||
<path
|
||||
d="M12.1875 9.75L9.00001 12.9375L5.8125 9.75M9.00001 2.0625L9 12.375M14.4375 15.9375H3.5625"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="square"
|
||||
/>
|
||||
</svg>
|
||||
{i18n.t("nav.free")}
|
||||
</A>
|
||||
</li>
|
||||
</Show>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav data-component="nav-mobile">
|
||||
<button
|
||||
type="button"
|
||||
data-component="nav-mobile-toggle"
|
||||
aria-expanded="false"
|
||||
aria-controls="nav-mobile-menu"
|
||||
class="nav-toggle"
|
||||
onClick={() => setStore("mobileMenuOpen", !store.mobileMenuOpen)}
|
||||
>
|
||||
<span class="sr-only">{i18n.t("nav.openMenu")}</span>
|
||||
<Switch>
|
||||
<Match when={store.mobileMenuOpen}>
|
||||
<svg
|
||||
class="icon icon-close"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M12.7071 11.9993L18.0104 17.3026L17.3033 18.0097L12 12.7064L6.6967 18.0097L5.98959 17.3026L11.2929 11.9993L5.98959 6.69595L6.6967 5.98885L12 11.2921L17.3033 5.98885L18.0104 6.69595L12.7071 11.9993Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</Match>
|
||||
<Match when={!store.mobileMenuOpen}>
|
||||
<svg
|
||||
class="icon icon-hamburger"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M19 17H5V16H19V17Z" fill="currentColor" />
|
||||
<path d="M19 8H5V7H19V8Z" fill="currentColor" />
|
||||
</svg>
|
||||
</Match>
|
||||
</Switch>
|
||||
</button>
|
||||
|
||||
<Show when={store.mobileMenuOpen}>
|
||||
<div id="nav-mobile-menu" data-component="nav-mobile">
|
||||
<nav data-component="nav-mobile-menu-list">
|
||||
<ul>
|
||||
<li>
|
||||
<A href={language.route("/")}>{i18n.t("nav.home")}</A>
|
||||
</li>
|
||||
<li>
|
||||
<a href={config.github.repoUrl} target="_blank" style="white-space: nowrap;">
|
||||
{i18n.t("nav.github")} <span>[{starCount()}]</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href={language.route("/docs")}>{i18n.t("nav.docs")}</a>
|
||||
</li>
|
||||
<Show when={!props.zen}>
|
||||
<li>
|
||||
<A href={language.route("/zen")}>{i18n.t("nav.zen")}</A>
|
||||
</li>
|
||||
</Show>
|
||||
<Show when={!props.go}>
|
||||
<li>
|
||||
<A href={language.route("/go")}>{i18n.t("nav.go")}</A>
|
||||
</li>
|
||||
</Show>
|
||||
<li>
|
||||
<A href={language.route("/enterprise")}>{i18n.t("nav.enterprise")}</A>
|
||||
</li>
|
||||
<Show when={props.zen || props.go}>
|
||||
<li>
|
||||
<a href="/auth">{i18n.t("nav.login")}</a>
|
||||
</li>
|
||||
</Show>
|
||||
<Show when={!props.hideGetStarted}>
|
||||
<li>
|
||||
<A href={language.route("/download")} data-slot="cta-button">
|
||||
{i18n.t("nav.getStartedFree")}
|
||||
</A>
|
||||
</li>
|
||||
</Show>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</Show>
|
||||
</nav>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
286
qimingcode/packages/console/app/src/component/icon.tsx
Normal file
@@ -0,0 +1,286 @@
|
||||
import { JSX } from "solid-js"
|
||||
|
||||
export function IconZen(_props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg width="84" height="30" viewBox="0 0 84 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 24H6V18H18V12H24V24ZM6 18H0V12H6V18Z" fill="currentColor" fill-opacity="0.2" />
|
||||
<path d="M6 24H24V30H0V18H6V24ZM18 18H6V12H18V18ZM24 12H18V6H0V0H24V12Z" fill="currentColor" />
|
||||
<path d="M54 18V24H36V18H54Z" fill="currentColor" fill-opacity="0.2" />
|
||||
<path d="M54 18H36V24H54V30H30V0H54V18ZM36 12H48V6H36V12Z" fill="currentColor" />
|
||||
<path d="M78 30H66V12H78V30Z" fill="currentColor" fill-opacity="0.2" />
|
||||
<path d="M78 6H66V30H60V0H78V6ZM84 30H78V6H84V30Z" fill="currentColor" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconGo(_props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg width="54" height="30" viewBox="0 0 54 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24 30H0V0H24V6H6V24H18V18H12V12H24V30Z" fill="currentColor" />
|
||||
<path d="M12 18H18V24H6V12H12V18Z" fill="currentColor" fill-opacity="0.2" />
|
||||
<path d="M48 12V24H36V12H48Z" fill="currentColor" fill-opacity="0.2" />
|
||||
<path d="M54 30H30V0H54V30ZM36 24H48V6H36V24Z" fill="currentColor" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconCopy(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M8.75 8.75V2.75H21.25V15.25H15.25M15.25 8.75H2.75V21.25H15.25V8.75Z"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="square"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconCheck(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.75 15.0938L9 20.25L21.25 3.75" stroke="#03B000" stroke-width="2" stroke-linecap="square" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconCreditCard(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 24 24">
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8h16v10z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconStripe(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 24 24">
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M15.827 12.506c0 .672-.31 1.175-.771 1.175-.293 0-.468-.106-.589-.237l-.007-1.855c.13-.143.31-.247.596-.247.456-.001.771.51.771 1.164zm3.36-1.253c-.312 0-.659.236-.659.798h1.291c0-.562-.325-.798-.632-.798zm4.813-5.253v12c0 1.104-.896 2-2 2h-20c-1.104 0-2-.896-2-2v-12c0-1.104.896-2 2-2h20c1.104 0 2 .896 2 2zm-17.829 7.372c0-1.489-1.909-1.222-1.909-1.784 0-.195.162-.271.424-.271.38 0 .862.116 1.242.321v-1.176c-.414-.165-.827-.228-1.241-.228-1.012.001-1.687.53-1.687 1.414 0 1.382 1.898 1.158 1.898 1.754 0 .231-.201.305-.479.305-.414 0-.947-.171-1.366-.399v1.192c.464.2.935.283 1.365.283 1.038.001 1.753-.512 1.753-1.411zm2.422-3.054h-.949l-.001-1.084-1.219.259-.005 4.006c0 .739.556 1.285 1.297 1.285.408 0 .71-.074.876-.165v-1.016c-.16.064-.948.293-.948-.443v-1.776h.948v-1.066zm2.596 0c-.166-.06-.75-.169-1.042.369l-.078-.369h-1.079v4.377h1.248v-2.967c.295-.388.793-.313.952-.262v-1.148zm1.554 0h-1.253v4.377h1.253v-4.377zm0-1.664l-1.253.266v1.017l1.253-.266v-1.017zm4.314 3.824c0-1.454-.826-2.244-1.703-2.243-.489 0-.805.23-.978.392l-.065-.309h-1.099v5.828l1.249-.265.003-1.413c.179.131.446.316.883.316.893 0 1.71-.719 1.71-2.306zm3.943.045c0-1.279-.619-2.288-1.805-2.288-1.188 0-1.911 1.01-1.911 2.281 0 1.506.852 2.267 2.068 2.267.597 0 1.045-.136 1.384-.324v-1.006c-.34.172-.731.276-1.227.276-.487 0-.915-.172-.971-.758h2.444l.018-.448z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconAlipay(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.541 0H13.5a2.55 2.55 0 0 1 2.54 2.563v8.297c-.006 0-.531-.046-2.978-.813-.412-.14-.916-.327-1.479-.536q-.456-.17-.957-.353a13 13 0 0 0 1.325-3.373H8.822V4.649h3.831v-.634h-3.83V2.121H7.26c-.274 0-.274.273-.274.273v1.621H3.11v.634h3.875v1.136h-3.2v.634H9.99c-.227.789-.532 1.53-.894 2.202-2.013-.67-4.161-1.212-5.51-.878-.864.214-1.42.597-1.746.998-1.499 1.84-.424 4.633 2.741 4.633 1.872 0 3.675-1.053 5.072-2.787 2.08 1.008 6.37 2.738 6.387 2.745v.105A2.55 2.55 0 0 1 13.5 16H2.541A2.55 2.55 0 0 1 0 13.437V2.563A2.55 2.55 0 0 1 2.541 0" />
|
||||
<path d="M2.309 9.27c-1.22 1.073-.49 3.034 1.978 3.034 1.434 0 2.868-.925 3.994-2.406-1.602-.789-2.959-1.353-4.425-1.207-.397.04-1.14.217-1.547.58Z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconUpi(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="10 16 100 28" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M95.678 42.9 110 29.835l-6.784-13.516Z" />
|
||||
<path d="M90.854 42.9 105.176 29.835l-6.784-13.516Z" />
|
||||
<path
|
||||
d="M22.41 16.47 16.38 37.945l21.407.15 5.88-21.625h5.427l-7.05 25.14c-.27.96-1.298 1.74-2.295 1.74H12.31c-1.664 0-2.65-1.3-2.2-2.9l6.724-23.98Zm66.182-.15h5.427l-7.538 27.03h-5.58ZM49.698 27.582l27.136-.15 1.81-5.707H51.054l1.658-5.256 29.4-.27c1.83-.017 2.92 1.4 2.438 3.167L81.78 29.49c-.483 1.766-2.36 3.197-4.19 3.197H53.316L50.454 43.8h-5.28Z"
|
||||
fill-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconWechat(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.27099 14.6689C8.9532 14.8312 8.56403 14.7122 8.39132 14.4L8.3477 14.3054L6.53019 10.3069C6.52269 10.2588 6.52269 10.2097 6.53019 10.1615C6.53017 10.0735 6.56564 9.98916 6.62857 9.9276C6.6915 9.86603 6.7766 9.83243 6.86462 9.83438C6.93567 9.83269 7.00508 9.85582 7.06091 9.89981L9.24191 11.4265C9.40329 11.5346 9.59293 11.5928 9.78716 11.5937C9.90424 11.5945 10.0203 11.5723 10.1289 11.5283L20.176 7.02816C18.091 4.72544 15.1103 3.43931 12.0045 3.5022C6.4793 3.5022 2.00098 7.23172 2.00098 11.87C2.06681 14.4052 3.35646 16.7515 5.4615 18.1658C5.6878 18.3326 5.78402 18.6241 5.70141 18.8928L5.25067 20.594C5.22336 20.6714 5.20625 20.7521 5.19978 20.8339C5.19777 20.9232 5.23236 21.0094 5.29552 21.0726C5.35868 21.1358 5.44491 21.1703 5.5342 21.1684C5.60098 21.1645 5.66583 21.1445 5.72322 21.1102L7.90423 19.8452C8.06383 19.7467 8.2474 19.6939 8.43494 19.6925C8.53352 19.6923 8.63157 19.707 8.72574 19.7361C9.78781 20.0363 10.8863 20.188 11.99 20.1869C17.5152 20.1869 22.001 16.4574 22.001 11.8554C22.0108 10.4834 21.6301 9.13687 20.903 7.97326L9.35096 14.6253L9.27099 14.6689Z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconChevron(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width="8" height="6" viewBox="0 0 8 6" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M4.00024 5.04041L7.37401 1.66663L6.66691 0.959525L4.00024 3.62619L1.33357 0.959525L0.626465 1.66663L4.00024 5.04041Z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconWorkspaceLogo(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width="24" height="30" viewBox="0 0 24 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18 6H6V24H18V6ZM24 30H0V0H24V30Z" fill="currentColor" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconOpenAI(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" fill="none">
|
||||
<path
|
||||
d="M8.43799 8.06943V6.09387C8.43799 5.92749 8.50347 5.80267 8.65601 5.71959L12.8206 3.43211C13.3875 3.1202 14.0635 2.9747 14.7611 2.9747C17.3775 2.9747 19.0347 4.9087 19.0347 6.96734C19.0347 7.11288 19.0347 7.27926 19.0128 7.44564L14.6956 5.03335C14.434 4.88785 14.1723 4.88785 13.9107 5.03335L8.43799 8.06943ZM18.1624 15.7637V11.0431C18.1624 10.7519 18.0315 10.544 17.7699 10.3984L12.2972 7.36234L14.0851 6.3849C14.2377 6.30182 14.3686 6.30182 14.5212 6.3849L18.6858 8.67238C19.8851 9.3379 20.6917 10.7519 20.6917 12.1243C20.6917 13.7047 19.7106 15.1604 18.1624 15.7636V15.7637ZM7.15158 11.6047L5.36369 10.6066C5.21114 10.5235 5.14566 10.3986 5.14566 10.2323V5.65735C5.14566 3.43233 6.93355 1.7478 9.35381 1.7478C10.2697 1.7478 11.1199 2.039 11.8396 2.55886L7.54424 4.92959C7.28268 5.07508 7.15181 5.28303 7.15181 5.57427V11.6049L7.15158 11.6047ZM11 13.7258L8.43799 12.3533V9.44209L11 8.06965L13.5618 9.44209V12.3533L11 13.7258ZM12.6461 20.0476C11.7303 20.0476 10.8801 19.7564 10.1604 19.2366L14.4557 16.8658C14.7173 16.7203 14.8482 16.5124 14.8482 16.2211V10.1905L16.658 11.1886C16.8105 11.2717 16.876 11.3965 16.876 11.563V16.1379C16.876 18.3629 15.0662 20.0474 12.6461 20.0474V20.0476ZM7.47863 15.4103L3.314 13.1229C2.11471 12.4573 1.30808 11.0433 1.30808 9.67088C1.30808 8.06965 2.31106 6.6348 3.85903 6.03168V10.773C3.85903 11.0642 3.98995 11.2721 4.25151 11.4177L9.70253 14.4328L7.91464 15.4103C7.76209 15.4934 7.63117 15.4934 7.47863 15.4103ZM7.23892 18.8207C4.77508 18.8207 2.96533 17.0531 2.96533 14.8696C2.96533 14.7032 2.98719 14.5368 3.00886 14.3704L7.30418 16.7412C7.56574 16.8867 7.82752 16.8867 8.08909 16.7412L13.5618 13.726V15.7015C13.5618 15.8679 13.4964 15.9927 13.3438 16.0758L9.17918 18.3633C8.61225 18.6752 7.93631 18.8207 7.23869 18.8207H7.23892ZM12.6461 21.2952C15.2844 21.2952 17.4865 19.5069 17.9882 17.1362C20.4301 16.5331 22 14.3495 22 12.1245C22 10.6688 21.346 9.25482 20.1685 8.23581C20.2775 7.79908 20.343 7.36234 20.343 6.92582C20.343 3.95215 17.8137 1.72691 14.892 1.72691C14.3034 1.72691 13.7365 1.80999 13.1695 1.99726C12.1882 1.08223 10.8364 0.5 9.35381 0.5C6.71557 0.5 4.51352 2.28829 4.01185 4.65902C1.56987 5.26214 0 7.44564 0 9.67067C0 11.1264 0.654039 12.5404 1.83147 13.5594C1.72246 13.9961 1.65702 14.4328 1.65702 14.8694C1.65702 17.8431 4.1863 20.0683 7.108 20.0683C7.69661 20.0683 8.26354 19.9852 8.83046 19.7979C9.81155 20.713 11.1634 21.2952 12.6461 21.2952Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconAnthropic(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" d="M13.7891 3.93188L20.2223 20.068H23.7502L17.317 3.93188H13.7891Z" />
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M6.32538 13.6827L8.52662 8.01201L10.7279 13.6827H6.32538ZM6.68225 3.93188L0.25 20.068H3.84652L5.16202 16.6794H11.8914L13.2067 20.068H16.8033L10.371 3.93188H6.68225Z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconXai(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
|
||||
<path
|
||||
d="M9.16861 16.0529L17.2018 9.85156C17.5957 9.54755 18.1586 9.66612 18.3463 10.1384C19.3339 12.6288 18.8926 15.6217 16.9276 17.6766C14.9626 19.7314 12.2285 20.1821 9.72948 19.1557L6.9995 20.4775C10.9151 23.2763 15.6699 22.5841 18.6411 19.4749C20.9979 17.0103 21.7278 13.6508 21.0453 10.6214L21.0515 10.6278C20.0617 6.17736 21.2948 4.39847 23.8207 0.760904C23.8804 0.674655 23.9402 0.588405 24 0.5L20.6762 3.97585V3.96506L9.16658 16.0551"
|
||||
fill="currentColor"
|
||||
/>
|
||||
<path
|
||||
d="M7.37742 16.7017C4.67579 14.0395 5.14158 9.91963 7.44676 7.54383C9.15135 5.78544 11.9442 5.06779 14.3821 6.12281L17.0005 4.87559C16.5288 4.52392 15.9242 4.14566 15.2305 3.87986C12.0948 2.54882 8.34069 3.21127 5.79171 5.8386C3.33985 8.36779 2.56881 12.2567 3.89286 15.5751C4.88192 18.0552 3.26056 19.8094 1.62731 21.5801C1.04853 22.2078 0.467774 22.8355 0 23.5L7.3754 16.7037"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconAlibaba(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" fill="none">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
fill="currentColor"
|
||||
d="M11.6043 0.340162C11.9973 1.03016 12.3883 1.72215 12.7783 2.41514C12.7941 2.44286 12.8169 2.46589 12.8445 2.48187C12.8721 2.49786 12.9034 2.50624 12.9353 2.50614H18.4873C18.6612 2.50614 18.8092 2.61614 18.9332 2.83314L20.3872 5.40311C20.5772 5.74011 20.6272 5.88111 20.4112 6.24011C20.1512 6.6701 19.8982 7.1041 19.6512 7.54009L19.2842 8.19809C19.1782 8.39409 19.0612 8.47809 19.2442 8.71008L21.8962 13.347C22.0682 13.648 22.0072 13.841 21.8532 14.117C21.4162 14.902 20.9712 15.681 20.5182 16.457C20.3592 16.729 20.1662 16.832 19.8382 16.827C19.0612 16.811 18.2863 16.817 17.5113 16.843C17.4946 16.8439 17.4785 16.8489 17.4644 16.8576C17.4502 16.8664 17.4385 16.8785 17.4303 16.893C16.5361 18.4773 15.6344 20.0573 14.7253 21.633C14.5563 21.926 14.3453 21.996 14.0003 21.997C13.0033 22 11.9983 22.001 10.9833 21.999C10.8889 21.9987 10.7961 21.9735 10.7145 21.9259C10.6328 21.8783 10.5652 21.8101 10.5184 21.728L9.18337 19.405C9.1756 19.3898 9.16368 19.3771 9.14898 19.3684C9.13429 19.3598 9.11743 19.3554 9.10037 19.356H3.98244C3.69744 19.386 3.42944 19.355 3.17745 19.264L1.57447 16.494C1.52706 16.412 1.50193 16.319 1.50158 16.2243C1.50123 16.1296 1.52567 16.0364 1.57247 15.954L2.77945 13.834C2.79665 13.8041 2.80569 13.7701 2.80569 13.7355C2.80569 13.701 2.79665 13.667 2.77945 13.637C2.15073 12.5485 1.52573 11.4579 0.904476 10.3651L0.114486 8.97008C-0.0455115 8.66008 -0.0585113 8.47409 0.209485 8.00509C0.674479 7.1921 1.13647 6.38011 1.59647 5.56911C1.72847 5.33512 1.90046 5.23512 2.18046 5.23412C3.04344 5.23048 3.90644 5.23015 4.76943 5.23312C4.79123 5.23295 4.81259 5.22704 4.83138 5.21597C4.85016 5.20491 4.8657 5.1891 4.87643 5.17012L7.68239 0.275163C7.72491 0.200697 7.78631 0.138751 7.86039 0.0955646C7.93448 0.0523783 8.01863 0.0294762 8.10439 0.0291651C8.62838 0.0281651 9.15737 0.029165 9.68736 0.0231651L10.7044 0.000165317C11.0453 -0.00283466 11.4283 0.032165 11.6043 0.340162ZM8.17238 0.743158C8.16185 0.743152 8.15149 0.745921 8.14236 0.751187C8.13323 0.756454 8.12565 0.764031 8.12038 0.773158L5.25442 5.78811C5.24066 5.81174 5.22097 5.83137 5.19729 5.84505C5.17361 5.85873 5.14677 5.86599 5.11942 5.86611H2.25346C2.19746 5.86611 2.18346 5.89111 2.21246 5.94011L8.02239 16.096C8.04739 16.138 8.03539 16.158 7.98839 16.159L5.19342 16.174C5.15256 16.1727 5.11214 16.1828 5.07678 16.2033C5.04141 16.2238 5.01253 16.2539 4.99342 16.29L3.67344 18.6C3.62944 18.678 3.65244 18.718 3.74144 18.718L9.45737 18.726C9.50337 18.726 9.53737 18.746 9.56137 18.787L10.9643 21.241C11.0103 21.322 11.0563 21.323 11.1033 21.241L16.1093 12.481L16.8923 11.0991C16.897 11.0905 16.904 11.0834 16.9125 11.0785C16.9209 11.0735 16.9305 11.0709 16.9403 11.0709C16.9501 11.0709 16.9597 11.0735 16.9681 11.0785C16.9765 11.0834 16.9835 11.0905 16.9883 11.0991L18.4123 13.629C18.4229 13.648 18.4385 13.6637 18.4573 13.6746C18.4761 13.6855 18.4975 13.6912 18.5193 13.691L21.2822 13.671C21.2893 13.6711 21.2963 13.6693 21.3024 13.6658C21.3086 13.6623 21.3137 13.6572 21.3172 13.651C21.3206 13.6449 21.3224 13.638 21.3224 13.631C21.3224 13.624 21.3206 13.6172 21.3172 13.611L18.4173 8.52508C18.4068 8.50809 18.4013 8.48853 18.4013 8.46859C18.4013 8.44864 18.4068 8.42908 18.4173 8.41209L18.7102 7.90509L19.8302 5.92811C19.8542 5.88711 19.8422 5.86611 19.7952 5.86611H8.20038C8.14138 5.86611 8.12738 5.84011 8.15738 5.78911L9.59137 3.28413C9.60211 3.26706 9.60781 3.24731 9.60781 3.22714C9.60781 3.20697 9.60211 3.18721 9.59137 3.17014L8.22538 0.774158C8.22016 0.764697 8.21248 0.756822 8.20315 0.751365C8.19382 0.745909 8.18319 0.743073 8.17238 0.743158ZM14.4623 8.76308C14.5083 8.76308 14.5203 8.78308 14.4963 8.82308L13.6643 10.2881L11.0513 14.873C11.0464 14.8819 11.0392 14.8894 11.0304 14.8945C11.0216 14.8996 11.0115 14.9022 11.0013 14.902C10.9912 14.902 10.9813 14.8993 10.9725 14.8942C10.9637 14.8891 10.9564 14.8818 10.9513 14.873L7.49839 8.84108C7.47839 8.80708 7.48839 8.78908 7.52639 8.78708L7.74239 8.77508L14.4643 8.76308H14.4623Z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconMoonshotAI(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M20.052 6.0364C18.7527 4.28846 16.8758 2.94985 14.6066 2.34296C12.3374 1.73606 10.0411 1.95816 8.04092 2.82331L20.052 6.0364ZM3.75774 6.34071C4.64576 5.04902 5.81872 3.99836 7.16325 3.25459L16.0115 5.62191C15.4308 5.95635 14.8088 6.53268 14.3273 7.16626L21.6025 9.11263C21.809 9.79398 21.9435 10.5003 22 11.2213L3.75774 6.34071ZM21.6866 14.5876C21.584 14.9707 21.4603 15.3425 21.3172 15.7019L2.10543 10.5623C2.16147 10.1792 2.24079 9.7957 2.34339 9.41263C2.58479 8.51262 2.94172 7.67459 3.39435 6.91016L12.7957 9.42554C12.4194 9.96271 12.0766 10.5464 11.7749 11.1709L21.8517 13.8671C21.8056 14.1077 21.7504 14.3478 21.6862 14.5884L21.6866 14.5876ZM2.58134 15.3529C2.11535 14.05 1.91662 12.6408 2.03215 11.2088L10.8985 13.5808C10.8347 13.7823 10.7748 13.9863 10.7192 14.1933C10.6062 14.6147 10.514 15.0352 10.4424 15.4527L20.0166 18.0142C19.5709 18.6051 19.0631 19.1406 18.5057 19.6132L2.58134 15.3529ZM9.42338 21.6568C6.40111 20.8481 4.07415 18.7424 2.88266 16.1001L10.0976 18.0305C10.0859 18.7024 10.1278 19.3571 10.2196 19.9851L15.4619 21.3874C13.5906 22.0743 11.496 22.2112 9.42338 21.6568Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconZai(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.105 2L9.927 4.953H.653L2.83 2h9.276zM23.254 19.048L21.078 22h-9.242l2.174-2.952h9.244zM24 2L9.264 22H0L14.736 2H24z"></path>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconMiniMax(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconGemini(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 50 50" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M49.04,24.001l-1.082-0.043h-0.001C36.134,23.492,26.508,13.866,26.042,2.043L25.999,0.96C25.978,0.424,25.537,0,25,0 s-0.978,0.424-0.999,0.96l-0.043,1.083C23.492,13.866,13.866,23.492,2.042,23.958L0.96,24.001C0.424,24.022,0,24.463,0,25 c0,0.537,0.424,0.978,0.961,0.999l1.082,0.042c11.823,0.467,21.449,10.093,21.915,21.916l0.043,1.083C24.022,49.576,24.463,50,25,50 s0.978-0.424,0.999-0.96l0.043-1.083c0.466-11.823,10.092-21.449,21.915-21.916l1.082-0.042C49.576,25.978,50,25.537,50,25 C50,24.463,49.576,24.022,49.04,24.001z"></path>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconDeepSeek(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.249-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 0 1-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 0 0-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 0 1-.465.137 9.597 9.597 0 0 0-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 0 0 1.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 0 1 1.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 0 1 .415-.287.302.302 0 0 1 .2.288.306.306 0 0 1-.31.307.303.303 0 0 1-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 0 1-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 0 1 .016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 0 1-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconMiMo(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0C8.016 0 4.756.255 2.493 2.516.23 4.776 0 8.033 0 12.012c0 3.98.23 7.235 2.494 9.497C4.757 23.77 8.017 24 12 24c3.983 0 7.243-.23 9.506-2.491C23.77 19.247 24 15.99 24 12.012c0-3.984-.233-7.243-2.502-9.504C19.234.252 15.978 0 12 0zM4.906 7.405h5.624c1.47 0 3.007.068 3.764.827.746.746.827 2.233.83 3.676v4.54a.15.15 0 0 1-.152.147h-1.947a.15.15 0 0 1-.152-.148V11.83c-.002-.806-.048-1.634-.464-2.051-.358-.36-1.026-.441-1.72-.458H7.158a.15.15 0 0 0-.151.147v6.98a.15.15 0 0 1-.152.148H4.906a.15.15 0 0 1-.15-.148V7.554a.15.15 0 0 1 .15-.149zm12.131 0h1.949a.15.15 0 0 1 .15.15v8.892a.15.15 0 0 1-.15.148h-1.949a.15.15 0 0 1-.151-.148V7.554a.15.15 0 0 1 .151-.149zM8.92 10.948h2.046c.083 0 .15.066.15.147v5.352a.15.15 0 0 1-.15.148H8.92a.15.15 0 0 1-.152-.148v-5.352a.15.15 0 0 1 .152-.147Z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconXiaomi(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 0C8.016 0 4.756.255 2.493 2.516.23 4.776 0 8.033 0 12.012c0 3.98.23 7.235 2.494 9.497C4.757 23.77 8.017 24 12 24c3.983 0 7.243-.23 9.506-2.491C23.77 19.247 24 15.99 24 12.012c0-3.984-.233-7.243-2.502-9.504C19.234.252 15.978 0 12 0zM4.906 7.405h5.624c1.47 0 3.007.068 3.764.827.746.746.827 2.233.83 3.676v4.54a.15.15 0 0 1-.152.147h-1.947a.15.15 0 0 1-.152-.148V11.83c-.002-.806-.048-1.634-.464-2.051-.358-.36-1.026-.441-1.72-.458H7.158a.15.15 0 0 0-.151.147v6.98a.15.15 0 0 1-.152.148H4.906a.15.15 0 0 1-.15-.148V7.554a.15.15 0 0 1 .15-.149zm12.131 0h1.949a.15.15 0 0 1 .15.15v8.892a.15.15 0 0 1-.15.148h-1.949a.15.15 0 0 1-.151-.148V7.554a.15.15 0 0 1 .151-.149zM8.92 10.948h2.046c.083 0 .15.066.15.147v5.352a.15.15 0 0 1-.15.148H8.92a.15.15 0 0 1-.152-.148v-5.352a.15.15 0 0 1 .152-.147Z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconNvidia(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M8.948 8.798v-1.43a6.7 6.7 0 0 1 .424-.018c3.922-.124 6.493 3.374 6.493 3.374s-2.774 3.851-5.75 3.851c-.398 0-.787-.062-1.158-.185v-4.346c1.528.185 1.837.857 2.747 2.385l2.04-1.714s-1.492-1.952-4-1.952a6.016 6.016 0 0 0-.796.035m0-4.735v2.138l.424-.027c5.45-.185 9.01 4.47 9.01 4.47s-4.08 4.964-8.33 4.964c-.37 0-.733-.035-1.095-.097v1.325c.3.035.61.062.91.062 3.957 0 6.82-2.023 9.593-4.408.459.371 2.34 1.263 2.73 1.652-2.633 2.208-8.772 3.984-12.253 3.984-.335 0-.653-.018-.971-.053v1.864H24V4.063zm0 10.326v1.131c-3.657-.654-4.673-4.46-4.673-4.46s1.758-1.944 4.673-2.262v1.237H8.94c-1.528-.186-2.73 1.245-2.73 1.245s.68 2.412 2.739 3.11M2.456 10.9s2.164-3.197 6.5-3.533V6.201C4.153 6.59 0 10.653 0 10.653s2.35 6.802 8.948 7.42v-1.237c-4.84-.6-6.492-5.936-6.492-5.936z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconArcee(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37 32" fill="currentColor">
|
||||
<path d="M20.4062 3.66602L4.24121 31.5928H0L18.2881 0L20.4062 3.66602Z" />
|
||||
<path d="M25.8838 13.1553L11.0752 31.5928H6.36719L23.9131 9.74512L25.8838 13.1553Z" />
|
||||
<path d="M36.5352 31.5928H21.6611L34.6191 28.2783L36.5352 31.5928Z" />
|
||||
<path d="M31.2627 22.4648L19.1699 31.5898H13.0762L29.4131 19.2617L31.2627 22.4648Z" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconStealth(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 18" fill="none">
|
||||
<path
|
||||
d="M24 15.5L18.1816 14.2871L18.1328 14.3115C16.9036 11.7879 15.6135 9.29301 14.2607 6.82812C14.0172 6.38435 13.771 5.94188 13.5234 5.5C13.6911 5.97998 13.8606 6.45942 14.0322 6.9375C14.9902 9.60529 16.012 12.2429 17.0947 14.8516L12 17.5L6.9043 14.8516C7.98712 12.2428 9.00977 9.6054 9.96777 6.9375C10.1394 6.45942 10.3089 5.97998 10.4766 5.5C10.229 5.94188 9.98281 6.38435 9.73926 6.82812C8.38629 9.29339 7.09557 11.7884 5.86621 14.3125L5.81738 14.2871L0 15.5L12 0.5L24 15.5Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconChevronLeft(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 20 20" fill="none">
|
||||
<path d="M12 15L7 10L12 5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconChevronRight(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 20 20" fill="none">
|
||||
<path d="M8 5L13 10L8 15" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function IconBreakdown(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width="16" height="16" viewBox="0 0 16 16" fill="none">
|
||||
<path d="M2 12L2 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
||||
<path d="M6 12L6 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
||||
<path d="M10 12L10 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
||||
<path d="M14 12L14 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
[data-component="language-picker"] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
[data-component="footer"] [data-component="language-picker"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
[data-component="footer"] [data-component="language-picker"] [data-component="dropdown"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Standard site footer (grid of cells) */
|
||||
[data-component="footer"] [data-slot="cell"] [data-component="language-picker"] {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
[data-component="footer"] [data-slot="cell"] [data-component="language-picker"] [data-slot="trigger"] {
|
||||
width: 100%;
|
||||
padding: 2rem 0;
|
||||
border-radius: 0;
|
||||
justify-content: center;
|
||||
gap: var(--space-2);
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
[data-component="footer"] [data-slot="cell"] [data-component="language-picker"] [data-slot="trigger"] span {
|
||||
flex: 0 0 auto;
|
||||
text-align: center;
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
[data-component="footer"] [data-slot="cell"] [data-component="language-picker"] [data-slot="trigger"]:hover {
|
||||
background: var(--color-background-weak);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: var(--space-1);
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
/* Footer dropdown should open upward */
|
||||
[data-component="footer"] [data-component="language-picker"] [data-slot="dropdown"] {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: var(--space-2);
|
||||
max-height: min(60vh, 420px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
[data-component="legal"] {
|
||||
flex-wrap: wrap;
|
||||
row-gap: var(--space-2);
|
||||
}
|
||||
|
||||
[data-component="legal"] [data-component="language-picker"] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
[data-component="legal"] [data-component="language-picker"] [data-slot="trigger"] {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
font: inherit;
|
||||
color: var(--color-text-weak);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
[data-component="legal"] [data-component="language-picker"] [data-slot="trigger"] span {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
[data-component="legal"] [data-component="language-picker"] [data-slot="trigger"]:hover {
|
||||
background: transparent;
|
||||
color: var(--color-text);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: var(--space-1);
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
[data-component="legal"] [data-component="language-picker"] [data-slot="dropdown"] {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: var(--space-2);
|
||||
max-height: min(60vh, 420px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* Black pages footer */
|
||||
[data-page="black"] [data-component="language-picker"] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-component="dropdown"] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="trigger"] {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
font: inherit;
|
||||
color: rgba(255, 255, 255, 0.39);
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="trigger"]:hover {
|
||||
background: transparent;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 4px;
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="dropdown"] {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: 12px;
|
||||
background-color: #0e0e10;
|
||||
border-color: rgba(255, 255, 255, 0.14);
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6);
|
||||
max-height: min(60vh, 420px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="item"] {
|
||||
color: rgba(255, 255, 255, 0.86);
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="item"]:hover {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
[data-page="black"] [data-component="language-picker"] [data-slot="item"][data-selected="true"] {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import { For, createSignal } from "solid-js"
|
||||
import { useLocation, useNavigate } from "@solidjs/router"
|
||||
import { Dropdown, DropdownItem } from "~/component/dropdown"
|
||||
import { useLanguage } from "~/context/language"
|
||||
import { route, strip } from "~/lib/language"
|
||||
import "./language-picker.css"
|
||||
|
||||
export function LanguagePicker(props: { align?: "left" | "right" } = {}) {
|
||||
const language = useLanguage()
|
||||
const navigate = useNavigate()
|
||||
const location = useLocation()
|
||||
const [open, setOpen] = createSignal(false)
|
||||
|
||||
return (
|
||||
<div data-component="language-picker">
|
||||
<Dropdown
|
||||
trigger={language.label(language.locale())}
|
||||
align={props.align ?? "left"}
|
||||
open={open()}
|
||||
onOpenChange={setOpen}
|
||||
>
|
||||
<For each={language.locales}>
|
||||
{(locale) => (
|
||||
<DropdownItem
|
||||
selected={locale === language.locale()}
|
||||
onClick={() => {
|
||||
language.setLocale(locale)
|
||||
const href = `${route(locale, strip(location.pathname))}${location.search}${location.hash}`
|
||||
if (href !== `${location.pathname}${location.search}${location.hash}`) navigate(href)
|
||||
setOpen(false)
|
||||
}}
|
||||
>
|
||||
{language.label(locale)}
|
||||
</DropdownItem>
|
||||
)}
|
||||
</For>
|
||||
</Dropdown>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
28
qimingcode/packages/console/app/src/component/legal.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
import { A } from "@solidjs/router"
|
||||
import { LanguagePicker } from "~/component/language-picker"
|
||||
import { useI18n } from "~/context/i18n"
|
||||
import { useLanguage } from "~/context/language"
|
||||
|
||||
export function Legal() {
|
||||
const i18n = useI18n()
|
||||
const language = useLanguage()
|
||||
return (
|
||||
<div data-component="legal">
|
||||
<span>
|
||||
©{new Date().getFullYear()} <a href="https://anoma.ly">Anomaly</a>
|
||||
</span>
|
||||
<span>
|
||||
<A href={language.route("/brand")}>{i18n.t("legal.brand")}</A>
|
||||
</span>
|
||||
<span>
|
||||
<A href={language.route("/legal/privacy-policy")}>{i18n.t("legal.privacy")}</A>
|
||||
</span>
|
||||
<span>
|
||||
<A href={language.route("/legal/terms-of-service")}>{i18n.t("legal.terms")}</A>
|
||||
</span>
|
||||
<span>
|
||||
<LanguagePicker align="right" />
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { Link } from "@solidjs/meta"
|
||||
import { For } from "solid-js"
|
||||
import { getRequestEvent } from "solid-js/web"
|
||||
import { config } from "~/config"
|
||||
import { useLanguage } from "~/context/language"
|
||||
import { LOCALES, route, tag } from "~/lib/language"
|
||||
|
||||
function skip(path: string) {
|
||||
const evt = getRequestEvent()
|
||||
if (!evt) return false
|
||||
|
||||
const key = "__locale_links_seen"
|
||||
const locals = evt.locals as Record<string, unknown>
|
||||
const seen = locals[key] instanceof Set ? (locals[key] as Set<string>) : new Set<string>()
|
||||
locals[key] = seen
|
||||
if (seen.has(path)) return true
|
||||
seen.add(path)
|
||||
return false
|
||||
}
|
||||
|
||||
export function LocaleLinks(props: { path: string }) {
|
||||
const language = useLanguage()
|
||||
if (skip(props.path)) return null
|
||||
|
||||
return (
|
||||
<>
|
||||
<Link rel="canonical" href={`${config.baseUrl}${route(language.locale(), props.path)}`} />
|
||||
<For each={LOCALES}>
|
||||
{(locale) => (
|
||||
<Link rel="alternate" hreflang={tag(locale)} href={`${config.baseUrl}${route(locale, props.path)}`} />
|
||||
)}
|
||||
</For>
|
||||
<Link rel="alternate" hreflang="x-default" href={`${config.baseUrl}${props.path}`} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
67
qimingcode/packages/console/app/src/component/modal.css
Normal file
@@ -0,0 +1,67 @@
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
[data-component="modal"][data-slot="overlay"] {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 9999;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
animation: fadeIn 0.2s ease;
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
|
||||
[data-slot="content"] {
|
||||
background-color: var(--color-bg);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--border-radius-md);
|
||||
padding: var(--space-6);
|
||||
min-width: 400px;
|
||||
max-width: 90vw;
|
||||
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
|
||||
animation: slideUp 0.2s ease;
|
||||
|
||||
@media (max-width: 30rem) {
|
||||
min-width: 300px;
|
||||
padding: var(--space-4);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
[data-slot="title"] {
|
||||
margin: 0 0 var(--space-4) 0;
|
||||
font-size: var(--font-size-lg);
|
||||
font-weight: 600;
|
||||
color: var(--color-text);
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
24
qimingcode/packages/console/app/src/component/modal.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
import { JSX, Show } from "solid-js"
|
||||
import "./modal.css"
|
||||
|
||||
interface ModalProps {
|
||||
open: boolean
|
||||
onClose: () => void
|
||||
title?: string
|
||||
children: JSX.Element
|
||||
}
|
||||
|
||||
export function Modal(props: ModalProps) {
|
||||
return (
|
||||
<Show when={props.open}>
|
||||
<div data-component="modal" data-slot="overlay" onClick={props.onClose}>
|
||||
<div data-slot="content" onClick={(e) => e.stopPropagation()}>
|
||||
<Show when={props.title}>
|
||||
<h2 data-slot="title">{props.title}</h2>
|
||||
</Show>
|
||||
{props.children}
|
||||
</div>
|
||||
</div>
|
||||
</Show>
|
||||
)
|
||||
}
|
||||
15
qimingcode/packages/console/app/src/component/spotlight.css
Normal file
@@ -0,0 +1,15 @@
|
||||
.spotlight-container {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 50dvh;
|
||||
pointer-events: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.spotlight-container canvas {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
820
qimingcode/packages/console/app/src/component/spotlight.tsx
Normal file
@@ -0,0 +1,820 @@
|
||||
import { createSignal, createEffect, onMount, onCleanup, Accessor } from "solid-js"
|
||||
import "./spotlight.css"
|
||||
|
||||
export interface ParticlesConfig {
|
||||
enabled: boolean
|
||||
amount: number
|
||||
size: [number, number]
|
||||
speed: number
|
||||
opacity: number
|
||||
drift: number
|
||||
}
|
||||
|
||||
export interface SpotlightConfig {
|
||||
placement: [number, number]
|
||||
color: string
|
||||
speed: number
|
||||
spread: number
|
||||
length: number
|
||||
width: number
|
||||
pulsating: false | [number, number]
|
||||
distance: number
|
||||
saturation: number
|
||||
noiseAmount: number
|
||||
distortion: number
|
||||
opacity: number
|
||||
particles: ParticlesConfig
|
||||
}
|
||||
|
||||
export const defaultConfig: SpotlightConfig = {
|
||||
placement: [0.5, -0.15],
|
||||
color: "#ffffff",
|
||||
speed: 0.8,
|
||||
spread: 0.5,
|
||||
length: 4.0,
|
||||
width: 0.15,
|
||||
pulsating: [0.95, 1.1],
|
||||
distance: 3.5,
|
||||
saturation: 0.35,
|
||||
noiseAmount: 0.15,
|
||||
distortion: 0.05,
|
||||
opacity: 0.325,
|
||||
particles: {
|
||||
enabled: true,
|
||||
amount: 70,
|
||||
size: [1.25, 1.5],
|
||||
speed: 0.75,
|
||||
opacity: 0.9,
|
||||
drift: 1.5,
|
||||
},
|
||||
}
|
||||
|
||||
export interface SpotlightAnimationState {
|
||||
time: number
|
||||
intensity: number
|
||||
pulseValue: number
|
||||
}
|
||||
|
||||
interface SpotlightProps {
|
||||
config: Accessor<SpotlightConfig>
|
||||
class?: string
|
||||
onAnimationFrame?: (state: SpotlightAnimationState) => void
|
||||
}
|
||||
|
||||
const hexToRgb = (hex: string): [number, number, number] => {
|
||||
const m = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)
|
||||
return m ? [parseInt(m[1], 16) / 255, parseInt(m[2], 16) / 255, parseInt(m[3], 16) / 255] : [1, 1, 1]
|
||||
}
|
||||
|
||||
const getAnchorAndDir = (
|
||||
placement: [number, number],
|
||||
w: number,
|
||||
h: number,
|
||||
): { anchor: [number, number]; dir: [number, number] } => {
|
||||
const [px, py] = placement
|
||||
const outside = 0.2
|
||||
|
||||
let anchorX = px * w
|
||||
let anchorY = py * h
|
||||
let dirX = 0
|
||||
let dirY = 0
|
||||
|
||||
const centerX = 0.5
|
||||
const centerY = 0.5
|
||||
|
||||
if (py <= 0.25) {
|
||||
anchorY = -outside * h + py * h
|
||||
dirY = 1
|
||||
dirX = (centerX - px) * 0.5
|
||||
} else if (py >= 0.75) {
|
||||
anchorY = (1 + outside) * h - (1 - py) * h
|
||||
dirY = -1
|
||||
dirX = (centerX - px) * 0.5
|
||||
} else if (px <= 0.25) {
|
||||
anchorX = -outside * w + px * w
|
||||
dirX = 1
|
||||
dirY = (centerY - py) * 0.5
|
||||
} else if (px >= 0.75) {
|
||||
anchorX = (1 + outside) * w - (1 - px) * w
|
||||
dirX = -1
|
||||
dirY = (centerY - py) * 0.5
|
||||
} else {
|
||||
dirY = 1
|
||||
}
|
||||
|
||||
const len = Math.sqrt(dirX * dirX + dirY * dirY)
|
||||
if (len > 0) {
|
||||
dirX /= len
|
||||
dirY /= len
|
||||
}
|
||||
|
||||
return { anchor: [anchorX, anchorY], dir: [dirX, dirY] }
|
||||
}
|
||||
|
||||
interface UniformData {
|
||||
iTime: number
|
||||
iResolution: [number, number]
|
||||
lightPos: [number, number]
|
||||
lightDir: [number, number]
|
||||
color: [number, number, number]
|
||||
speed: number
|
||||
lightSpread: number
|
||||
lightLength: number
|
||||
sourceWidth: number
|
||||
pulsating: number
|
||||
pulsatingMin: number
|
||||
pulsatingMax: number
|
||||
fadeDistance: number
|
||||
saturation: number
|
||||
noiseAmount: number
|
||||
distortion: number
|
||||
particlesEnabled: number
|
||||
particleAmount: number
|
||||
particleSizeMin: number
|
||||
particleSizeMax: number
|
||||
particleSpeed: number
|
||||
particleOpacity: number
|
||||
particleDrift: number
|
||||
}
|
||||
|
||||
const WGSL_SHADER = `
|
||||
struct Uniforms {
|
||||
iTime: f32,
|
||||
_pad0: f32,
|
||||
iResolution: vec2<f32>,
|
||||
lightPos: vec2<f32>,
|
||||
lightDir: vec2<f32>,
|
||||
color: vec3<f32>,
|
||||
speed: f32,
|
||||
lightSpread: f32,
|
||||
lightLength: f32,
|
||||
sourceWidth: f32,
|
||||
pulsating: f32,
|
||||
pulsatingMin: f32,
|
||||
pulsatingMax: f32,
|
||||
fadeDistance: f32,
|
||||
saturation: f32,
|
||||
noiseAmount: f32,
|
||||
distortion: f32,
|
||||
particlesEnabled: f32,
|
||||
particleAmount: f32,
|
||||
particleSizeMin: f32,
|
||||
particleSizeMax: f32,
|
||||
particleSpeed: f32,
|
||||
particleOpacity: f32,
|
||||
particleDrift: f32,
|
||||
_pad1: f32,
|
||||
_pad2: f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<uniform> uniforms: Uniforms;
|
||||
|
||||
struct VertexOutput {
|
||||
@builtin(position) position: vec4<f32>,
|
||||
@location(0) vUv: vec2<f32>,
|
||||
};
|
||||
|
||||
@vertex
|
||||
fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
||||
var positions = array<vec2<f32>, 3>(
|
||||
vec2<f32>(-1.0, -1.0),
|
||||
vec2<f32>(3.0, -1.0),
|
||||
vec2<f32>(-1.0, 3.0)
|
||||
);
|
||||
|
||||
var output: VertexOutput;
|
||||
let pos = positions[vertexIndex];
|
||||
output.position = vec4<f32>(pos, 0.0, 1.0);
|
||||
output.vUv = pos * 0.5 + 0.5;
|
||||
return output;
|
||||
}
|
||||
|
||||
fn hash(p: vec2<f32>) -> f32 {
|
||||
let p3 = fract(p.xyx * 0.1031);
|
||||
return fract((p3.x + p3.y) * p3.z + dot(p3, p3.yzx + 33.33));
|
||||
}
|
||||
|
||||
fn hash2(p: vec2<f32>) -> vec2<f32> {
|
||||
let n = sin(dot(p, vec2<f32>(41.0, 289.0)));
|
||||
return fract(vec2<f32>(n * 262144.0, n * 32768.0));
|
||||
}
|
||||
|
||||
fn fastNoise(st: vec2<f32>) -> f32 {
|
||||
return fract(sin(dot(st, vec2<f32>(12.9898, 78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
fn lightStrengthCombined(lightSource: vec2<f32>, lightRefDirection: vec2<f32>, coord: vec2<f32>) -> f32 {
|
||||
let sourceToCoord = coord - lightSource;
|
||||
let distSq = dot(sourceToCoord, sourceToCoord);
|
||||
let distance = sqrt(distSq);
|
||||
|
||||
let baseSize = min(uniforms.iResolution.x, uniforms.iResolution.y);
|
||||
let maxDistance = max(baseSize * uniforms.lightLength, 0.001);
|
||||
if (distance > maxDistance) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
let invDist = 1.0 / max(distance, 0.001);
|
||||
let dirNorm = sourceToCoord * invDist;
|
||||
let cosAngle = dot(dirNorm, lightRefDirection);
|
||||
|
||||
if (cosAngle < 0.0) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
let side = dot(dirNorm, vec2<f32>(-lightRefDirection.y, lightRefDirection.x));
|
||||
let time = uniforms.iTime;
|
||||
let speed = uniforms.speed;
|
||||
|
||||
let asymNoise = fastNoise(vec2<f32>(side * 6.0 + time * 0.12, distance * 0.004 + cosAngle * 2.0));
|
||||
let asymShift = (asymNoise - 0.5) * uniforms.distortion * 0.6;
|
||||
|
||||
let distortPhase = time * 1.4 + distance * 0.006 + cosAngle * 4.5 + side * 1.7;
|
||||
let distortedAngle = cosAngle + uniforms.distortion * sin(distortPhase) * 0.22 + asymShift;
|
||||
|
||||
let flickerSeed = cosAngle * 9.0 + side * 4.0 + time * speed * 0.35;
|
||||
let flicker = 0.86 + fastNoise(vec2<f32>(flickerSeed, distance * 0.01)) * 0.28;
|
||||
|
||||
let asymSpread = max(uniforms.lightSpread * (0.9 + (asymNoise - 0.5) * 0.25), 0.001);
|
||||
let spreadFactor = pow(max(distortedAngle, 0.0), 1.0 / asymSpread);
|
||||
let lengthFalloff = clamp(1.0 - distance / maxDistance, 0.0, 1.0);
|
||||
|
||||
let fadeMaxDist = max(baseSize * uniforms.fadeDistance, 0.001);
|
||||
let fadeFalloff = clamp((fadeMaxDist - distance) / fadeMaxDist, 0.0, 1.0);
|
||||
|
||||
var pulse: f32 = 1.0;
|
||||
if (uniforms.pulsating > 0.5) {
|
||||
let pulseCenter = (uniforms.pulsatingMin + uniforms.pulsatingMax) * 0.5;
|
||||
let pulseAmplitude = (uniforms.pulsatingMax - uniforms.pulsatingMin) * 0.5;
|
||||
pulse = pulseCenter + pulseAmplitude * sin(time * speed * 3.0);
|
||||
}
|
||||
|
||||
let timeSpeed = time * speed;
|
||||
let wave = 0.5
|
||||
+ 0.25 * sin(cosAngle * 28.0 + side * 8.0 + timeSpeed * 1.2)
|
||||
+ 0.18 * cos(cosAngle * 22.0 - timeSpeed * 0.95 + side * 6.0)
|
||||
+ 0.12 * sin(cosAngle * 35.0 + timeSpeed * 1.6 + asymNoise * 3.0);
|
||||
let minStrength = 0.14 + asymNoise * 0.06;
|
||||
let baseStrength = max(clamp(wave * (0.85 + asymNoise * 0.3), 0.0, 1.0), minStrength);
|
||||
|
||||
let lightStrength = baseStrength * lengthFalloff * fadeFalloff * spreadFactor * pulse * flicker;
|
||||
let ambientLight = (0.06 + asymNoise * 0.04) * lengthFalloff * fadeFalloff * spreadFactor;
|
||||
|
||||
return max(lightStrength, ambientLight);
|
||||
}
|
||||
|
||||
fn particle(coord: vec2<f32>, particlePos: vec2<f32>, size: f32) -> f32 {
|
||||
let delta = coord - particlePos;
|
||||
let distSq = dot(delta, delta);
|
||||
let sizeSq = size * size;
|
||||
|
||||
if (distSq > sizeSq * 9.0) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
let d = sqrt(distSq);
|
||||
let core = smoothstep(size, size * 0.35, d);
|
||||
let glow = smoothstep(size * 3.0, 0.0, d) * 0.55;
|
||||
return core + glow;
|
||||
}
|
||||
|
||||
fn renderParticles(coord: vec2<f32>, lightSource: vec2<f32>, lightDir: vec2<f32>) -> f32 {
|
||||
if (uniforms.particlesEnabled < 0.5 || uniforms.particleAmount < 1.0) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
var particleSum: f32 = 0.0;
|
||||
let particleCount = i32(uniforms.particleAmount);
|
||||
let time = uniforms.iTime * uniforms.particleSpeed;
|
||||
let perpDir = vec2<f32>(-lightDir.y, lightDir.x);
|
||||
let baseSize = min(uniforms.iResolution.x, uniforms.iResolution.y);
|
||||
let maxDist = max(baseSize * uniforms.lightLength, 1.0);
|
||||
let spreadScale = uniforms.lightSpread * baseSize * 0.65;
|
||||
let coneHalfWidth = uniforms.lightSpread * baseSize * 0.55;
|
||||
|
||||
for (var i: i32 = 0; i < particleCount; i = i + 1) {
|
||||
let fi = f32(i);
|
||||
let seed = vec2<f32>(fi * 127.1, fi * 311.7);
|
||||
let rnd = hash2(seed);
|
||||
|
||||
let lifeDuration = 2.0 + hash(seed + vec2<f32>(19.0, 73.0)) * 3.0;
|
||||
let lifeOffset = hash(seed + vec2<f32>(91.0, 37.0)) * lifeDuration;
|
||||
let lifeProgress = fract((time + lifeOffset) / lifeDuration);
|
||||
|
||||
let fadeIn = smoothstep(0.0, 0.2, lifeProgress);
|
||||
let fadeOut = 1.0 - smoothstep(0.8, 1.0, lifeProgress);
|
||||
let lifeFade = fadeIn * fadeOut;
|
||||
if (lifeFade < 0.01) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let alongLight = rnd.x * maxDist * 0.8;
|
||||
let perpOffset = (rnd.y - 0.5) * spreadScale;
|
||||
|
||||
let floatPhase = rnd.y * 6.28318 + fi * 0.37;
|
||||
let floatSpeed = 0.35 + rnd.x * 0.9;
|
||||
let drift = vec2<f32>(
|
||||
sin(time * floatSpeed + floatPhase),
|
||||
cos(time * floatSpeed * 0.85 + floatPhase * 1.3)
|
||||
) * uniforms.particleDrift * baseSize * 0.08;
|
||||
|
||||
let wobble = vec2<f32>(
|
||||
sin(time * 1.4 + floatPhase * 2.1),
|
||||
cos(time * 1.1 + floatPhase * 1.6)
|
||||
) * uniforms.particleDrift * baseSize * 0.03;
|
||||
|
||||
let flowOffset = (rnd.x - 0.5) * baseSize * 0.12 + fract(time * 0.06 + rnd.y) * baseSize * 0.1;
|
||||
|
||||
let basePos = lightSource + lightDir * (alongLight + flowOffset) + perpDir * perpOffset + drift + wobble;
|
||||
|
||||
let toParticle = basePos - lightSource;
|
||||
let projLen = dot(toParticle, lightDir);
|
||||
if (projLen < 0.0 || projLen > maxDist) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let sideDist = abs(dot(toParticle, perpDir));
|
||||
if (sideDist > coneHalfWidth) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let size = mix(uniforms.particleSizeMin, uniforms.particleSizeMax, rnd.x);
|
||||
let twinkle = 0.7 + 0.3 * sin(time * (1.5 + rnd.y * 2.0) + floatPhase);
|
||||
let distFade = 1.0 - smoothstep(maxDist * 0.2, maxDist * 0.95, projLen);
|
||||
if (distFade < 0.01) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let p = particle(coord, basePos, size);
|
||||
if (p > 0.0) {
|
||||
particleSum = particleSum + p * lifeFade * twinkle * distFade * uniforms.particleOpacity;
|
||||
if (particleSum >= 1.0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return min(particleSum, 1.0);
|
||||
}
|
||||
|
||||
@fragment
|
||||
fn fragmentMain(@builtin(position) fragCoord: vec4<f32>, @location(0) vUv: vec2<f32>) -> @location(0) vec4<f32> {
|
||||
let coord = vec2<f32>(fragCoord.x, fragCoord.y);
|
||||
|
||||
let normalizedX = (coord.x / uniforms.iResolution.x) - 0.5;
|
||||
let widthOffset = -normalizedX * uniforms.sourceWidth * uniforms.iResolution.x;
|
||||
|
||||
let perpDir = vec2<f32>(-uniforms.lightDir.y, uniforms.lightDir.x);
|
||||
let adjustedLightPos = uniforms.lightPos + perpDir * widthOffset;
|
||||
|
||||
let lightValue = lightStrengthCombined(adjustedLightPos, uniforms.lightDir, coord);
|
||||
|
||||
if (lightValue < 0.001) {
|
||||
let particles = renderParticles(coord, adjustedLightPos, uniforms.lightDir);
|
||||
if (particles < 0.001) {
|
||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
let particleBrightness = particles * 1.8;
|
||||
return vec4<f32>(uniforms.color * particleBrightness, particles * 0.9);
|
||||
}
|
||||
|
||||
var fragColor = vec4<f32>(lightValue, lightValue, lightValue, lightValue);
|
||||
|
||||
if (uniforms.noiseAmount > 0.01) {
|
||||
let n = fastNoise(coord * 0.5 + uniforms.iTime * 0.5);
|
||||
let grain = mix(1.0, n, uniforms.noiseAmount * 0.5);
|
||||
fragColor = vec4<f32>(fragColor.rgb * grain, fragColor.a);
|
||||
}
|
||||
|
||||
let brightness = 1.0 - (coord.y / uniforms.iResolution.y);
|
||||
fragColor = vec4<f32>(
|
||||
fragColor.x * (0.15 + brightness * 0.85),
|
||||
fragColor.y * (0.35 + brightness * 0.65),
|
||||
fragColor.z * (0.55 + brightness * 0.45),
|
||||
fragColor.a
|
||||
);
|
||||
|
||||
if (abs(uniforms.saturation - 1.0) > 0.01) {
|
||||
let gray = dot(fragColor.rgb, vec3<f32>(0.299, 0.587, 0.114));
|
||||
fragColor = vec4<f32>(mix(vec3<f32>(gray), fragColor.rgb, uniforms.saturation), fragColor.a);
|
||||
}
|
||||
|
||||
fragColor = vec4<f32>(fragColor.rgb * uniforms.color, fragColor.a);
|
||||
|
||||
let particles = renderParticles(coord, adjustedLightPos, uniforms.lightDir);
|
||||
if (particles > 0.001) {
|
||||
let particleBrightness = particles * 1.8;
|
||||
fragColor = vec4<f32>(fragColor.rgb + uniforms.color * particleBrightness, max(fragColor.a, particles * 0.9));
|
||||
}
|
||||
|
||||
return fragColor;
|
||||
}
|
||||
`
|
||||
|
||||
const UNIFORM_BUFFER_SIZE = 144
|
||||
|
||||
function updateUniformBuffer(buffer: Float32Array, data: UniformData): void {
|
||||
buffer[0] = data.iTime
|
||||
buffer[2] = data.iResolution[0]
|
||||
buffer[3] = data.iResolution[1]
|
||||
buffer[4] = data.lightPos[0]
|
||||
buffer[5] = data.lightPos[1]
|
||||
buffer[6] = data.lightDir[0]
|
||||
buffer[7] = data.lightDir[1]
|
||||
buffer[8] = data.color[0]
|
||||
buffer[9] = data.color[1]
|
||||
buffer[10] = data.color[2]
|
||||
buffer[11] = data.speed
|
||||
buffer[12] = data.lightSpread
|
||||
buffer[13] = data.lightLength
|
||||
buffer[14] = data.sourceWidth
|
||||
buffer[15] = data.pulsating
|
||||
buffer[16] = data.pulsatingMin
|
||||
buffer[17] = data.pulsatingMax
|
||||
buffer[18] = data.fadeDistance
|
||||
buffer[19] = data.saturation
|
||||
buffer[20] = data.noiseAmount
|
||||
buffer[21] = data.distortion
|
||||
buffer[22] = data.particlesEnabled
|
||||
buffer[23] = data.particleAmount
|
||||
buffer[24] = data.particleSizeMin
|
||||
buffer[25] = data.particleSizeMax
|
||||
buffer[26] = data.particleSpeed
|
||||
buffer[27] = data.particleOpacity
|
||||
buffer[28] = data.particleDrift
|
||||
}
|
||||
|
||||
export default function Spotlight(props: SpotlightProps) {
|
||||
let containerRef: HTMLDivElement | undefined
|
||||
let canvasRef: HTMLCanvasElement | null = null
|
||||
let deviceRef: GPUDevice | null = null
|
||||
let contextRef: GPUCanvasContext | null = null
|
||||
let pipelineRef: GPURenderPipeline | null = null
|
||||
let uniformBufferRef: GPUBuffer | null = null
|
||||
let bindGroupRef: GPUBindGroup | null = null
|
||||
let animationIdRef: number | null = null
|
||||
let cleanupFunctionRef: (() => void) | null = null
|
||||
let uniformDataRef: UniformData | null = null
|
||||
let uniformArrayRef: Float32Array | null = null
|
||||
let configRef: SpotlightConfig = props.config()
|
||||
let frameCount = 0
|
||||
|
||||
const [isVisible, setIsVisible] = createSignal(false)
|
||||
|
||||
createEffect(() => {
|
||||
configRef = props.config()
|
||||
})
|
||||
|
||||
onMount(() => {
|
||||
if (!containerRef) return
|
||||
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
const entry = entries[0]
|
||||
setIsVisible(entry.isIntersecting)
|
||||
},
|
||||
{ threshold: 0.1 },
|
||||
)
|
||||
|
||||
observer.observe(containerRef)
|
||||
|
||||
onCleanup(() => {
|
||||
observer.disconnect()
|
||||
})
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
const visible = isVisible()
|
||||
const config = props.config()
|
||||
if (!visible || !containerRef) {
|
||||
return
|
||||
}
|
||||
|
||||
if (cleanupFunctionRef) {
|
||||
cleanupFunctionRef()
|
||||
cleanupFunctionRef = null
|
||||
}
|
||||
|
||||
const initializeWebGPU = async () => {
|
||||
if (!containerRef) {
|
||||
return
|
||||
}
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 10))
|
||||
|
||||
if (!containerRef) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!navigator.gpu) {
|
||||
console.warn("WebGPU is not supported in this browser")
|
||||
return
|
||||
}
|
||||
|
||||
const adapter = await navigator.gpu.requestAdapter({
|
||||
powerPreference: "high-performance",
|
||||
})
|
||||
if (!adapter) {
|
||||
console.warn("Failed to get WebGPU adapter")
|
||||
return
|
||||
}
|
||||
|
||||
const device = await adapter.requestDevice()
|
||||
deviceRef = device
|
||||
|
||||
const canvas = document.createElement("canvas")
|
||||
canvas.style.width = "100%"
|
||||
canvas.style.height = "100%"
|
||||
canvasRef = canvas
|
||||
|
||||
while (containerRef.firstChild) {
|
||||
containerRef.removeChild(containerRef.firstChild)
|
||||
}
|
||||
containerRef.appendChild(canvas)
|
||||
|
||||
const context = canvas.getContext("webgpu")
|
||||
if (!context) {
|
||||
console.warn("Failed to get WebGPU context")
|
||||
return
|
||||
}
|
||||
contextRef = context
|
||||
|
||||
const presentationFormat = navigator.gpu.getPreferredCanvasFormat()
|
||||
context.configure({
|
||||
device,
|
||||
format: presentationFormat,
|
||||
alphaMode: "premultiplied",
|
||||
})
|
||||
|
||||
const shaderModule = device.createShaderModule({
|
||||
code: WGSL_SHADER,
|
||||
})
|
||||
|
||||
const uniformBuffer = device.createBuffer({
|
||||
size: UNIFORM_BUFFER_SIZE,
|
||||
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
||||
})
|
||||
uniformBufferRef = uniformBuffer
|
||||
|
||||
const bindGroupLayout = device.createBindGroupLayout({
|
||||
entries: [
|
||||
{
|
||||
binding: 0,
|
||||
visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
|
||||
buffer: { type: "uniform" },
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
const bindGroup = device.createBindGroup({
|
||||
layout: bindGroupLayout,
|
||||
entries: [
|
||||
{
|
||||
binding: 0,
|
||||
resource: { buffer: uniformBuffer },
|
||||
},
|
||||
],
|
||||
})
|
||||
bindGroupRef = bindGroup
|
||||
|
||||
const pipelineLayout = device.createPipelineLayout({
|
||||
bindGroupLayouts: [bindGroupLayout],
|
||||
})
|
||||
|
||||
const pipeline = device.createRenderPipeline({
|
||||
layout: pipelineLayout,
|
||||
vertex: {
|
||||
module: shaderModule,
|
||||
entryPoint: "vertexMain",
|
||||
},
|
||||
fragment: {
|
||||
module: shaderModule,
|
||||
entryPoint: "fragmentMain",
|
||||
targets: [
|
||||
{
|
||||
format: presentationFormat,
|
||||
blend: {
|
||||
color: {
|
||||
srcFactor: "src-alpha",
|
||||
dstFactor: "one-minus-src-alpha",
|
||||
operation: "add",
|
||||
},
|
||||
alpha: {
|
||||
srcFactor: "one",
|
||||
dstFactor: "one-minus-src-alpha",
|
||||
operation: "add",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
primitive: {
|
||||
topology: "triangle-list",
|
||||
},
|
||||
})
|
||||
pipelineRef = pipeline
|
||||
|
||||
const { clientWidth: wCSS, clientHeight: hCSS } = containerRef
|
||||
const dpr = Math.min(window.devicePixelRatio, 2)
|
||||
const w = wCSS * dpr
|
||||
const h = hCSS * dpr
|
||||
const { anchor, dir } = getAnchorAndDir(config.placement, w, h)
|
||||
|
||||
uniformDataRef = {
|
||||
iTime: 0,
|
||||
iResolution: [w, h],
|
||||
lightPos: anchor,
|
||||
lightDir: dir,
|
||||
color: hexToRgb(config.color),
|
||||
speed: config.speed,
|
||||
lightSpread: config.spread,
|
||||
lightLength: config.length,
|
||||
sourceWidth: config.width,
|
||||
pulsating: config.pulsating !== false ? 1.0 : 0.0,
|
||||
pulsatingMin: config.pulsating !== false ? config.pulsating[0] : 1.0,
|
||||
pulsatingMax: config.pulsating !== false ? config.pulsating[1] : 1.0,
|
||||
fadeDistance: config.distance,
|
||||
saturation: config.saturation,
|
||||
noiseAmount: config.noiseAmount,
|
||||
distortion: config.distortion,
|
||||
particlesEnabled: config.particles.enabled ? 1.0 : 0.0,
|
||||
particleAmount: config.particles.amount,
|
||||
particleSizeMin: config.particles.size[0],
|
||||
particleSizeMax: config.particles.size[1],
|
||||
particleSpeed: config.particles.speed,
|
||||
particleOpacity: config.particles.opacity,
|
||||
particleDrift: config.particles.drift,
|
||||
}
|
||||
|
||||
const updatePlacement = () => {
|
||||
if (!containerRef || !canvasRef || !uniformDataRef) {
|
||||
return
|
||||
}
|
||||
|
||||
const dpr = Math.min(window.devicePixelRatio, 2)
|
||||
const { clientWidth: wCSS, clientHeight: hCSS } = containerRef
|
||||
const w = Math.floor(wCSS * dpr)
|
||||
const h = Math.floor(hCSS * dpr)
|
||||
|
||||
canvasRef.width = w
|
||||
canvasRef.height = h
|
||||
|
||||
uniformDataRef.iResolution = [w, h]
|
||||
|
||||
const { anchor, dir } = getAnchorAndDir(configRef.placement, w, h)
|
||||
uniformDataRef.lightPos = anchor
|
||||
uniformDataRef.lightDir = dir
|
||||
}
|
||||
|
||||
const loop = (t: number) => {
|
||||
if (!deviceRef || !contextRef || !pipelineRef || !uniformBufferRef || !bindGroupRef || !uniformDataRef) {
|
||||
return
|
||||
}
|
||||
|
||||
const timeSeconds = t * 0.001
|
||||
uniformDataRef.iTime = timeSeconds
|
||||
frameCount++
|
||||
|
||||
if (props.onAnimationFrame && frameCount % 2 === 0) {
|
||||
const pulsatingMin = configRef.pulsating !== false ? configRef.pulsating[0] : 1.0
|
||||
const pulsatingMax = configRef.pulsating !== false ? configRef.pulsating[1] : 1.0
|
||||
const pulseCenter = (pulsatingMin + pulsatingMax) * 0.5
|
||||
const pulseAmplitude = (pulsatingMax - pulsatingMin) * 0.5
|
||||
const pulseValue =
|
||||
configRef.pulsating !== false
|
||||
? pulseCenter + pulseAmplitude * Math.sin(timeSeconds * configRef.speed * 3.0)
|
||||
: 1.0
|
||||
|
||||
const baseIntensity1 = 0.45 + 0.15 * Math.sin(timeSeconds * configRef.speed * 1.5)
|
||||
const baseIntensity2 = 0.3 + 0.2 * Math.cos(timeSeconds * configRef.speed * 1.1)
|
||||
const intensity = Math.max((baseIntensity1 + baseIntensity2) * pulseValue, 0.55)
|
||||
|
||||
props.onAnimationFrame({
|
||||
time: timeSeconds,
|
||||
intensity,
|
||||
pulseValue: Math.max(pulseValue, 0.9),
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
if (!uniformArrayRef) {
|
||||
uniformArrayRef = new Float32Array(36)
|
||||
}
|
||||
updateUniformBuffer(uniformArrayRef, uniformDataRef)
|
||||
deviceRef.queue.writeBuffer(uniformBufferRef, 0, uniformArrayRef.buffer)
|
||||
|
||||
const commandEncoder = deviceRef.createCommandEncoder()
|
||||
|
||||
const textureView = contextRef.getCurrentTexture().createView()
|
||||
|
||||
const renderPass = commandEncoder.beginRenderPass({
|
||||
colorAttachments: [
|
||||
{
|
||||
view: textureView,
|
||||
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
||||
loadOp: "clear",
|
||||
storeOp: "store",
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
renderPass.setPipeline(pipelineRef)
|
||||
renderPass.setBindGroup(0, bindGroupRef)
|
||||
renderPass.draw(3)
|
||||
renderPass.end()
|
||||
|
||||
deviceRef.queue.submit([commandEncoder.finish()])
|
||||
|
||||
animationIdRef = requestAnimationFrame(loop)
|
||||
} catch (error) {
|
||||
console.warn("WebGPU rendering error:", error)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("resize", updatePlacement)
|
||||
updatePlacement()
|
||||
animationIdRef = requestAnimationFrame(loop)
|
||||
|
||||
cleanupFunctionRef = () => {
|
||||
if (animationIdRef) {
|
||||
cancelAnimationFrame(animationIdRef)
|
||||
animationIdRef = null
|
||||
}
|
||||
|
||||
window.removeEventListener("resize", updatePlacement)
|
||||
|
||||
if (uniformBufferRef) {
|
||||
uniformBufferRef.destroy()
|
||||
uniformBufferRef = null
|
||||
}
|
||||
|
||||
if (deviceRef) {
|
||||
deviceRef.destroy()
|
||||
deviceRef = null
|
||||
}
|
||||
|
||||
if (canvasRef && canvasRef.parentNode) {
|
||||
canvasRef.parentNode.removeChild(canvasRef)
|
||||
}
|
||||
|
||||
canvasRef = null
|
||||
contextRef = null
|
||||
pipelineRef = null
|
||||
bindGroupRef = null
|
||||
uniformDataRef = null
|
||||
}
|
||||
}
|
||||
|
||||
void initializeWebGPU()
|
||||
|
||||
onCleanup(() => {
|
||||
if (cleanupFunctionRef) {
|
||||
cleanupFunctionRef()
|
||||
cleanupFunctionRef = null
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
if (!uniformDataRef || !containerRef) {
|
||||
return
|
||||
}
|
||||
|
||||
const config = props.config()
|
||||
|
||||
uniformDataRef.color = hexToRgb(config.color)
|
||||
uniformDataRef.speed = config.speed
|
||||
uniformDataRef.lightSpread = config.spread
|
||||
uniformDataRef.lightLength = config.length
|
||||
uniformDataRef.sourceWidth = config.width
|
||||
uniformDataRef.pulsating = config.pulsating !== false ? 1.0 : 0.0
|
||||
uniformDataRef.pulsatingMin = config.pulsating !== false ? config.pulsating[0] : 1.0
|
||||
uniformDataRef.pulsatingMax = config.pulsating !== false ? config.pulsating[1] : 1.0
|
||||
uniformDataRef.fadeDistance = config.distance
|
||||
uniformDataRef.saturation = config.saturation
|
||||
uniformDataRef.noiseAmount = config.noiseAmount
|
||||
uniformDataRef.distortion = config.distortion
|
||||
uniformDataRef.particlesEnabled = config.particles.enabled ? 1.0 : 0.0
|
||||
uniformDataRef.particleAmount = config.particles.amount
|
||||
uniformDataRef.particleSizeMin = config.particles.size[0]
|
||||
uniformDataRef.particleSizeMax = config.particles.size[1]
|
||||
uniformDataRef.particleSpeed = config.particles.speed
|
||||
uniformDataRef.particleOpacity = config.particles.opacity
|
||||
uniformDataRef.particleDrift = config.particles.drift
|
||||
|
||||
const dpr = Math.min(window.devicePixelRatio, 2)
|
||||
const { clientWidth: wCSS, clientHeight: hCSS } = containerRef
|
||||
const { anchor, dir } = getAnchorAndDir(config.placement, wCSS * dpr, hCSS * dpr)
|
||||
uniformDataRef.lightPos = anchor
|
||||
uniformDataRef.lightDir = dir
|
||||
})
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={containerRef}
|
||||
class={`spotlight-container ${props.class ?? ""}`.trim()}
|
||||
style={{ opacity: props.config().opacity }}
|
||||
/>
|
||||
)
|
||||
}
|
||||
29
qimingcode/packages/console/app/src/config.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Application-wide constants and configuration
|
||||
*/
|
||||
export const config = {
|
||||
// Base URL
|
||||
baseUrl: "https://opencode.ai",
|
||||
|
||||
// GitHub
|
||||
github: {
|
||||
repoUrl: "https://github.com/anomalyco/opencode",
|
||||
starsFormatted: {
|
||||
compact: "140K",
|
||||
full: "140,000",
|
||||
},
|
||||
},
|
||||
|
||||
// Social links
|
||||
social: {
|
||||
twitter: "https://x.com/opencode",
|
||||
discord: "https://discord.gg/opencode",
|
||||
},
|
||||
|
||||
// Static stats (used on landing page)
|
||||
stats: {
|
||||
contributors: "850",
|
||||
commits: "11,000",
|
||||
monthlyUsers: "6.5M",
|
||||
},
|
||||
} as const
|
||||
@@ -0,0 +1 @@
|
||||
export {}
|
||||
116
qimingcode/packages/console/app/src/context/auth.ts
Normal file
@@ -0,0 +1,116 @@
|
||||
import { getRequestEvent } from "solid-js/web"
|
||||
import { and, Database, eq, inArray, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js"
|
||||
import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js"
|
||||
import { redirect } from "@solidjs/router"
|
||||
import { Actor } from "@opencode-ai/console-core/actor.js"
|
||||
|
||||
import { createClient } from "@openauthjs/openauth/client"
|
||||
|
||||
export const AuthClient = createClient({
|
||||
clientID: "app",
|
||||
issuer: import.meta.env.VITE_AUTH_URL,
|
||||
})
|
||||
|
||||
import { useSession } from "@solidjs/start/http"
|
||||
import { Resource } from "@opencode-ai/console-resource"
|
||||
|
||||
export interface AuthSession {
|
||||
account?: Record<
|
||||
string,
|
||||
{
|
||||
id: string
|
||||
email: string
|
||||
}
|
||||
>
|
||||
current?: string
|
||||
}
|
||||
|
||||
export function useAuthSession() {
|
||||
return useSession<AuthSession>({
|
||||
password: Resource.ZEN_SESSION_SECRET.value,
|
||||
name: "auth",
|
||||
maxAge: 60 * 60 * 24 * 365,
|
||||
cookie: {
|
||||
secure: false,
|
||||
httpOnly: true,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export const getActor = async (workspace?: string): Promise<Actor.Info> => {
|
||||
"use server"
|
||||
const evt = getRequestEvent()
|
||||
if (!evt) throw new Error("No request event")
|
||||
if (evt.locals.actor) return evt.locals.actor
|
||||
evt.locals.actor = (async () => {
|
||||
const auth = await useAuthSession()
|
||||
if (!workspace) {
|
||||
const account = auth.data.account ?? {}
|
||||
const current = account[auth.data.current ?? ""]
|
||||
if (current) {
|
||||
return {
|
||||
type: "account",
|
||||
properties: {
|
||||
email: current.email,
|
||||
accountID: current.id,
|
||||
},
|
||||
}
|
||||
}
|
||||
if (Object.keys(account).length > 0) {
|
||||
const current = Object.values(account)[0]
|
||||
await auth.update((val) => ({
|
||||
...val,
|
||||
current: current.id,
|
||||
}))
|
||||
return {
|
||||
type: "account",
|
||||
properties: {
|
||||
email: current.email,
|
||||
accountID: current.id,
|
||||
},
|
||||
}
|
||||
}
|
||||
return {
|
||||
type: "public",
|
||||
properties: {},
|
||||
}
|
||||
}
|
||||
const accounts = Object.keys(auth.data.account ?? {})
|
||||
if (accounts.length) {
|
||||
const user = await Database.use((tx) =>
|
||||
tx
|
||||
.select()
|
||||
.from(UserTable)
|
||||
.where(
|
||||
and(
|
||||
eq(UserTable.workspaceID, workspace),
|
||||
isNull(UserTable.timeDeleted),
|
||||
inArray(UserTable.accountID, accounts),
|
||||
),
|
||||
)
|
||||
.limit(1)
|
||||
.execute()
|
||||
.then((x) => x[0]),
|
||||
)
|
||||
if (user) {
|
||||
await Database.use((tx) =>
|
||||
tx
|
||||
.update(UserTable)
|
||||
.set({ timeSeen: sql`now()` })
|
||||
.where(and(eq(UserTable.workspaceID, workspace), eq(UserTable.id, user.id))),
|
||||
)
|
||||
return {
|
||||
type: "user",
|
||||
properties: {
|
||||
userID: user.id,
|
||||
workspaceID: user.workspaceID,
|
||||
accountID: user.accountID,
|
||||
role: user.role,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
throw redirect("/auth/authorize")
|
||||
})()
|
||||
return evt.locals.actor
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { Actor } from "@opencode-ai/console-core/actor.js"
|
||||
import { getActor } from "./auth"
|
||||
|
||||
export async function withActor<T>(fn: () => T, workspace?: string) {
|
||||
const actor = await getActor(workspace)
|
||||
return Actor.provide(actor.type, actor.properties, fn)
|
||||
}
|
||||
27
qimingcode/packages/console/app/src/context/i18n.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { createMemo } from "solid-js"
|
||||
import { createSimpleContext } from "@opencode-ai/ui/context"
|
||||
import { i18n, type Key } from "~/i18n"
|
||||
import { useLanguage } from "~/context/language"
|
||||
|
||||
function resolve(text: string, params?: Record<string, string | number>) {
|
||||
if (!params) return text
|
||||
return text.replace(/\{\{(\w+)\}\}/g, (raw, key) => {
|
||||
const value = params[key]
|
||||
if (value === undefined || value === null) return raw
|
||||
return String(value)
|
||||
})
|
||||
}
|
||||
|
||||
export const { use: useI18n, provider: I18nProvider } = createSimpleContext({
|
||||
name: "I18n",
|
||||
init: () => {
|
||||
const language = useLanguage()
|
||||
const dict = createMemo(() => i18n(language.locale()))
|
||||
|
||||
return {
|
||||
t(key: Key, params?: Record<string, string | number>) {
|
||||
return resolve(dict()[key], params)
|
||||
},
|
||||
}
|
||||
},
|
||||
})
|
||||
72
qimingcode/packages/console/app/src/context/language.tsx
Normal file
@@ -0,0 +1,72 @@
|
||||
import { createEffect } from "solid-js"
|
||||
import { createStore } from "solid-js/store"
|
||||
import { getRequestEvent } from "solid-js/web"
|
||||
import { createSimpleContext } from "@opencode-ai/ui/context"
|
||||
import {
|
||||
LOCALES,
|
||||
type Locale,
|
||||
clearCookie,
|
||||
cookie,
|
||||
detectFromLanguages,
|
||||
dir as localeDir,
|
||||
label as localeLabel,
|
||||
localeFromCookieHeader,
|
||||
localeFromRequest,
|
||||
parseLocale,
|
||||
route as localeRoute,
|
||||
tag as localeTag,
|
||||
} from "~/lib/language"
|
||||
|
||||
function initial() {
|
||||
const evt = getRequestEvent()
|
||||
if (evt) return localeFromRequest(evt.request)
|
||||
|
||||
if (typeof document === "object") {
|
||||
const fromDom = parseLocale(document.documentElement.dataset.locale)
|
||||
if (fromDom) return fromDom
|
||||
|
||||
const fromCookie = localeFromCookieHeader(document.cookie)
|
||||
if (fromCookie) return fromCookie
|
||||
}
|
||||
|
||||
if (typeof navigator !== "object") return "en" satisfies Locale
|
||||
|
||||
const languages = navigator.languages?.length ? navigator.languages : [navigator.language]
|
||||
return detectFromLanguages(languages)
|
||||
}
|
||||
|
||||
export const { use: useLanguage, provider: LanguageProvider } = createSimpleContext({
|
||||
name: "Language",
|
||||
init: () => {
|
||||
const [store, setStore] = createStore({
|
||||
locale: initial(),
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
if (typeof document !== "object") return
|
||||
document.documentElement.lang = localeTag(store.locale)
|
||||
document.documentElement.dir = localeDir(store.locale)
|
||||
document.documentElement.dataset.locale = store.locale
|
||||
})
|
||||
|
||||
return {
|
||||
locale: () => store.locale,
|
||||
locales: LOCALES,
|
||||
label: localeLabel,
|
||||
tag: localeTag,
|
||||
dir: localeDir,
|
||||
route(pathname: string) {
|
||||
return localeRoute(store.locale, pathname)
|
||||
},
|
||||
setLocale(next: Locale) {
|
||||
setStore("locale", next)
|
||||
if (typeof document !== "object") return
|
||||
document.cookie = cookie(next)
|
||||
},
|
||||
clear() {
|
||||
if (typeof document !== "object") return
|
||||
document.cookie = clearCookie()
|
||||
},
|
||||
}
|
||||
},
|
||||
})
|
||||
4
qimingcode/packages/console/app/src/entry-client.tsx
Normal file
@@ -0,0 +1,4 @@
|
||||
// @refresh reload
|
||||
import { mount, StartClient } from "@solidjs/start/client"
|
||||
|
||||
mount(() => <StartClient />, document.getElementById("app")!)
|
||||
37
qimingcode/packages/console/app/src/entry-server.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// @refresh reload
|
||||
import { createHandler, StartServer } from "@solidjs/start/server"
|
||||
import { getRequestEvent } from "solid-js/web"
|
||||
import { dir, localeFromRequest, tag } from "~/lib/language"
|
||||
|
||||
const criticalCSS = `[data-component="top"]{min-height:80px;display:flex;align-items:center}`
|
||||
|
||||
export default createHandler(
|
||||
() => (
|
||||
<StartServer
|
||||
document={({ assets, children, scripts }) => {
|
||||
const evt = getRequestEvent()
|
||||
const locale = evt ? localeFromRequest(evt.request) : "en"
|
||||
|
||||
return (
|
||||
<html lang={tag(locale)} dir={dir(locale)} data-locale={locale}>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta property="og:image" content="/social-share.png" />
|
||||
<meta property="twitter:image" content="/social-share.png" />
|
||||
<style>{criticalCSS}</style>
|
||||
{assets}
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">{children}</div>
|
||||
{scripts}
|
||||
</body>
|
||||
</html>
|
||||
)
|
||||
}}
|
||||
/>
|
||||
),
|
||||
{
|
||||
mode: "async",
|
||||
},
|
||||
)
|
||||
5
qimingcode/packages/console/app/src/global.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/// <reference types="@solidjs/start/env" />
|
||||
|
||||
export declare module "@solidjs/start/server" {
|
||||
export type APIEvent = { request: Request }
|
||||
}
|
||||
779
qimingcode/packages/console/app/src/i18n/ar.ts
Normal file
@@ -0,0 +1,779 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "الوثائق",
|
||||
"nav.changelog": "سجل التغييرات",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "المؤسسات",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "تسجيل الدخول",
|
||||
"nav.free": "تحميل",
|
||||
"nav.home": "الرئيسية",
|
||||
"nav.openMenu": "فتح القائمة",
|
||||
"nav.getStartedFree": "ابدأ مجانا",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "نسخ الشعار كـ SVG",
|
||||
"nav.context.copyWordmark": "نسخ اسم العلامة كـ SVG",
|
||||
"nav.context.brandAssets": "أصول العلامة التجارية",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "الوثائق",
|
||||
"footer.changelog": "سجل التغييرات",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "العلامة التجارية",
|
||||
"legal.privacy": "الخصوصية",
|
||||
"legal.terms": "الشروط",
|
||||
|
||||
"email.title": "كن الأول في المعرفة عند إطلاق منتجات جديدة",
|
||||
"email.subtitle": "انضم إلى قائمة الانتظار للحصول على وصول مبكر.",
|
||||
"email.placeholder": "عنوان البريد الإلكتروني",
|
||||
"email.subscribe": "اشتراك",
|
||||
"email.success": "تبقّت خطوة واحدة: تحقق من بريدك وأكّد عنوانك",
|
||||
|
||||
"notFound.title": "غير موجود | opencode",
|
||||
"notFound.heading": "404 - الصفحة غير موجودة",
|
||||
"notFound.home": "الرئيسية",
|
||||
"notFound.docs": "الوثائق",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "شعار opencode الفاتح",
|
||||
"notFound.logoDarkAlt": "شعار opencode الداكن",
|
||||
|
||||
"user.logout": "تسجيل الخروج",
|
||||
|
||||
"auth.callback.error.codeMissing": "لم يتم العثور على رمز التفويض.",
|
||||
|
||||
"workspace.select": "اختر مساحة العمل",
|
||||
"workspace.createNew": "+ إنشاء مساحة عمل جديدة",
|
||||
"workspace.modal.title": "إنشاء مساحة عمل جديدة",
|
||||
"workspace.modal.placeholder": "أدخل اسم مساحة العمل",
|
||||
|
||||
"common.cancel": "إلغاء",
|
||||
"common.creating": "جارٍ الإنشاء...",
|
||||
"common.create": "إنشاء",
|
||||
|
||||
"common.videoUnsupported": "متصفحك لا يدعم وسم الفيديو.",
|
||||
"common.figure": "شكل {{n}}.",
|
||||
"common.faq": "الأسئلة الشائعة",
|
||||
"common.learnMore": "اعرف المزيد",
|
||||
|
||||
"error.invalidPlan": "خطة غير صالحة",
|
||||
"error.workspaceRequired": "معرف مساحة العمل مطلوب",
|
||||
"error.alreadySubscribed": "مساحة العمل هذه لديها اشتراك بالفعل",
|
||||
"error.limitRequired": "الحد مطلوب.",
|
||||
"error.monthlyLimitInvalid": "قم بتعيين حد شهري صالح.",
|
||||
"error.workspaceNameRequired": "اسم مساحة العمل مطلوب.",
|
||||
"error.nameTooLong": "يجب أن يكون الاسم 255 حرفًا أو أقل.",
|
||||
"error.emailRequired": "البريد الإلكتروني مطلوب",
|
||||
"error.roleRequired": "الدور مطلوب",
|
||||
"error.idRequired": "المعرف مطلوب",
|
||||
"error.nameRequired": "الاسم مطلوب",
|
||||
"error.providerRequired": "المزود مطلوب",
|
||||
"error.apiKeyRequired": "مفتاح API مطلوب",
|
||||
"error.modelRequired": "النموذج مطلوب",
|
||||
"error.reloadAmountMin": "يجب أن يكون مبلغ الشحن ${{amount}} على الأقل",
|
||||
"error.reloadTriggerMin": "يجب أن يكون حد الرصيد ${{amount}} على الأقل",
|
||||
|
||||
"app.meta.description": "OpenCode - وكيل البرمجة مفتوح المصدر.",
|
||||
|
||||
"home.title": "OpenCode | وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر",
|
||||
|
||||
"temp.title": "opencode | وكيل برمجة بالذكاء الاصطناعي مبني للطرفية",
|
||||
"temp.hero.title": "وكيل البرمجة بالذكاء الاصطناعي المبني للطرفية",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "ابدأ",
|
||||
"temp.feature.native.title": "واجهة طرفية أصلية",
|
||||
"temp.feature.native.body": "واجهة مستخدم طرفية سريعة الاستجابة، أصلية، وقابلة للتخصيص",
|
||||
"temp.feature.zen.beforeLink": "قائمة",
|
||||
"temp.feature.zen.link": "منسقة من النماذج",
|
||||
"temp.feature.zen.afterLink": "مقدمة من opencode",
|
||||
"temp.feature.models.beforeLink": "يدعم أكثر من 75 مزود LLM من خلال",
|
||||
"temp.feature.models.afterLink": "، بما في ذلك النماذج المحلية",
|
||||
"temp.screenshot.caption": "واجهة OpenCode الطرفية مع سمة tokyonight",
|
||||
"temp.screenshot.alt": "واجهة OpenCode الطرفية بسمة tokyonight",
|
||||
"temp.logoLightAlt": "شعار opencode الفاتح",
|
||||
"temp.logoDarkAlt": "شعار opencode الداكن",
|
||||
|
||||
"home.banner.badge": "جديد",
|
||||
"home.banner.text": "تطبيق سطح المكتب متاح بنسخة تجريبية",
|
||||
"home.banner.platforms": "على macOS، Windows، وLinux",
|
||||
"home.banner.downloadNow": "حمّل الآن",
|
||||
"home.banner.downloadBetaNow": "حمّل النسخة التجريبية لتطبيق سطح المكتب الآن",
|
||||
|
||||
"home.hero.title": "وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر",
|
||||
"home.hero.subtitle.a": "نماذج مجانية مضمّنة أو اربط أي نموذج من أي مزوّد،",
|
||||
"home.hero.subtitle.b": "بما في ذلك Claude، GPT، Gemini وغيرها.",
|
||||
|
||||
"home.install.ariaLabel": "خيارات التثبيت",
|
||||
|
||||
"home.what.title": "ما هو OpenCode؟",
|
||||
"home.what.body": "OpenCode وكيل مفتوح المصدر يساعدك على كتابة الكود في الطرفية، IDE، أو سطح المكتب.",
|
||||
"home.what.lsp.title": "دعم LSP",
|
||||
"home.what.lsp.body": "يحمّل تلقائيًا موافقات LSP المناسبة للـ LLM",
|
||||
"home.what.multiSession.title": "جلسات متعددة",
|
||||
"home.what.multiSession.body": "ابدأ عدة وكلاء بالتوازي على نفس المشروع",
|
||||
"home.what.shareLinks.title": "روابط المشاركة",
|
||||
"home.what.shareLinks.body": "شارك رابطًا لأي جلسة للرجوع إليها أو لتصحيح الأخطاء",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "سجّل الدخول بـ GitHub لاستخدام حسابك في Copilot",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "سجّل الدخول بـ OpenAI لاستخدام حسابك في ChatGPT Plus أو Pro",
|
||||
"home.what.anyModel.title": "أي نموذج",
|
||||
"home.what.anyModel.body": "75+ مزوّد LLM عبر Models.dev، بما في ذلك النماذج المحلية",
|
||||
"home.what.anyEditor.title": "أي محرر",
|
||||
"home.what.anyEditor.body": "متاح كواجهة طرفية، وتطبيق سطح مكتب، وامتداد IDE",
|
||||
"home.what.readDocs": "اقرأ الوثائق",
|
||||
|
||||
"home.growth.title": "وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر",
|
||||
"home.growth.body":
|
||||
"مع أكثر من <strong>{{stars}}</strong> نجمة على GitHub، و<strong>{{contributors}}</strong> مساهمًا، وأكثر من <strong>{{commits}}</strong> Commit، يستخدم OpenCode ويثق به أكثر من <strong>{{monthlyUsers}}</strong> مطوّر كل شهر.",
|
||||
"home.growth.githubStars": "نجوم GitHub",
|
||||
"home.growth.contributors": "المساهمون",
|
||||
"home.growth.monthlyDevs": "مطورون شهريًا",
|
||||
|
||||
"home.privacy.title": "مصمم للخصوصية أولاً",
|
||||
"home.privacy.body": "لا يخزّن OpenCode أي كود أو بيانات سياق، ليتمكن من العمل في بيئات حساسة للخصوصية.",
|
||||
"home.privacy.learnMore": "اعرف المزيد عن",
|
||||
"home.privacy.link": "الخصوصية",
|
||||
|
||||
"home.faq.q1": "ما هو OpenCode؟",
|
||||
"home.faq.a1":
|
||||
"OpenCode وكيل مفتوح المصدر يساعدك على كتابة وتشغيل الكود مع أي نموذج ذكاء اصطناعي. متاح كواجهة طرفية، وتطبيق سطح مكتب، أو امتداد IDE.",
|
||||
"home.faq.q2": "كيف أستخدم OpenCode؟",
|
||||
"home.faq.a2.before": "أسهل طريقة للبدء هي قراءة",
|
||||
"home.faq.a2.link": "المقدمة",
|
||||
"home.faq.q3": "هل أحتاج لاشتراكات ذكاء اصطناعي إضافية لاستخدام OpenCode؟",
|
||||
"home.faq.a3.p1":
|
||||
"ليس بالضرورة، فـ OpenCode يأتي مع مجموعة من النماذج المجانية التي تستطيع استخدامها دون إنشاء حساب.",
|
||||
"home.faq.a3.p2.beforeZen": "وبخلاف ذلك، يمكنك استخدام أي من نماذج البرمجة الشائعة بإنشاء حساب",
|
||||
"home.faq.a3.p2.afterZen": ".",
|
||||
"home.faq.a3.p3":
|
||||
"مع أننا نشجّع المستخدمين على استخدام Zen، فإن OpenCode يعمل أيضًا مع كل المزودين الشائعين مثل OpenAI، Anthropic، xAI إلخ.",
|
||||
"home.faq.a3.p4.beforeLocal": "ويمكنك أيضًا ربط",
|
||||
"home.faq.a3.p4.localLink": "النماذج المحلية",
|
||||
"home.faq.q4": "هل يمكنني استخدام اشتراكاتي الحالية مع OpenCode؟",
|
||||
"home.faq.a4.p1":
|
||||
"نعم، يدعم OpenCode خطط الاشتراك من كل المزودين الرئيسيين. يمكنك استخدام اشتراكات Claude Pro/Max، ChatGPT Plus/Pro، أو GitHub Copilot.",
|
||||
"home.faq.q5": "هل يمكنني استخدام OpenCode في الطرفية فقط؟",
|
||||
"home.faq.a5.beforeDesktop": "ليس بعد الآن! OpenCode متاح الآن كتطبيق لـ",
|
||||
"home.faq.a5.desktop": "سطح المكتب",
|
||||
"home.faq.a5.and": "و",
|
||||
"home.faq.a5.web": "الويب",
|
||||
"home.faq.q6": "كم تكلفة OpenCode؟",
|
||||
"home.faq.a6":
|
||||
"OpenCode مجاني 100% للاستخدام. كما يأتي مع مجموعة من النماذج المجانية. قد توجد تكاليف إضافية إذا ربطت مزوّدًا آخر.",
|
||||
"home.faq.q7": "ماذا عن البيانات والخصوصية؟",
|
||||
"home.faq.a7.p1": "لا يتم تخزين بياناتك ومعلوماتك إلا عندما تستخدم نماذجنا المجانية أو تنشئ روابط قابلة للمشاركة.",
|
||||
"home.faq.a7.p2.beforeModels": "اعرف المزيد عن",
|
||||
"home.faq.a7.p2.modelsLink": "نماذجنا",
|
||||
"home.faq.a7.p2.and": "و",
|
||||
"home.faq.a7.p2.shareLink": "صفحات المشاركة",
|
||||
"home.faq.q8": "هل OpenCode مفتوح المصدر؟",
|
||||
"home.faq.a8.p1": "نعم، OpenCode مفتوح المصدر بالكامل. الكود المصدري متاح علنًا على",
|
||||
"home.faq.a8.p2": "بموجب",
|
||||
"home.faq.a8.mitLicense": "رخصة MIT",
|
||||
"home.faq.a8.p3":
|
||||
"، مما يعني أن أي شخص يستطيع استخدامه أو تعديله أو المساهمة في تطويره. يمكن لأي شخص من المجتمع فتح قضايا، وتقديم طلبات سحب، وتوسيع الوظائف.",
|
||||
|
||||
"home.zenCta.title": "وصول لنماذج محسنة وموثوقة لوكلاء البرمجة",
|
||||
"home.zenCta.body":
|
||||
"يمنحك Zen الوصول إلى مجموعة مختارة بعناية من نماذج الذكاء الاصطناعي التي اختبرها OpenCode وقاس أداءها خصيصًا لوكلاء البرمجة. لا حاجة للقلق بشأن اختلاف الأداء والجودة بين المزودين، استخدم نماذج محققة تعمل بكفاءة.",
|
||||
"home.zenCta.link": "تعرف على Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | مجموعة منسقة من النماذج المحسنة والموثوقة لوكلاء البرمجة",
|
||||
"zen.hero.title": "نماذج محسنة وموثوقة لوكلاء البرمجة",
|
||||
"zen.hero.body":
|
||||
"يمنحك Zen الوصول إلى مجموعة منسقة من نماذج الذكاء الاصطناعي التي اختبرها OpenCode وقاس أداءها خصيصًا لوكلاء البرمجة. لا حاجة للقلق بشأن اختلاف الأداء والجودة، استخدم نماذج محققة تعمل بكفاءة.",
|
||||
|
||||
"zen.faq.q1": "ما هو OpenCode Zen؟",
|
||||
"zen.faq.a1":
|
||||
"Zen هو مجموعة منسقة من نماذج الذكاء الاصطناعي التي تم اختبارها وقياس أدائها لوكلاء البرمجة، أنشأها الفريق المطور لـ OpenCode.",
|
||||
"zen.faq.q2": "ما الذي يجعل Zen أكثر دقة؟",
|
||||
"zen.faq.a2":
|
||||
"يوفر Zen فقط النماذج التي تم اختبارها وقياس أدائها خصيصًا لوكلاء البرمجة. لن تستخدم سكين زبدة لقطع شريحة لحم، فلا تستخدم نماذج ضعيفة للبرمجة.",
|
||||
"zen.faq.q3": "هل Zen أرخص؟",
|
||||
"zen.faq.a3":
|
||||
"Zen ليس للربح. يمرر Zen التكاليف من مزودي النماذج إليك مباشرة. كلما زاد استخدام Zen، تمكن OpenCode من التفاوض على أسعار أفضل وتمريرها إليك.",
|
||||
"zen.faq.q4": "كم تكلفة Zen؟",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "يحاسب لكل طلب",
|
||||
"zen.faq.a4.p1.afterPricing": "بدون أي هوامش ربح، لذا تدفع بالضبط ما يفرضه مزود النموذج.",
|
||||
"zen.faq.a4.p2.beforeAccount": "تعتمد تكلفتك الإجمالية على الاستخدام، ويمكنك تعيين حدود إنفاق شهرية في",
|
||||
"zen.faq.a4.p2.accountLink": "حسابك",
|
||||
"zen.faq.a4.p3":
|
||||
"لتغطية التكاليف، يضيف OpenCode فقط رسومًا صغيرة لمعالجة الدفع قدرها 1.23 دولار لكل إعادة شحن رصيد بقيمة 20 دولارًا.",
|
||||
"zen.faq.q5": "ماذا عن البيانات والخصوصية؟",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"تتم استضافة جميع نماذج Zen في الولايات المتحدة. يتبع المزودون سياسة عدم الاحتفاظ بالبيانات ولا يستخدمون بياناتك لتدريب النماذج، مع",
|
||||
"zen.faq.a5.exceptionsLink": "الاستثناءات التالية",
|
||||
"zen.faq.q6": "هل يمكنني تعيين حدود للإنفاق؟",
|
||||
"zen.faq.a6": "نعم، يمكنك تعيين حدود إنفاق شهرية في حسابك.",
|
||||
"zen.faq.q7": "هل يمكنني الإلغاء؟",
|
||||
"zen.faq.a7": "نعم، يمكنك تعطيل الفوترة في أي وقت واستخدام رصيدك المتبقي.",
|
||||
"zen.faq.q8": "هل يمكنني استخدام Zen مع وكلاء برمجة آخرين؟",
|
||||
"zen.faq.a8":
|
||||
"بينما يعمل Zen بشكل رائع مع OpenCode، يمكنك استخدام Zen مع أي وكيل. اتبع تعليمات الإعداد في وكيل البرمجة المفضل لديك.",
|
||||
|
||||
"zen.cta.start": "ابدأ مع Zen",
|
||||
"zen.pricing.title": "أضف رصيد 20 دولار (دفع حسب الاستخدام)",
|
||||
"zen.pricing.fee": "(+1.23 دولار رسوم معالجة البطاقة)",
|
||||
"zen.pricing.body": "استخدمه مع أي وكيل. عيّن حدود الإنفاق الشهري. ألغِ في أي وقت.",
|
||||
"zen.problem.title": "ما المشكلة التي يحلها Zen؟",
|
||||
"zen.problem.body":
|
||||
"هناك العديد من النماذج المتاحة، ولكن القليل منها فقط يعمل بشكل جيد مع وكلاء البرمجة. يقوم معظم مقدمي الخدمة بتكوينها بشكل مختلف مما يعطي نتائج متفاوتة.",
|
||||
"zen.problem.subtitle": "نحن نعمل على إصلاح هذا للجميع، وليس فقط لمستخدمي OpenCode.",
|
||||
"zen.problem.item1": "اختبار نماذج مختارة واستشارة فرقها",
|
||||
"zen.problem.item2": "العمل مع مقدمي الخدمة لضمان تسليمها بشكل صحيح",
|
||||
"zen.problem.item3": "قياس أداء جميع مجموعات النماذج والمزودين التي نوصي بها",
|
||||
"zen.how.title": "كيف يعمل Zen",
|
||||
"zen.how.body": "بينما نقترح عليك استخدام Zen مع OpenCode، يمكنك استخدام Zen مع أي وكيل.",
|
||||
"zen.how.step1.title": "سجّل وأضف رصيدًا بقيمة 20 دولارًا",
|
||||
"zen.how.step1.beforeLink": "اتبع",
|
||||
"zen.how.step1.link": "تعليمات الإعداد",
|
||||
"zen.how.step2.title": "استخدم Zen بتسعير شفاف",
|
||||
"zen.how.step2.link": "ادفع لكل طلب",
|
||||
"zen.how.step2.afterLink": "بدون أي هوامش ربح",
|
||||
"zen.how.step3.title": "شحن تلقائي",
|
||||
"zen.how.step3.body": "عندما يصل رصيدك إلى 5 دولارات، سنضيف تلقائيًا 20 دولارًا",
|
||||
"zen.privacy.title": "خصوصيتك مهمة بالنسبة لنا",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"تتم استضافة جميع نماذج Zen في الولايات المتحدة. يتبع المزودون سياسة عدم الاحتفاظ بالبيانات ولا يستخدمون بياناتك لتدريب النماذج، مع",
|
||||
"zen.privacy.exceptionsLink": "الاستثناءات التالية",
|
||||
|
||||
"go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع",
|
||||
"go.meta.description":
|
||||
"يبدأ Go من $5 للشهر الأول، ثم $10/شهر، مع حدود طلب سخية لمدة 5 ساعات لـ GLM-5.1 وGLM-5 وKimi K2.5 وKimi K2.6 وMiMo-V2-Pro وMiMo-V2-Omni وMiMo-V2.5-Pro وMiMo-V2.5 وQwen3.5 Plus وQwen3.6 Plus وMiniMax M2.5 وMiniMax M2.7 وDeepSeek V4 Pro وDeepSeek V4 Flash.",
|
||||
"go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع",
|
||||
"go.hero.body":
|
||||
"يجلب Go البرمجة الوكيلة للمبرمجين حول العالم. يوفر حدودًا سخية ووصولًا موثوقًا إلى أقوى النماذج مفتوحة المصدر، حتى تتمكن من البناء باستخدام وكلاء أقوياء دون القلق بشأن التكلفة أو التوفر.",
|
||||
|
||||
"go.cta.start": "اشترك في Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "اشترك في Go",
|
||||
"go.cta.price": "$10/شهر",
|
||||
"go.cta.promo": "$5 للشهر الأول",
|
||||
"go.pricing.body":
|
||||
"استخدمه مع أي وكيل. $5 للشهر الأول، ثم $10/شهر. قم بزيادة الرصيد إذا لزم الأمر. الإلغاء في أي وقت.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: حد الاستخدام 3 أضعاف حتى 27 أبريل",
|
||||
"go.graph.free": "مجاني",
|
||||
"go.graph.freePill": "Big Pickle ونماذج مجانية",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "الطلبات كل 5 ساعات",
|
||||
"go.graph.usageLimits": "حدود الاستخدام",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "الطلبات كل 5 ساعات: {{free}} مقابل {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "الرئيس التنفيذي السابق، منتجات Terminal",
|
||||
"go.testimonials.dax.quoteAfter": "كان تغييرًا جذريًا في الحياة، إنه قرار لا يحتاج لتفكير.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "مؤسس سابق، SEED، PM، Melt، Pop، Dapt، Cadmus، وViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 من كل 5 أشخاص في فريقنا يحبون استخدام",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "بطل سابق، AWS",
|
||||
"go.testimonials.adam.quoteBefore": "لا أستطيع التوصية بـ",
|
||||
"go.testimonials.adam.quoteAfter": "بما فيه الكفاية. بجدية، إنه جيد حقًا.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "رئيس التصميم السابق، Laravel",
|
||||
"go.testimonials.david.quoteBefore": "مع",
|
||||
"go.testimonials.david.quoteAfter": "أعلم أن جميع النماذج مختبرة ومثالية لوكلاء البرمجة.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "متدرب سابق، Nvidia (4 مرات)",
|
||||
"go.testimonials.frank.quote": "أتمنى لو كنت لا أزال في Nvidia.",
|
||||
"go.problem.title": "ما المشكلة التي يحلها Go؟",
|
||||
"go.problem.body":
|
||||
"نحن نركز على تقديم تجربة OpenCode لأكبر عدد ممكن من الناس. OpenCode Go هو اشتراك منخفض التكلفة: $5 للشهر الأول، ثم $10/شهر. يوفر حدودا سخية ووصولا موثوقا إلى نماذج المصدر المفتوح الأكثر قدرة.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "أسعار اشتراك منخفضة التكلفة",
|
||||
"go.problem.item2": "حدود سخية ووصول موثوق",
|
||||
"go.problem.item3": "مصمم لأكبر عدد ممكن من المبرمجين",
|
||||
"go.problem.item4":
|
||||
"يتضمن GLM-5.1 وGLM-5 وKimi K2.5 وKimi K2.6 وMiMo-V2-Pro وMiMo-V2-Omni وMiMo-V2.5-Pro وMiMo-V2.5 وQwen3.5 Plus وQwen3.6 Plus وMiniMax M2.5 وMiniMax M2.7 وDeepSeek V4 Pro وDeepSeek V4 Flash",
|
||||
"go.how.title": "كيف يعمل Go",
|
||||
"go.how.body": "يبدأ Go من $5 للشهر الأول، ثم $10/شهر. يمكنك استخدامه مع OpenCode أو أي وكيل.",
|
||||
"go.how.step1.title": "أنشئ حسابًا",
|
||||
"go.how.step1.beforeLink": "اتبع",
|
||||
"go.how.step1.link": "تعليمات الإعداد",
|
||||
"go.how.step2.title": "اشترك في Go",
|
||||
"go.how.step2.link": "$5 للشهر الأول",
|
||||
"go.how.step2.afterLink": "ثم $10/شهر مع حدود سخية",
|
||||
"go.how.step3.title": "ابدأ البرمجة",
|
||||
"go.how.step3.body": "مع وصول موثوق لنماذج مفتوحة المصدر",
|
||||
"go.privacy.title": "خصوصيتك مهمة بالنسبة لنا",
|
||||
"go.privacy.body":
|
||||
"تم تصميم الخطة بشكل أساسي للمستخدمين الدوليين، مع استضافة النماذج في الولايات المتحدة والاتحاد الأوروبي وسنغافورة للحصول على وصول عالمي مستقر.",
|
||||
"go.privacy.contactAfter": "إذا كان لديك أي أسئلة.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"تتم استضافة نماذج Go في الولايات المتحدة. يتبع المزودون سياسة عدم الاحتفاظ بالبيانات ولا يستخدمون بياناتك لتدريب النماذج، مع",
|
||||
"go.privacy.exceptionsLink": "الاستثناءات التالية",
|
||||
"go.faq.q1": "ما هو OpenCode Go؟",
|
||||
"go.faq.a1": "Go هو اشتراك منخفض التكلفة يمنحك وصولًا موثوقًا إلى نماذج مفتوحة المصدر قادرة على البرمجة الوكيلة.",
|
||||
"go.faq.q2": "ما النماذج التي يتضمنها Go؟",
|
||||
"go.faq.a2": "يتضمن Go النماذج المدرجة أدناه، مع حدود سخية وإتاحة موثوقة.",
|
||||
"go.faq.q3": "هل Go هو نفسه Zen؟",
|
||||
"go.faq.a3":
|
||||
"لا. Zen هو الدفع حسب الاستخدام، بينما يبدأ Go من $5 للشهر الأول، ثم $10/شهر، مع حدود سخية ووصول موثوق إلى نماذج المصدر المفتوح GLM-5.1 وGLM-5 وKimi K2.5 وKimi K2.6 وMiMo-V2-Pro وMiMo-V2-Omni وMiMo-V2.5-Pro وMiMo-V2.5 وQwen3.5 Plus وQwen3.6 Plus وMiniMax M2.5 وMiniMax M2.7 وDeepSeek V4 Pro وDeepSeek V4 Flash.",
|
||||
"go.faq.q4": "كم تكلفة Go؟",
|
||||
"go.faq.a4.p1.beforePricing": "تكلفة Go",
|
||||
"go.faq.a4.p1.pricingLink": "$5 للشهر الأول",
|
||||
"go.faq.a4.p1.afterPricing": "ثم $10/شهر مع حدود سخية.",
|
||||
"go.faq.a4.p2.beforeAccount": "يمكنك إدارة اشتراكك في",
|
||||
"go.faq.a4.p2.accountLink": "حسابك",
|
||||
"go.faq.a4.p3": "ألغِ في أي وقت.",
|
||||
"go.faq.q5": "ماذا عن البيانات والخصوصية؟",
|
||||
"go.faq.a5.body":
|
||||
"تم تصميم الخطة بشكل أساسي للمستخدمين الدوليين، مع استضافة النماذج في الولايات المتحدة والاتحاد الأوروبي وسنغافورة للحصول على وصول عالمي مستقر. يتبع مزودونا سياسة عدم الاحتفاظ بالبيانات ولا يستخدمون بياناتك لتدريب النماذج.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"تتم استضافة نماذج Go في الولايات المتحدة. يتبع المزودون سياسة عدم الاحتفاظ بالبيانات ولا يستخدمون بياناتك لتدريب النماذج، مع",
|
||||
"go.faq.a5.exceptionsLink": "الاستثناءات التالية",
|
||||
"go.faq.q6": "هل يمكنني شحن رصيد إضافي؟",
|
||||
"go.faq.a6": "إذا كنت بحاجة إلى مزيد من الاستخدام، يمكنك شحن رصيد في حسابك.",
|
||||
"go.faq.q7": "هل يمكنني الإلغاء؟",
|
||||
"go.faq.a7": "نعم، يمكنك الإلغاء في أي وقت.",
|
||||
"go.faq.q8": "هل يمكنني استخدام Go مع وكلاء برمجة آخرين؟",
|
||||
"go.faq.a8": "نعم، يمكنك استخدام Go مع أي وكيل. اتبع تعليمات الإعداد في وكيل البرمجة المفضل لديك.",
|
||||
|
||||
"go.faq.q9": "ما الفرق بين النماذج المجانية وGo؟",
|
||||
"go.faq.a9":
|
||||
"تشمل النماذج المجانية Big Pickle بالإضافة إلى النماذج الترويجية المتاحة في ذلك الوقت، مع حصة 200 طلب/يوم. يتضمن Go نماذج GLM-5.1 وGLM-5 وKimi K2.5 وKimi K2.6 وMiMo-V2-Pro وMiMo-V2-Omni وMiMo-V2.5-Pro وMiMo-V2.5 وQwen3.5 Plus وQwen3.6 Plus وMiniMax M2.5 وMiniMax M2.7 وDeepSeek V4 Pro وDeepSeek V4 Flash مع حصص طلبات أعلى مطبقة عبر نوافذ متجددة (5 ساعات، أسبوعيًا، وشهريًا)، تعادل تقريبًا 12 دولارًا كل 5 ساعات، و30 دولارًا في الأسبوع، و60 دولارًا في الشهر (تختلف أعداد الطلبات الفعلية حسب النموذج والاستخدام).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "تم تجاوز حد الطلبات. يرجى المحاولة مرة أخرى لاحقًا.",
|
||||
"zen.api.error.modelNotSupported": "النموذج {{model}} غير مدعوم",
|
||||
"zen.api.error.modelFormatNotSupported": "النموذج {{model}} غير مدعوم للتنسيق {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "لا يوجد مزود متاح",
|
||||
"zen.api.error.providerNotSupported": "المزود {{provider}} غير مدعوم",
|
||||
"zen.api.error.missingApiKey": "مفتاح API مفقود.",
|
||||
"zen.api.error.invalidApiKey": "مفتاح API غير صالح.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "تم تجاوز حصة الاشتراك. أعد المحاولة خلال {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"تم تجاوز حصة الاشتراك. يمكنك الاستمرار في استخدام النماذج المجانية.",
|
||||
"zen.api.error.noPaymentMethod": "لا توجد طريقة دفع. أضف طريقة دفع هنا: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "رصيد غير كاف. إدارة فواتيرك هنا: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"وصلت مساحة العمل الخاصة بك إلى حد الإنفاق الشهري البالغ ${{amount}}. إدارة حدودك هنا: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"لقد وصلت إلى حد الإنفاق الشهري البالغ ${{amount}}. إدارة حدودك هنا: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "النموذج معطل",
|
||||
"zen.api.error.trialEnded":
|
||||
"انتهى العرض المجاني لـ {{model}}. يمكنك مواصلة استخدام النموذج بالاشتراك في OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | الوصول إلى أفضل نماذج البرمجة في العالم",
|
||||
"black.meta.description": "احصل على وصول إلى Claude، GPT، Gemini والمزيد مع خطط اشتراك OpenCode Black.",
|
||||
"black.hero.title": "الوصول إلى أفضل نماذج البرمجة في العالم",
|
||||
"black.hero.subtitle": "بما في ذلك Claude، GPT، Gemini والمزيد",
|
||||
"black.title": "OpenCode Black | الأسعار",
|
||||
"black.paused": "التسجيل في خطة Black متوقف مؤقتًا.",
|
||||
"black.plan.icon20": "خطة Black 20",
|
||||
"black.plan.icon100": "خطة Black 100",
|
||||
"black.plan.icon200": "خطة Black 200",
|
||||
"black.plan.multiplier100": "استخدام أكثر بـ 5 أضعاف من Black 20",
|
||||
"black.plan.multiplier200": "استخدام أكثر بـ 20 ضعفًا من Black 20",
|
||||
"black.price.perMonth": "شهريًا",
|
||||
"black.price.perPersonBilledMonthly": "للشخص الواحد، يُفوتر شهريًا",
|
||||
"black.terms.1": "لن يبدأ اشتراكك على الفور",
|
||||
"black.terms.2": "ستتم إضافتك إلى قائمة الانتظار وتفعيلك قريبًا",
|
||||
"black.terms.3": "لن يتم خصم المبلغ من بطاقتك إلا عند تفعيل اشتراكك",
|
||||
"black.terms.4": "تطبق حدود الاستخدام، وقد يصل الاستخدام المؤتمت بكثافة إلى الحدود بشكل أسرع",
|
||||
"black.terms.5": "الاشتراكات للأفراد، تواصل مع قسم المؤسسات للفرق",
|
||||
"black.terms.6": "قد يتم تعديل الحدود وقد يتم إيقاف الخطط في المستقبل",
|
||||
"black.terms.7": "ألغِ اشتراكك في أي وقت",
|
||||
"black.action.continue": "متابعة",
|
||||
"black.finePrint.beforeTerms": "الأسعار المعروضة لا تشمل الضرائب المطبقة",
|
||||
"black.finePrint.terms": "شروط الخدمة",
|
||||
"black.workspace.title": "OpenCode Black | اختر مساحة العمل",
|
||||
"black.workspace.selectPlan": "اختر مساحة عمل لهذه الخطة",
|
||||
"black.workspace.name": "مساحة العمل {{n}}",
|
||||
"black.subscribe.title": "اشترك في OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "طريقة الدفع",
|
||||
"black.subscribe.loadingPaymentForm": "جارٍ تحميل نموذج الدفع...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "اختر مساحة عمل للمتابعة",
|
||||
"black.subscribe.failurePrefix": "أوه لا!",
|
||||
"black.subscribe.error.generic": "حدث خطأ",
|
||||
"black.subscribe.error.invalidPlan": "خطة غير صالحة",
|
||||
"black.subscribe.error.workspaceRequired": "معرف مساحة العمل مطلوب",
|
||||
"black.subscribe.error.alreadySubscribed": "مساحة العمل هذه لديها اشتراك بالفعل",
|
||||
"black.subscribe.processing": "جارٍ المعالجة...",
|
||||
"black.subscribe.submit": "اشترك بمبلغ ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "لن يتم خصم المبلغ إلا عند تفعيل اشتراكك",
|
||||
"black.subscribe.success.title": "أنت في قائمة انتظار OpenCode Black",
|
||||
"black.subscribe.success.subscriptionPlan": "خطة الاشتراك",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "المبلغ",
|
||||
"black.subscribe.success.amountValue": "${{plan}} شهريًا",
|
||||
"black.subscribe.success.paymentMethod": "طريقة الدفع",
|
||||
"black.subscribe.success.dateJoined": "تاريخ الانضمام",
|
||||
"black.subscribe.success.chargeNotice": "سيتم خصم المبلغ من بطاقتك عند تفعيل اشتراكك",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "الاستخدام",
|
||||
"workspace.nav.apiKeys": "مفاتيح API",
|
||||
"workspace.nav.members": "الأعضاء",
|
||||
"workspace.nav.billing": "الفوترة",
|
||||
"workspace.nav.settings": "الإعدادات",
|
||||
|
||||
"workspace.home.banner.beforeLink": "نماذج محسنة وموثوقة لوكلاء البرمجة.",
|
||||
"workspace.lite.banner.beforeLink": "نماذج برمجة منخفضة التكلفة للجميع.",
|
||||
"workspace.home.billing.loading": "جارٍ التحميل...",
|
||||
"workspace.home.billing.enable": "تمكين الفوترة",
|
||||
"workspace.home.billing.currentBalance": "الرصيد الحالي",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "نماذج مُختبرة ومحققة",
|
||||
"workspace.newUser.feature.tested.body": "لقد قمنا بقياس واختبار النماذج خصيصًا لوكلاء البرمجة لضمان أفضل أداء.",
|
||||
"workspace.newUser.feature.quality.title": "أعلى جودة",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"الوصول إلى النماذج التي تم تكوينها لتحقيق الأداء الأمثل - لا تقليل للجودة أو توجيه إلى موفري خدمة أرخص.",
|
||||
"workspace.newUser.feature.lockin.title": "لا قيود على المزود",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"استخدم Zen مع أي وكيل برمجة، واستمر في استخدام موفرين آخرين مع opencode وقتما تشاء.",
|
||||
"workspace.newUser.copyApiKey": "نسخ مفتاح API",
|
||||
"workspace.newUser.copyKey": "نسخ المفتاح",
|
||||
"workspace.newUser.copied": "تم النسخ!",
|
||||
"workspace.newUser.step.enableBilling": "تمكين الفوترة",
|
||||
"workspace.newUser.step.login.before": "شغّل",
|
||||
"workspace.newUser.step.login.after": "واختر opencode",
|
||||
"workspace.newUser.step.pasteKey": "الصق مفتاح API الخاص بك",
|
||||
"workspace.newUser.step.models.before": "ابدأ opencode ثم نفّذ",
|
||||
"workspace.newUser.step.models.after": "لاختيار نموذج",
|
||||
|
||||
"workspace.models.title": "النماذج",
|
||||
"workspace.models.subtitle.beforeLink": "إدارة النماذج التي يمكن لأعضاء مساحة العمل الوصول إليها.",
|
||||
"workspace.models.table.model": "النموذج",
|
||||
"workspace.models.table.enabled": "ممكّن",
|
||||
|
||||
"workspace.providers.title": "أحضر مفتاحك الخاص",
|
||||
"workspace.providers.subtitle": "قم بتكوين مفاتيح API الخاصة بك من موفري الذكاء الاصطناعي.",
|
||||
"workspace.providers.placeholder": "أدخل مفتاح API لـ {{provider}} ({{prefix}}...)",
|
||||
"workspace.providers.configure": "تكوين",
|
||||
"workspace.providers.edit": "تعديل",
|
||||
"workspace.providers.delete": "حذف",
|
||||
"workspace.providers.saving": "جارٍ الحفظ...",
|
||||
"workspace.providers.save": "حفظ",
|
||||
"workspace.providers.table.provider": "المزود",
|
||||
"workspace.providers.table.apiKey": "مفتاح API",
|
||||
|
||||
"workspace.usage.title": "تاريخ الاستخدام",
|
||||
"workspace.usage.subtitle": "استخدام وتكاليف API الأخيرة.",
|
||||
"workspace.usage.empty": "قم بإجراء أول استدعاء API للبدء.",
|
||||
"workspace.usage.table.date": "التاريخ",
|
||||
"workspace.usage.table.model": "النموذج",
|
||||
"workspace.usage.table.input": "الدخل",
|
||||
"workspace.usage.table.output": "الخرج",
|
||||
"workspace.usage.table.cost": "التكلفة",
|
||||
"workspace.usage.table.session": "الجلسة",
|
||||
"workspace.usage.breakdown.input": "الدخل",
|
||||
"workspace.usage.breakdown.cacheRead": "قراءة الكاش",
|
||||
"workspace.usage.breakdown.cacheWrite": "كتابة الكاش",
|
||||
"workspace.usage.breakdown.output": "الخرج",
|
||||
"workspace.usage.breakdown.reasoning": "المنطق",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "التكلفة",
|
||||
"workspace.cost.subtitle": "تكاليف الاستخدام مقسمة حسب النموذج.",
|
||||
"workspace.cost.allModels": "جميع النماذج",
|
||||
"workspace.cost.allKeys": "جميع المفاتيح",
|
||||
"workspace.cost.deletedSuffix": "(محذوف)",
|
||||
"workspace.cost.empty": "لا توجد بيانات استخدام متاحة للفترة المحددة.",
|
||||
"workspace.cost.subscriptionShort": "اشتراك",
|
||||
|
||||
"workspace.keys.title": "مفاتيح API",
|
||||
"workspace.keys.subtitle": "إدارة مفاتيح API الخاصة بك للوصول إلى خدمات opencode.",
|
||||
"workspace.keys.create": "إنشاء مفتاح API",
|
||||
"workspace.keys.placeholder": "أدخل اسم المفتاح",
|
||||
"workspace.keys.empty": "أنشئ مفتاح API لبوابة opencode",
|
||||
"workspace.keys.table.name": "الاسم",
|
||||
"workspace.keys.table.key": "المفتاح",
|
||||
"workspace.keys.table.createdBy": "تم الإنشاء بواسطة",
|
||||
"workspace.keys.table.lastUsed": "آخر استخدام",
|
||||
"workspace.keys.copyApiKey": "نسخ مفتاح API",
|
||||
"workspace.keys.delete": "حذف",
|
||||
|
||||
"workspace.members.title": "الأعضاء",
|
||||
"workspace.members.subtitle": "إدارة أعضاء مساحة العمل وأذوناتهم.",
|
||||
"workspace.members.invite": "دعوة عضو",
|
||||
"workspace.members.inviting": "جارٍ الدعوة...",
|
||||
"workspace.members.beta.beforeLink": "مساحات العمل مجانية للفرق أثناء الفترة التجريبية.",
|
||||
"workspace.members.form.invitee": "المدعو",
|
||||
"workspace.members.form.emailPlaceholder": "أدخل البريد الإلكتروني",
|
||||
"workspace.members.form.role": "الدور",
|
||||
"workspace.members.form.monthlyLimit": "حد الإنفاق الشهري",
|
||||
"workspace.members.noLimit": "لا يوجد حد",
|
||||
"workspace.members.noLimitLowercase": "لا يوجد حد",
|
||||
"workspace.members.invited": "تمت دعوته",
|
||||
"workspace.members.edit": "تعديل",
|
||||
"workspace.members.delete": "حذف",
|
||||
"workspace.members.saving": "جارٍ الحفظ...",
|
||||
"workspace.members.save": "حفظ",
|
||||
"workspace.members.table.email": "البريد الإلكتروني",
|
||||
"workspace.members.table.role": "الدور",
|
||||
"workspace.members.table.monthLimit": "الحد الشهري",
|
||||
"workspace.members.role.admin": "مسؤول",
|
||||
"workspace.members.role.adminDescription": "يمكنه إدارة النماذج، والأعضاء، والفوترة",
|
||||
"workspace.members.role.member": "عضو",
|
||||
"workspace.members.role.memberDescription": "يمكنه فقط إنشاء مفاتيح API لنفسه",
|
||||
|
||||
"workspace.settings.title": "الإعدادات",
|
||||
"workspace.settings.subtitle": "حدّث اسم مساحة العمل وتفضيلاتك.",
|
||||
"workspace.settings.workspaceName": "اسم مساحة العمل",
|
||||
"workspace.settings.defaultName": "افتراضي",
|
||||
"workspace.settings.updating": "جارٍ التحديث...",
|
||||
"workspace.settings.save": "حفظ",
|
||||
"workspace.settings.edit": "تعديل",
|
||||
|
||||
"workspace.billing.title": "الفوترة",
|
||||
"workspace.billing.subtitle.beforeLink": "إدارة طرق الدفع.",
|
||||
"workspace.billing.contactUs": "اتصل بنا",
|
||||
"workspace.billing.subtitle.afterLink": "إذا كان لديك أي أسئلة.",
|
||||
"workspace.billing.currentBalance": "الرصيد الحالي",
|
||||
"workspace.billing.add": "أضف $",
|
||||
"workspace.billing.enterAmount": "أدخل المبلغ",
|
||||
"workspace.billing.loading": "جارٍ التحميل...",
|
||||
"workspace.billing.addAction": "إضافة",
|
||||
"workspace.billing.addBalance": "إضافة رصيد",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "مرتبط بـ Stripe",
|
||||
"workspace.billing.manage": "إدارة",
|
||||
"workspace.billing.enable": "تمكين الفوترة",
|
||||
|
||||
"workspace.monthlyLimit.title": "الحد الشهري",
|
||||
"workspace.monthlyLimit.subtitle": "عيّن حد الاستخدام الشهري لحسابك.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "جارٍ التعيين...",
|
||||
"workspace.monthlyLimit.set": "تعيين",
|
||||
"workspace.monthlyLimit.edit": "تعديل الحد",
|
||||
"workspace.monthlyLimit.noLimit": "لم يتم تعيين حد للاستخدام.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "الاستخدام الحالي لـ",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "هو $",
|
||||
|
||||
"workspace.redeem.title": "استرداد قسيمة",
|
||||
"workspace.redeem.subtitle": "استرد رمز القسيمة للحصول على رصيد أو مزايا.",
|
||||
"workspace.redeem.placeholder": "أدخل رمز القسيمة",
|
||||
"workspace.redeem.redeem": "استرداد",
|
||||
"workspace.redeem.redeeming": "جارٍ الاسترداد...",
|
||||
"workspace.redeem.success": "تم استرداد القسيمة بنجاح.",
|
||||
|
||||
"workspace.reload.title": "إعادة الشحن التلقائي",
|
||||
"workspace.reload.disabled.before": "إعادة الشحن التلقائي",
|
||||
"workspace.reload.disabled.state": "معطّل",
|
||||
"workspace.reload.disabled.after": "فعّلها لإعادة شحن الرصيد تلقائيًا عندما ينخفض.",
|
||||
"workspace.reload.enabled.before": "إعادة الشحن التلقائي",
|
||||
"workspace.reload.enabled.state": "ممكّن",
|
||||
"workspace.reload.enabled.middle": "سنعيد شحن رصيدك بمبلغ",
|
||||
"workspace.reload.processingFee": "رسوم معالجة",
|
||||
"workspace.reload.enabled.after": "عندما يصل الرصيد إلى",
|
||||
"workspace.reload.edit": "تعديل",
|
||||
"workspace.reload.enable": "تفعيل",
|
||||
"workspace.reload.enableAutoReload": "تفعيل إعادة الشحن التلقائي",
|
||||
"workspace.reload.reloadAmount": "مبلغ الشحن $",
|
||||
"workspace.reload.whenBalanceReaches": "عندما يصل الرصيد إلى $",
|
||||
"workspace.reload.saving": "جارٍ الحفظ...",
|
||||
"workspace.reload.save": "حفظ",
|
||||
"workspace.reload.failedAt": "فشلت إعادة الشحن في",
|
||||
"workspace.reload.reason": "السبب:",
|
||||
"workspace.reload.updatePaymentMethod": "يرجى تحديث طريقة الدفع والمحاولة مرة أخرى.",
|
||||
"workspace.reload.retrying": "جارٍ إعادة المحاولة...",
|
||||
"workspace.reload.retry": "أعد المحاولة",
|
||||
"workspace.reload.error.paymentFailed": "فشلت عملية الدفع.",
|
||||
|
||||
"workspace.payments.title": "سجل المدفوعات",
|
||||
"workspace.payments.subtitle": "معاملات الدفع الأخيرة.",
|
||||
"workspace.payments.table.date": "التاريخ",
|
||||
"workspace.payments.table.paymentId": "معرف الدفع",
|
||||
"workspace.payments.table.amount": "المبلغ",
|
||||
"workspace.payments.table.receipt": "الإيصال",
|
||||
"workspace.payments.type.credit": "رصيد",
|
||||
"workspace.payments.type.subscription": "اشتراك",
|
||||
"workspace.payments.view": "عرض",
|
||||
|
||||
"workspace.black.loading": "جارٍ التحميل...",
|
||||
"workspace.black.time.day": "يوم",
|
||||
"workspace.black.time.days": "أيام",
|
||||
"workspace.black.time.hour": "ساعة",
|
||||
"workspace.black.time.hours": "ساعات",
|
||||
"workspace.black.time.minute": "دقيقة",
|
||||
"workspace.black.time.minutes": "دقائق",
|
||||
"workspace.black.time.fewSeconds": "بضع ثوان",
|
||||
"workspace.black.subscription.title": "الاشتراك",
|
||||
"workspace.black.subscription.message": "أنت مشترك في OpenCode Black مقابل ${{plan}} شهريًا.",
|
||||
"workspace.black.subscription.manage": "إدارة الاشتراك",
|
||||
"workspace.black.subscription.rollingUsage": "استخدام لمدة 5 ساعات",
|
||||
"workspace.black.subscription.weeklyUsage": "الاستخدام الأسبوعي",
|
||||
"workspace.black.subscription.resetsIn": "إعادة تعيين في",
|
||||
"workspace.black.subscription.useBalance": "استخدم رصيدك المتوفر بعد الوصول إلى حدود الاستخدام",
|
||||
"workspace.black.waitlist.title": "قائمة الانتظار",
|
||||
"workspace.black.waitlist.joined": "أنت في قائمة الانتظار لخطة OpenCode Black بقيمة ${{plan}} شهريًا.",
|
||||
"workspace.black.waitlist.ready": "نحن مستعدون لتسجيلك في خطة OpenCode Black بقيمة ${{plan}} شهريًا.",
|
||||
"workspace.black.waitlist.leave": "ترك قائمة الانتظار",
|
||||
"workspace.black.waitlist.leaving": "جارٍ المغادرة...",
|
||||
"workspace.black.waitlist.left": "غادر",
|
||||
"workspace.black.waitlist.enroll": "تسجيل",
|
||||
"workspace.black.waitlist.enrolling": "جارٍ التسجيل...",
|
||||
"workspace.black.waitlist.enrolled": "مسجل",
|
||||
"workspace.black.waitlist.enrollNote": 'عند النقر فوق "تسجيل"، يبدأ اشتراكك على الفور وسيتم خصم الرسوم من بطاقتك.',
|
||||
|
||||
"workspace.lite.loading": "جارٍ التحميل...",
|
||||
"workspace.lite.time.day": "يوم",
|
||||
"workspace.lite.time.days": "أيام",
|
||||
"workspace.lite.time.hour": "ساعة",
|
||||
"workspace.lite.time.hours": "ساعات",
|
||||
"workspace.lite.time.minute": "دقيقة",
|
||||
"workspace.lite.time.minutes": "دقائق",
|
||||
"workspace.lite.time.fewSeconds": "بضع ثوان",
|
||||
"workspace.lite.subscription.message": "أنت مشترك في OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "إدارة الاشتراك",
|
||||
"workspace.lite.subscription.rollingUsage": "الاستخدام المتجدد",
|
||||
"workspace.lite.subscription.weeklyUsage": "الاستخدام الأسبوعي",
|
||||
"workspace.lite.subscription.monthlyUsage": "الاستخدام الشهري",
|
||||
"workspace.lite.subscription.resetsIn": "إعادة تعيين في",
|
||||
"workspace.lite.subscription.useBalance": "استخدم رصيدك المتوفر بعد الوصول إلى حدود الاستخدام",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'اختر "OpenCode Go" كمزود في إعدادات opencode الخاصة بك لاستخدام نماذج Go.',
|
||||
"workspace.lite.black.message":
|
||||
"أنت مشترك حاليًا في OpenCode Black أو في قائمة الانتظار. يرجى إلغاء الاشتراك أولاً إذا كنت ترغب في التبديل إلى Go.",
|
||||
"workspace.lite.other.message":
|
||||
"عضو آخر في مساحة العمل هذه مشترك بالفعل في OpenCode Go. يمكن لعضو واحد فقط لكل مساحة عمل الاشتراك.",
|
||||
"workspace.lite.promo.description":
|
||||
"يبدأ OpenCode Go بسعر {{price}}، ثم $10/شهر، ويوفر وصولا موثوقا لنماذج البرمجة المفتوحة الشهيرة مع حدود استخدام سخية.",
|
||||
"workspace.lite.promo.price": "$5 للشهر الأول",
|
||||
"workspace.lite.promo.modelsTitle": "ما يتضمنه",
|
||||
"workspace.lite.promo.footer":
|
||||
"تم تصميم الخطة بشكل أساسي للمستخدمين الدوليين، مع استضافة النماذج في الولايات المتحدة والاتحاد الأوروبي وسنغافورة للحصول على وصول عالمي مستقر. قد تتغير الأسعار وحدود الاستخدام بناءً على تعلمنا من الاستخدام المبكر والملاحظات.",
|
||||
"workspace.lite.promo.subscribe": "الاشتراك في Go",
|
||||
"workspace.lite.promo.subscribing": "جارٍ إعادة التوجيه...",
|
||||
"workspace.lite.promo.otherMethods": "طرق دفع أخرى",
|
||||
"workspace.lite.promo.selectMethod": "اختر طريقة الدفع",
|
||||
|
||||
"download.title": "OpenCode | تنزيل",
|
||||
"download.meta.description": "نزّل OpenCode لـ macOS، Windows، وLinux",
|
||||
"download.hero.title": "تنزيل OpenCode",
|
||||
"download.hero.subtitle": "متاح في نسخة تجريبية لـ macOS، Windows، وLinux",
|
||||
"download.hero.button": "تنزيل لـ {{os}}",
|
||||
"download.section.terminal": "OpenCode للطرفية",
|
||||
"download.section.desktop": "OpenCode لسطح المكتب (Beta)",
|
||||
"download.section.extensions": "امتدادات OpenCode",
|
||||
"download.section.integrations": "تكاملات OpenCode",
|
||||
"download.action.download": "تنزيل",
|
||||
"download.action.install": "تثبيت",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"ليس بالضرورة، ولكن على الأرجح. ستحتاج إلى اشتراك ذكاء اصطناعي إذا كنت تريد ربط OpenCode بمزوّد مدفوع، رغم أنه يمكنك العمل مع",
|
||||
"download.faq.a3.localLink": "النماذج المحلية",
|
||||
"download.faq.a3.afterLocal.beforeZen": "مجانًا. بينما نشجع المستخدمين على استخدام",
|
||||
"download.faq.a3.afterZen": "، فإن OpenCode يعمل مع جميع المزودين الشائعين مثل OpenAI، Anthropic، xAI إلخ.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode مجاني 100% للاستخدام.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"أي تكاليف إضافية ستأتي من اشتراكك لدى مزود النماذج. بينما يعمل OpenCode مع أي مزود نماذج، نوصي باستخدام",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1": "يتم حفظ بياناتك ومعلوماتك فقط عند إنشاء روابط قابلة للمشاركة في OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "اعرف المزيد عن",
|
||||
"download.faq.a6.shareLink": "صفحات المشاركة",
|
||||
|
||||
"enterprise.title": "OpenCode | حلول المؤسسات لمنظمتك",
|
||||
"enterprise.meta.description": "تواصل مع OpenCode لحلول المؤسسات",
|
||||
"enterprise.hero.title": "كودك ملكك",
|
||||
"enterprise.hero.body1":
|
||||
"يعمل OpenCode بأمان داخل مؤسستك دون تخزين أي بيانات أو سياق، ودون قيود ترخيص أو مطالبات ملكية. ابدأ تجربة مع فريقك، ثم انشره عبر مؤسستك من خلال دمجه مع SSO وبوابة الذكاء الاصطناعي الداخلية لديك.",
|
||||
"enterprise.hero.body2": "أخبرنا كيف يمكننا المساعدة.",
|
||||
"enterprise.form.name.label": "الاسم الكامل",
|
||||
"enterprise.form.name.placeholder": "جيف بيزوس",
|
||||
"enterprise.form.role.label": "المنصب",
|
||||
"enterprise.form.role.placeholder": "رئيس مجلس الإدارة التنفيذي",
|
||||
"enterprise.form.company.label": "الشركة",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "البريد الإلكتروني للشركة",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "رقم الهاتف",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "ما المشكلة التي تحاول حلها؟",
|
||||
"enterprise.form.message.placeholder": "نحتاج مساعدة في...",
|
||||
"enterprise.form.send": "إرسال",
|
||||
"enterprise.form.sending": "جارٍ الإرسال...",
|
||||
"enterprise.form.success": "تم إرسال الرسالة، سنتواصل معك قريبًا.",
|
||||
"enterprise.form.success.submitted": "تم إرسال النموذج بنجاح.",
|
||||
"enterprise.form.error.allFieldsRequired": "جميع الحقول مطلوبة.",
|
||||
"enterprise.form.error.invalidEmailFormat": "تنسيق البريد الإلكتروني غير صالح.",
|
||||
"enterprise.form.error.internalServer": "خطأ داخلي في الخادم.",
|
||||
"enterprise.faq.title": "الأسئلة الشائعة",
|
||||
"enterprise.faq.q1": "ما هو OpenCode Enterprise؟",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise مخصص للمؤسسات التي تريد التأكد من أن الكود والبيانات لا تغادر بنيتها التحتية أبدًا. يتحقق ذلك عبر استخدام تكوين مركزي يندمج مع SSO وبوابة الذكاء الاصطناعي الداخلية لديك.",
|
||||
"enterprise.faq.q2": "كيف أبدأ مع OpenCode Enterprise؟",
|
||||
"enterprise.faq.a2":
|
||||
"ابدأ ببساطة بتجربة داخلية مع فريقك. افتراضيًا، لا يقوم OpenCode بتخزين الكود أو بيانات السياق، مما يجعل البدء سهلاً. ثم اتصل بنا لمناقشة الأسعار وخيارات التنفيذ.",
|
||||
"enterprise.faq.q3": "كيف تعمل تسعيرة المؤسسات؟",
|
||||
"enterprise.faq.a3":
|
||||
"نقدم تسعيرًا للمؤسسات حسب المقعد. إذا كان لديك بوابة LLM خاصة بك، فلن نفرض رسومًا على التوكنات المستخدمة. لمزيد من التفاصيل، اتصل بنا للحصول على عرض سعر مخصص بناءً على احتياجات مؤسستك.",
|
||||
"enterprise.faq.q4": "هل بياناتي آمنة مع OpenCode Enterprise؟",
|
||||
"enterprise.faq.a4":
|
||||
"نعم. لا يقوم OpenCode بتخزين الكود أو بيانات السياق. تتم جميع المعالجة محليًا أو عبر استدعاءات API مباشرة إلى مزود الذكاء الاصطناعي لديك. مع التكوين المركزي وتكامل SSO، تظل بياناتك آمنة داخل البنية التحتية لمؤسستك.",
|
||||
|
||||
"brand.title": "OpenCode | العلامة التجارية",
|
||||
"brand.meta.description": "إرشادات العلامة التجارية لـ OpenCode",
|
||||
"brand.heading": "إرشادات العلامة التجارية",
|
||||
"brand.subtitle": "موارد وأصول لمساعدتك في العمل مع العلامة التجارية لـ OpenCode.",
|
||||
"brand.downloadAll": "تنزيل جميع الأصول",
|
||||
|
||||
"changelog.title": "OpenCode | سجل التغييرات",
|
||||
"changelog.meta.description": "ملاحظات الإصدار وسجل التغييرات لـ OpenCode",
|
||||
"changelog.hero.title": "سجل التغييرات",
|
||||
"changelog.hero.subtitle": "تحديثات وتحسينات جديدة لـ OpenCode",
|
||||
"changelog.empty": "لم يتم العثور على مدخلات في سجل التغييرات.",
|
||||
"changelog.viewJson": "عرض JSON",
|
||||
|
||||
"bench.list.title": "المعيار",
|
||||
"bench.list.heading": "المعايير",
|
||||
"bench.list.table.agent": "الوكيل",
|
||||
"bench.list.table.model": "النموذج",
|
||||
"bench.list.table.score": "الدرجة",
|
||||
"bench.submission.error.allFieldsRequired": "جميع الحقول مطلوبة.",
|
||||
|
||||
"bench.detail.title": "المعيار - {{task}}",
|
||||
"bench.detail.notFound": "المهمة غير موجودة",
|
||||
"bench.detail.na": "غير متاح",
|
||||
"bench.detail.labels.agent": "الوكيل",
|
||||
"bench.detail.labels.model": "النموذج",
|
||||
"bench.detail.labels.task": "المهمة",
|
||||
"bench.detail.labels.repo": "المستودع",
|
||||
"bench.detail.labels.from": "من",
|
||||
"bench.detail.labels.to": "إلى",
|
||||
"bench.detail.labels.prompt": "الموجه",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "متوسط المدة",
|
||||
"bench.detail.labels.averageScore": "متوسط الدرجة",
|
||||
"bench.detail.labels.averageCost": "متوسط التكلفة",
|
||||
"bench.detail.labels.summary": "الملخص",
|
||||
"bench.detail.labels.runs": "تشغيلات",
|
||||
"bench.detail.labels.score": "الدرجة",
|
||||
"bench.detail.labels.base": "الأساس",
|
||||
"bench.detail.labels.penalty": "الجزاء",
|
||||
"bench.detail.labels.weight": "الوزن",
|
||||
"bench.detail.table.run": "تشغيل",
|
||||
"bench.detail.table.score": "الدرجة (الأساس - الجزاء)",
|
||||
"bench.detail.table.cost": "التكلفة",
|
||||
"bench.detail.table.duration": "المدة",
|
||||
"bench.detail.run.title": "تشغيل {{n}}",
|
||||
"bench.detail.rawJson": "JSON خام",
|
||||
} satisfies Dict
|
||||
791
qimingcode/packages/console/app/src/i18n/br.ts
Normal file
@@ -0,0 +1,791 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Documentação",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Entrar",
|
||||
"nav.free": "Download",
|
||||
"nav.home": "Início",
|
||||
"nav.openMenu": "Abrir menu",
|
||||
"nav.getStartedFree": "Começar grátis",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Copiar logo como SVG",
|
||||
"nav.context.copyWordmark": "Copiar marca como SVG",
|
||||
"nav.context.brandAssets": "Recursos da marca",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Documentação",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Marca",
|
||||
"legal.privacy": "Privacidade",
|
||||
"legal.terms": "Termos",
|
||||
|
||||
"email.title": "Seja o primeiro a saber quando lançarmos novos produtos",
|
||||
"email.subtitle": "Entre na lista de espera para acesso antecipado.",
|
||||
"email.placeholder": "Endereço de e-mail",
|
||||
"email.subscribe": "Inscrever-se",
|
||||
"email.success": "Quase lá, verifique sua caixa de entrada e confirme seu e-mail",
|
||||
|
||||
"notFound.title": "Não encontrado | opencode",
|
||||
"notFound.heading": "404 - Página não encontrada",
|
||||
"notFound.home": "Início",
|
||||
"notFound.docs": "Documentação",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "logo opencode claro",
|
||||
"notFound.logoDarkAlt": "logo opencode escuro",
|
||||
|
||||
"user.logout": "Sair",
|
||||
|
||||
"auth.callback.error.codeMissing": "Nenhum código de autorização encontrado.",
|
||||
|
||||
"workspace.select": "Selecionar workspace",
|
||||
"workspace.createNew": "+ Criar novo workspace",
|
||||
"workspace.modal.title": "Criar novo workspace",
|
||||
"workspace.modal.placeholder": "Digite o nome do workspace",
|
||||
|
||||
"common.cancel": "Cancelar",
|
||||
"common.creating": "Criando...",
|
||||
"common.create": "Criar",
|
||||
|
||||
"common.videoUnsupported": "Seu navegador não suporta a tag de vídeo.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Saiba mais",
|
||||
|
||||
"error.invalidPlan": "Plano inválido",
|
||||
"error.workspaceRequired": "ID do workspace é obrigatório",
|
||||
"error.alreadySubscribed": "Este workspace já possui uma assinatura",
|
||||
"error.limitRequired": "Limite é obrigatório.",
|
||||
"error.monthlyLimitInvalid": "Defina um limite mensal válido.",
|
||||
"error.workspaceNameRequired": "Nome do workspace é obrigatório.",
|
||||
"error.nameTooLong": "O nome deve ter 255 caracteres ou menos.",
|
||||
"error.emailRequired": "E-mail é obrigatório",
|
||||
"error.roleRequired": "Função é obrigatória",
|
||||
"error.idRequired": "ID é obrigatório",
|
||||
"error.nameRequired": "Nome é obrigatório",
|
||||
"error.providerRequired": "Provedor é obrigatório",
|
||||
"error.apiKeyRequired": "Chave de API é obrigatória",
|
||||
"error.modelRequired": "Modelo é obrigatório",
|
||||
"error.reloadAmountMin": "O valor de recarga deve ser de pelo menos ${{amount}}",
|
||||
"error.reloadTriggerMin": "O gatilho de saldo deve ser de pelo menos ${{amount}}",
|
||||
|
||||
"app.meta.description": "OpenCode - O agente de codificação de código aberto.",
|
||||
|
||||
"home.title": "OpenCode | O agente de codificação de código aberto com IA",
|
||||
|
||||
"temp.title": "opencode | Agente de codificação com IA feito para o terminal",
|
||||
"temp.hero.title": "O agente de codificação com IA feito para o terminal",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "Começar",
|
||||
"temp.feature.native.title": "TUI Nativa",
|
||||
"temp.feature.native.body": "Uma interface de terminal responsiva, nativa e personalizável",
|
||||
"temp.feature.zen.beforeLink": "Uma",
|
||||
"temp.feature.zen.link": "lista selecionada de modelos",
|
||||
"temp.feature.zen.afterLink": "fornecida pela opencode",
|
||||
"temp.feature.models.beforeLink": "Suporta mais de 75 provedores de LLM através do",
|
||||
"temp.feature.models.afterLink": ", incluindo modelos locais",
|
||||
"temp.screenshot.caption": "OpenCode TUI com o tema tokyonight",
|
||||
"temp.screenshot.alt": "OpenCode TUI com tema tokyonight",
|
||||
"temp.logoLightAlt": "logo opencode claro",
|
||||
"temp.logoDarkAlt": "logo opencode escuro",
|
||||
|
||||
"home.banner.badge": "Novo",
|
||||
"home.banner.text": "App desktop disponível em beta",
|
||||
"home.banner.platforms": "no macOS, Windows e Linux",
|
||||
"home.banner.downloadNow": "Baixar agora",
|
||||
"home.banner.downloadBetaNow": "Baixe agora o beta do desktop",
|
||||
|
||||
"home.hero.title": "O agente de codificação de código aberto com IA",
|
||||
"home.hero.subtitle.a": "Modelos grátis incluídos ou conecte qualquer modelo de qualquer provedor,",
|
||||
"home.hero.subtitle.b": "incluindo Claude, GPT, Gemini e mais.",
|
||||
|
||||
"home.install.ariaLabel": "Opções de instalação",
|
||||
|
||||
"home.what.title": "O que é OpenCode?",
|
||||
"home.what.body":
|
||||
"OpenCode é um agente de código aberto que ajuda você a escrever código no seu terminal, IDE ou desktop.",
|
||||
"home.what.lsp.title": "LSP habilitado",
|
||||
"home.what.lsp.body": "Carrega automaticamente os LSPs certos para o LLM",
|
||||
"home.what.multiSession.title": "Multissessão",
|
||||
"home.what.multiSession.body": "Inicie vários agentes em paralelo no mesmo projeto",
|
||||
"home.what.shareLinks.title": "Links compartilháveis",
|
||||
"home.what.shareLinks.body": "Compartilhe um link para qualquer sessão para referência ou depuração",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Entre com o GitHub para usar sua conta do Copilot",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Entre com a OpenAI para usar sua conta do ChatGPT Plus ou Pro",
|
||||
"home.what.anyModel.title": "Qualquer modelo",
|
||||
"home.what.anyModel.body": "Mais de 75 provedores de LLM via Models.dev, incluindo modelos locais",
|
||||
"home.what.anyEditor.title": "Qualquer editor",
|
||||
"home.what.anyEditor.body": "Disponível como interface de terminal, app desktop e extensão de IDE",
|
||||
"home.what.readDocs": "Ler documentação",
|
||||
|
||||
"home.growth.title": "O agente de codificação de código aberto com IA",
|
||||
"home.growth.body":
|
||||
"Com mais de <strong>{{stars}}</strong> estrelas no GitHub, <strong>{{contributors}}</strong> colaboradores e mais de <strong>{{commits}}</strong> commits, OpenCode é usado e confiado por mais de <strong>{{monthlyUsers}}</strong> desenvolvedores todos os meses.",
|
||||
"home.growth.githubStars": "Estrelas no GitHub",
|
||||
"home.growth.contributors": "Colaboradores",
|
||||
"home.growth.monthlyDevs": "Devs mensais",
|
||||
|
||||
"home.privacy.title": "Feito com privacidade em primeiro lugar",
|
||||
"home.privacy.body":
|
||||
"OpenCode não armazena nenhum código seu nem dados de contexto, para que possa operar em ambientes sensíveis à privacidade.",
|
||||
"home.privacy.learnMore": "Saiba mais sobre",
|
||||
"home.privacy.link": "privacidade",
|
||||
|
||||
"home.faq.q1": "O que é OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode é um agente de código aberto que ajuda você a escrever e executar código com qualquer modelo de IA. Está disponível como interface de terminal, app desktop ou extensão de IDE.",
|
||||
"home.faq.q2": "Como eu uso o OpenCode?",
|
||||
"home.faq.a2.before": "A maneira mais fácil de começar é ler a",
|
||||
"home.faq.a2.link": "introdução",
|
||||
"home.faq.q3": "Preciso de assinaturas extras de IA para usar o OpenCode?",
|
||||
"home.faq.a3.p1":
|
||||
"Não necessariamente, OpenCode vem com um conjunto de modelos grátis que você pode usar sem criar conta.",
|
||||
"home.faq.a3.p2.beforeZen":
|
||||
"Além disso, você pode usar qualquer um dos modelos de codificação populares criando uma conta",
|
||||
"home.faq.a3.p2.afterZen": ".",
|
||||
"home.faq.a3.p3":
|
||||
"Embora incentivemos os usuários a usar o Zen, OpenCode também funciona com todos os provedores populares, como OpenAI, Anthropic, xAI etc.",
|
||||
"home.faq.a3.p4.beforeLocal": "Você pode até conectar seus",
|
||||
"home.faq.a3.p4.localLink": "modelos locais",
|
||||
"home.faq.q4": "Posso usar minhas assinaturas de IA existentes com o OpenCode?",
|
||||
"home.faq.a4.p1":
|
||||
"Sim, OpenCode suporta planos de assinatura de todos os principais provedores. Você pode usar suas assinaturas Claude Pro/Max, ChatGPT Plus/Pro ou GitHub Copilot.",
|
||||
"home.faq.q5": "Posso usar o OpenCode apenas no terminal?",
|
||||
"home.faq.a5.beforeDesktop": "Não mais! OpenCode agora está disponível como um app para o seu",
|
||||
"home.faq.a5.desktop": "desktop",
|
||||
"home.faq.a5.and": "e",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "Quanto custa o OpenCode?",
|
||||
"home.faq.a6":
|
||||
"OpenCode é 100% gratuito para usar. Ele também vem com um conjunto de modelos gratuitos. Pode haver custos adicionais se você conectar qualquer outro provedor.",
|
||||
"home.faq.q7": "E sobre dados e privacidade?",
|
||||
"home.faq.a7.p1":
|
||||
"Seus dados e informações só são armazenados quando você usa nossos modelos gratuitos ou cria links compartilháveis.",
|
||||
"home.faq.a7.p2.beforeModels": "Saiba mais sobre",
|
||||
"home.faq.a7.p2.modelsLink": "nossos modelos",
|
||||
"home.faq.a7.p2.and": "e",
|
||||
"home.faq.a7.p2.shareLink": "páginas de compartilhamento",
|
||||
"home.faq.q8": "OpenCode é código aberto?",
|
||||
"home.faq.a8.p1": "Sim, OpenCode é totalmente open source. O código-fonte é público no",
|
||||
"home.faq.a8.p2": "sob a",
|
||||
"home.faq.a8.mitLicense": "Licença MIT",
|
||||
"home.faq.a8.p3":
|
||||
", o que significa que qualquer pessoa pode usar, modificar ou contribuir para o seu desenvolvimento. Qualquer pessoa da comunidade pode abrir issues, enviar pull requests e estender a funcionalidade.",
|
||||
|
||||
"home.zenCta.title": "Acesse modelos confiáveis e otimizados para agentes de codificação",
|
||||
"home.zenCta.body":
|
||||
"O Zen dá acesso a um conjunto selecionado de modelos de IA que a OpenCode testou e avaliou especificamente para agentes de codificação. Não precisa se preocupar com desempenho e qualidade inconsistentes entre provedores, use modelos validados que funcionam.",
|
||||
"home.zenCta.link": "Saiba mais sobre o Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | Um conjunto selecionado de modelos confiáveis e otimizados para agentes de codificação",
|
||||
"zen.hero.title": "Modelos confiáveis e otimizados para agentes de codificação",
|
||||
"zen.hero.body":
|
||||
"O Zen dá acesso a um conjunto selecionado de modelos de IA que a OpenCode testou e avaliou especificamente para agentes de codificação. Não precisa se preocupar com desempenho e qualidade inconsistentes, use modelos validados que funcionam.",
|
||||
|
||||
"zen.faq.q1": "O que é OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen é um conjunto selecionado de modelos de IA testados e avaliados para agentes de codificação, criado pela equipe por trás do OpenCode.",
|
||||
"zen.faq.q2": "O que torna o Zen mais preciso?",
|
||||
"zen.faq.a2":
|
||||
"O Zen fornece apenas modelos que foram especificamente testados e avaliados para agentes de codificação. Você não usaria uma faca de manteiga para cortar um bife, não use modelos ruins para programar.",
|
||||
"zen.faq.q3": "O Zen é mais barato?",
|
||||
"zen.faq.a3":
|
||||
"O Zen não tem fins lucrativos. O Zen repassa os custos dos provedores de modelos para você. Quanto maior o uso do Zen, mais a OpenCode pode negociar melhores taxas e repassá-las para você.",
|
||||
"zen.faq.q4": "Quanto custa o Zen?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "cobra por requisição",
|
||||
"zen.faq.a4.p1.afterPricing": "sem margens de lucro, então você paga exatamente o que o provedor do modelo cobra.",
|
||||
"zen.faq.a4.p2.beforeAccount": "Seu custo total depende do uso, e você pode definir limites de gastos mensais em sua",
|
||||
"zen.faq.a4.p2.accountLink": "conta",
|
||||
"zen.faq.a4.p3":
|
||||
"Para cobrir custos, a OpenCode adiciona apenas uma pequena taxa de processamento de pagamento de $1,23 por recarga de $20.",
|
||||
"zen.faq.q5": "E sobre dados e privacidade?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Todos os modelos Zen são hospedados nos EUA. Os provedores seguem uma política de retenção zero e não usam seus dados para treinamento de modelos, com as",
|
||||
"zen.faq.a5.exceptionsLink": "seguintes exceções",
|
||||
"zen.faq.q6": "Posso definir limites de gastos?",
|
||||
"zen.faq.a6": "Sim, você pode definir limites de gastos mensais em sua conta.",
|
||||
"zen.faq.q7": "Posso cancelar?",
|
||||
"zen.faq.a7": "Sim, você pode desativar o faturamento a qualquer momento e usar seu saldo restante.",
|
||||
"zen.faq.q8": "Posso usar o Zen com outros agentes de codificação?",
|
||||
"zen.faq.a8":
|
||||
"Embora o Zen funcione muito bem com o OpenCode, você pode usar o Zen com qualquer agente. Siga as instruções de configuração no seu agente de codificação preferido.",
|
||||
|
||||
"zen.cta.start": "Comece com o Zen",
|
||||
"zen.pricing.title": "Adicionar $20 de saldo pré-pago",
|
||||
"zen.pricing.fee": "(+$1,23 taxa de processamento do cartão)",
|
||||
"zen.pricing.body": "Use com qualquer agente. Defina limites de gastos mensais. Cancele a qualquer momento.",
|
||||
"zen.problem.title": "Que problema o Zen resolve?",
|
||||
"zen.problem.body":
|
||||
"Existem muitos modelos disponíveis, mas apenas alguns funcionam bem com agentes de codificação. A maioria dos provedores os configura de maneira diferente, com resultados variados.",
|
||||
"zen.problem.subtitle": "Estamos corrigindo isso para todos, não apenas para os usuários do OpenCode.",
|
||||
"zen.problem.item1": "Testando modelos selecionados e consultando suas equipes",
|
||||
"zen.problem.item2": "Trabalhando com provedores para garantir que sejam entregues corretamente",
|
||||
"zen.problem.item3": "Avaliando todas as combinações de modelo-provedor que recomendamos",
|
||||
"zen.how.title": "Como o Zen funciona",
|
||||
"zen.how.body": "Embora sugerimos que você use o Zen com o OpenCode, você pode usá-lo com qualquer agente.",
|
||||
"zen.how.step1.title": "Cadastre-se e adicione $20 de saldo",
|
||||
"zen.how.step1.beforeLink": "siga as",
|
||||
"zen.how.step1.link": "instruções de configuração",
|
||||
"zen.how.step2.title": "Use o Zen com preços transparentes",
|
||||
"zen.how.step2.link": "pague por requisição",
|
||||
"zen.how.step2.afterLink": "sem margens de lucro",
|
||||
"zen.how.step3.title": "Recarga automática",
|
||||
"zen.how.step3.body": "quando seu saldo atingir $5, adicionaremos automaticamente $20",
|
||||
"zen.privacy.title": "Sua privacidade é importante para nós",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Todos os modelos Zen são hospedados nos EUA. Os provedores seguem uma política de retenção zero e não usam seus dados para treinamento de modelo, com as",
|
||||
"zen.privacy.exceptionsLink": "seguintes exceções",
|
||||
|
||||
"go.title": "OpenCode Go | Modelos de codificação de baixo custo para todos",
|
||||
"go.meta.description":
|
||||
"O Go começa em $5 no primeiro mês, depois $10/mês, com limites generosos de solicitação de 5 horas para GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Modelos de codificação de baixo custo para todos",
|
||||
"go.hero.body":
|
||||
"O Go traz a codificação com agentes para programadores em todo o mundo. Oferecendo limites generosos e acesso confiável aos modelos de código aberto mais capazes, para que você possa construir com agentes poderosos sem se preocupar com custos ou disponibilidade.",
|
||||
|
||||
"go.cta.start": "Assinar o Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Assinar o Go",
|
||||
"go.cta.price": "$10/mês",
|
||||
"go.cta.promo": "$5 no primeiro mês",
|
||||
"go.pricing.body":
|
||||
"Use com qualquer agente. $5 no primeiro mês, depois $10/mês. Recarregue o crédito se necessário. Cancele a qualquer momento.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: limite de uso 3x maior até 27 de abril",
|
||||
"go.graph.free": "Grátis",
|
||||
"go.graph.freePill": "Big Pickle e modelos gratuitos",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Requisições por 5 horas",
|
||||
"go.graph.usageLimits": "Limites de uso",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Requisições por 5h: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "mudou minha vida, é realmente uma escolha óbvia.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Fundador, SEED, PM, Melt, Pop, Dapt, Cadmus e ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 de 5 pessoas em nossa equipe adoram usar",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "Eu não consigo recomendar o",
|
||||
"go.testimonials.adam.quoteAfter": "o suficiente. Sério, é muito bom.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head de Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Com o",
|
||||
"go.testimonials.david.quoteAfter":
|
||||
"eu sei que todos os modelos são testados e perfeitos para agentes de codificação.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Estagiário, Nvidia (4 vezes)",
|
||||
"go.testimonials.frank.quote": "Eu queria ainda estar na Nvidia.",
|
||||
"go.problem.title": "Que problema o Go resolve?",
|
||||
"go.problem.body":
|
||||
"Estamos focados em levar a experiência do OpenCode para o maior número de pessoas possível. OpenCode Go é uma assinatura de baixo custo: $5 no primeiro mês, depois $10/mês. Oferece limites generosos e acesso confiável aos modelos open source mais capazes.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Preço de assinatura de baixo custo",
|
||||
"go.problem.item2": "Limites generosos e acesso confiável",
|
||||
"go.problem.item3": "Feito para o maior número possível de programadores",
|
||||
"go.problem.item4":
|
||||
"Inclui GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash",
|
||||
"go.how.title": "Como o Go funciona",
|
||||
"go.how.body":
|
||||
"O Go começa em $5 no primeiro mês, depois $10/mês. Você pode usá-lo com o OpenCode ou qualquer agente.",
|
||||
"go.how.step1.title": "Crie uma conta",
|
||||
"go.how.step1.beforeLink": "siga as",
|
||||
"go.how.step1.link": "instruções de configuração",
|
||||
"go.how.step2.title": "Assinar o Go",
|
||||
"go.how.step2.link": "$5 no primeiro mês",
|
||||
"go.how.step2.afterLink": "depois $10/mês com limites generosos",
|
||||
"go.how.step3.title": "Comece a codificar",
|
||||
"go.how.step3.body": "com acesso confiável a modelos de código aberto",
|
||||
"go.privacy.title": "Sua privacidade é importante para nós",
|
||||
"go.privacy.body":
|
||||
"O plano é projetado principalmente para usuários internacionais, com modelos hospedados nos EUA, UE e Singapura para acesso global estável.",
|
||||
"go.privacy.contactAfter": "se você tiver alguma dúvida.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Os modelos Go são hospedados nos EUA. Os provedores seguem uma política de retenção zero e não usam seus dados para treinamento de modelos, com as",
|
||||
"go.privacy.exceptionsLink": "seguintes exceções",
|
||||
"go.faq.q1": "O que é OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go é uma assinatura de baixo custo que oferece acesso confiável a modelos de código aberto capazes para codificação com agentes.",
|
||||
"go.faq.q2": "Quais modelos o Go inclui?",
|
||||
"go.faq.a2": "O Go inclui os modelos listados abaixo, com limites generosos e acesso confiável.",
|
||||
"go.faq.q3": "O Go é o mesmo que o Zen?",
|
||||
"go.faq.a3":
|
||||
"Não. Zen é pay-as-you-go, enquanto o Go começa em $5 no primeiro mês, depois $10/mês, com limites generosos e acesso confiável aos modelos open source GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "Quanto custa o Go?",
|
||||
"go.faq.a4.p1.beforePricing": "O Go custa",
|
||||
"go.faq.a4.p1.pricingLink": "$5 no primeiro mês",
|
||||
"go.faq.a4.p1.afterPricing": "depois $10/mês com limites generosos.",
|
||||
"go.faq.a4.p2.beforeAccount": "Você pode gerenciar sua assinatura em sua",
|
||||
"go.faq.a4.p2.accountLink": "conta",
|
||||
"go.faq.a4.p3": "Cancele a qualquer momento.",
|
||||
"go.faq.q5": "E sobre dados e privacidade?",
|
||||
"go.faq.a5.body":
|
||||
"O plano é projetado principalmente para usuários internacionais, com modelos hospedados nos EUA, UE e Singapura para acesso global estável. Nossos provedores seguem uma política de retenção zero e não usam seus dados para treinamento de modelos.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Os modelos Go são hospedados nos EUA. Os provedores seguem uma política de retenção zero e não usam seus dados para treinamento de modelos, com as",
|
||||
"go.faq.a5.exceptionsLink": "seguintes exceções",
|
||||
"go.faq.q6": "Posso recarregar crédito?",
|
||||
"go.faq.a6": "Se você precisar de mais uso, pode recarregar crédito em sua conta.",
|
||||
"go.faq.q7": "Posso cancelar?",
|
||||
"go.faq.a7": "Sim, você pode cancelar a qualquer momento.",
|
||||
"go.faq.q8": "Posso usar o Go com outros agentes de codificação?",
|
||||
"go.faq.a8":
|
||||
"Sim, você pode usar o Go com qualquer agente. Siga as instruções de configuração no seu agente de codificação preferido.",
|
||||
|
||||
"go.faq.q9": "Qual a diferença entre os modelos gratuitos e o Go?",
|
||||
"go.faq.a9":
|
||||
"Os modelos gratuitos incluem Big Pickle e modelos promocionais disponíveis no momento, com uma cota de 200 requisições/dia. O Go inclui GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash com cotas de requisição mais altas aplicadas em janelas móveis (5 horas, semanal e mensal), aproximadamente equivalentes a $12 por 5 horas, $30 por semana e $60 por mês (as contagens reais de requisições variam de acordo com o modelo e o uso).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Limite de taxa excedido. Por favor, tente novamente mais tarde.",
|
||||
"zen.api.error.modelNotSupported": "Modelo {{model}} não suportado",
|
||||
"zen.api.error.modelFormatNotSupported": "Modelo {{model}} não suportado para o formato {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "Nenhum provedor disponível",
|
||||
"zen.api.error.providerNotSupported": "Provedor {{provider}} não suportado",
|
||||
"zen.api.error.missingApiKey": "Chave de API ausente.",
|
||||
"zen.api.error.invalidApiKey": "Chave de API inválida.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Cota de assinatura excedida. Tente novamente em {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Cota de assinatura excedida. Você pode continuar usando modelos gratuitos.",
|
||||
"zen.api.error.noPaymentMethod": "Nenhuma forma de pagamento. Adicione uma forma de pagamento aqui: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Saldo insuficiente. Gerencie seu faturamento aqui: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Seu workspace atingiu o limite de gastos mensais de ${{amount}}. Gerencie seus limites aqui: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Você atingiu seu limite de gastos mensais de ${{amount}}. Gerencie seus limites aqui: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "O modelo está desabilitado",
|
||||
"zen.api.error.trialEnded":
|
||||
"A promoção gratuita do {{model}} terminou. Você pode continuar usando o modelo assinando o OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Acesse os melhores modelos de codificação do mundo",
|
||||
"black.meta.description": "Tenha acesso ao Claude, GPT, Gemini e mais com os planos de assinatura OpenCode Black.",
|
||||
"black.hero.title": "Acesse os melhores modelos de codificação do mundo",
|
||||
"black.hero.subtitle": "Incluindo Claude, GPT, Gemini e mais",
|
||||
"black.title": "OpenCode Black | Preços",
|
||||
"black.paused": "A inscrição no plano Black está temporariamente pausada.",
|
||||
"black.plan.icon20": "Plano Black 20",
|
||||
"black.plan.icon100": "Plano Black 100",
|
||||
"black.plan.icon200": "Plano Black 200",
|
||||
"black.plan.multiplier100": "5x mais uso que o Black 20",
|
||||
"black.plan.multiplier200": "20x mais uso que o Black 20",
|
||||
"black.price.perMonth": "por mês",
|
||||
"black.price.perPersonBilledMonthly": "por pessoa faturado mensalmente",
|
||||
"black.terms.1": "Sua assinatura não começará imediatamente",
|
||||
"black.terms.2": "Você será adicionado à lista de espera e ativado em breve",
|
||||
"black.terms.3": "Seu cartão só será cobrado quando sua assinatura for ativada",
|
||||
"black.terms.4": "Limites de uso se aplicam; uso fortemente automatizado pode atingir os limites mais cedo",
|
||||
"black.terms.5": "Assinaturas são para indivíduos, contate Enterprise para equipes",
|
||||
"black.terms.6": "Limites podem ser ajustados e planos podem ser descontinuados no futuro",
|
||||
"black.terms.7": "Cancele sua assinatura a qualquer momento",
|
||||
"black.action.continue": "Continuar",
|
||||
"black.finePrint.beforeTerms": "Os preços mostrados não incluem impostos aplicáveis",
|
||||
"black.finePrint.terms": "Termos de Serviço",
|
||||
"black.workspace.title": "OpenCode Black | Selecionar Workspace",
|
||||
"black.workspace.selectPlan": "Selecione um workspace para este plano",
|
||||
"black.workspace.name": "Workspace {{n}}",
|
||||
"black.subscribe.title": "Assinar OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Forma de pagamento",
|
||||
"black.subscribe.loadingPaymentForm": "Carregando formulário de pagamento...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Selecione um workspace para continuar",
|
||||
"black.subscribe.failurePrefix": "Ops!",
|
||||
"black.subscribe.error.generic": "Ocorreu um erro",
|
||||
"black.subscribe.error.invalidPlan": "Plano inválido",
|
||||
"black.subscribe.error.workspaceRequired": "ID do workspace é obrigatório",
|
||||
"black.subscribe.error.alreadySubscribed": "Este workspace já possui uma assinatura",
|
||||
"black.subscribe.processing": "Processando...",
|
||||
"black.subscribe.submit": "Assinar ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Você só será cobrado quando sua assinatura for ativada",
|
||||
"black.subscribe.success.title": "Você está na lista de espera do OpenCode Black",
|
||||
"black.subscribe.success.subscriptionPlan": "Plano de assinatura",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Valor",
|
||||
"black.subscribe.success.amountValue": "${{plan}} por mês",
|
||||
"black.subscribe.success.paymentMethod": "Forma de pagamento",
|
||||
"black.subscribe.success.dateJoined": "Data de entrada",
|
||||
"black.subscribe.success.chargeNotice": "Seu cartão será cobrado quando sua assinatura for ativada",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Uso",
|
||||
"workspace.nav.apiKeys": "Chaves de API",
|
||||
"workspace.nav.members": "Membros",
|
||||
"workspace.nav.billing": "Faturamento",
|
||||
"workspace.nav.settings": "Configurações",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Modelos otimizados e confiáveis para agentes de codificação.",
|
||||
"workspace.lite.banner.beforeLink": "Modelos de codificação de baixo custo para todos.",
|
||||
"workspace.home.billing.loading": "Carregando...",
|
||||
"workspace.home.billing.enable": "Ativar faturamento",
|
||||
"workspace.home.billing.currentBalance": "Saldo atual",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Modelos Testados e Verificados",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Avaliamos e testamos modelos especificamente para agentes de codificação para garantir o melhor desempenho.",
|
||||
"workspace.newUser.feature.quality.title": "Qualidade Máxima",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Acesse modelos configurados para desempenho ideal - sem downgrades ou roteamento para provedores mais baratos.",
|
||||
"workspace.newUser.feature.lockin.title": "Sem Fidelidade",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Use o Zen com qualquer agente de codificação e continue usando outros provedores com opencode sempre que quiser.",
|
||||
"workspace.newUser.copyApiKey": "Copiar chave de API",
|
||||
"workspace.newUser.copyKey": "Copiar Chave",
|
||||
"workspace.newUser.copied": "Copiado!",
|
||||
"workspace.newUser.step.enableBilling": "Ativar faturamento",
|
||||
"workspace.newUser.step.login.before": "Execute",
|
||||
"workspace.newUser.step.login.after": "e selecione opencode",
|
||||
"workspace.newUser.step.pasteKey": "Cole sua chave de API",
|
||||
"workspace.newUser.step.models.before": "Inicie o opencode e execute",
|
||||
"workspace.newUser.step.models.after": "para selecionar um modelo",
|
||||
|
||||
"workspace.models.title": "Modelos",
|
||||
"workspace.models.subtitle.beforeLink": "Gerencie quais modelos os membros do workspace podem acessar.",
|
||||
"workspace.models.table.model": "Modelo",
|
||||
"workspace.models.table.enabled": "Habilitado",
|
||||
|
||||
"workspace.providers.title": "Traga Sua Própria Chave",
|
||||
"workspace.providers.subtitle": "Configure suas próprias chaves de API de provedores de IA.",
|
||||
"workspace.providers.placeholder": "Insira a chave de API {{provider}} ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Configurar",
|
||||
"workspace.providers.edit": "Editar",
|
||||
"workspace.providers.delete": "Excluir",
|
||||
"workspace.providers.saving": "Salvando...",
|
||||
"workspace.providers.save": "Salvar",
|
||||
"workspace.providers.table.provider": "Provedor",
|
||||
"workspace.providers.table.apiKey": "Chave de API",
|
||||
|
||||
"workspace.usage.title": "Histórico de Uso",
|
||||
"workspace.usage.subtitle": "Uso recente da API e custos.",
|
||||
"workspace.usage.empty": "Faça sua primeira chamada de API para começar.",
|
||||
"workspace.usage.table.date": "Data",
|
||||
"workspace.usage.table.model": "Modelo",
|
||||
"workspace.usage.table.input": "Entrada",
|
||||
"workspace.usage.table.output": "Saída",
|
||||
"workspace.usage.table.cost": "Custo",
|
||||
"workspace.usage.table.session": "Sessão",
|
||||
"workspace.usage.breakdown.input": "Entrada",
|
||||
"workspace.usage.breakdown.cacheRead": "Leitura de Cache",
|
||||
"workspace.usage.breakdown.cacheWrite": "Escrita em Cache",
|
||||
"workspace.usage.breakdown.output": "Saída",
|
||||
"workspace.usage.breakdown.reasoning": "Raciocínio",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Custo",
|
||||
"workspace.cost.subtitle": "Custos de uso discriminados por modelo.",
|
||||
"workspace.cost.allModels": "Todos os Modelos",
|
||||
"workspace.cost.allKeys": "Todas as Chaves",
|
||||
"workspace.cost.deletedSuffix": "(excluído)",
|
||||
"workspace.cost.empty": "Nenhum dado de uso disponível para o período selecionado.",
|
||||
"workspace.cost.subscriptionShort": "ass",
|
||||
|
||||
"workspace.keys.title": "Chaves de API",
|
||||
"workspace.keys.subtitle": "Gerencie suas chaves de API para acessar os serviços opencode.",
|
||||
"workspace.keys.create": "Criar Chave de API",
|
||||
"workspace.keys.placeholder": "Digite o nome da chave",
|
||||
"workspace.keys.empty": "Crie uma chave de API do opencode Gateway",
|
||||
"workspace.keys.table.name": "Nome",
|
||||
"workspace.keys.table.key": "Chave",
|
||||
"workspace.keys.table.createdBy": "Criado Por",
|
||||
"workspace.keys.table.lastUsed": "Último Uso",
|
||||
"workspace.keys.copyApiKey": "Copiar chave de API",
|
||||
"workspace.keys.delete": "Excluir",
|
||||
|
||||
"workspace.members.title": "Membros",
|
||||
"workspace.members.subtitle": "Gerencie os membros do workspace e suas permissões.",
|
||||
"workspace.members.invite": "Convidar Membro",
|
||||
"workspace.members.inviting": "Convidando...",
|
||||
"workspace.members.beta.beforeLink": "Workspaces são gratuitos para equipes durante o beta.",
|
||||
"workspace.members.form.invitee": "Convidado",
|
||||
"workspace.members.form.emailPlaceholder": "Digite o e-mail",
|
||||
"workspace.members.form.role": "Função",
|
||||
"workspace.members.form.monthlyLimit": "Limite de gastos mensais",
|
||||
"workspace.members.noLimit": "Sem limite",
|
||||
"workspace.members.noLimitLowercase": "sem limite",
|
||||
"workspace.members.invited": "convidado",
|
||||
"workspace.members.edit": "Editar",
|
||||
"workspace.members.delete": "Excluir",
|
||||
"workspace.members.saving": "Salvando...",
|
||||
"workspace.members.save": "Salvar",
|
||||
"workspace.members.table.email": "E-mail",
|
||||
"workspace.members.table.role": "Função",
|
||||
"workspace.members.table.monthLimit": "Limite mensal",
|
||||
"workspace.members.role.admin": "Admin",
|
||||
"workspace.members.role.adminDescription": "Pode gerenciar modelos, membros e faturamento",
|
||||
"workspace.members.role.member": "Membro",
|
||||
"workspace.members.role.memberDescription": "Só pode gerar chaves de API para si mesmo",
|
||||
|
||||
"workspace.settings.title": "Configurações",
|
||||
"workspace.settings.subtitle": "Atualize o nome e as preferências do seu workspace.",
|
||||
"workspace.settings.workspaceName": "Nome do workspace",
|
||||
"workspace.settings.defaultName": "Padrão",
|
||||
"workspace.settings.updating": "Atualizando...",
|
||||
"workspace.settings.save": "Salvar",
|
||||
"workspace.settings.edit": "Editar",
|
||||
|
||||
"workspace.billing.title": "Faturamento",
|
||||
"workspace.billing.subtitle.beforeLink": "Gerenciar formas de pagamento.",
|
||||
"workspace.billing.contactUs": "Contate-nos",
|
||||
"workspace.billing.subtitle.afterLink": "se você tiver alguma dúvida.",
|
||||
"workspace.billing.currentBalance": "Saldo Atual",
|
||||
"workspace.billing.add": "Adicionar $",
|
||||
"workspace.billing.enterAmount": "Digite o valor",
|
||||
"workspace.billing.loading": "Carregando...",
|
||||
"workspace.billing.addAction": "Adicionar",
|
||||
"workspace.billing.addBalance": "Adicionar Saldo",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Vinculado ao Stripe",
|
||||
"workspace.billing.manage": "Gerenciar",
|
||||
"workspace.billing.enable": "Ativar Faturamento",
|
||||
|
||||
"workspace.monthlyLimit.title": "Limite Mensal",
|
||||
"workspace.monthlyLimit.subtitle": "Defina um limite de uso mensal para sua conta.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Definindo...",
|
||||
"workspace.monthlyLimit.set": "Definir",
|
||||
"workspace.monthlyLimit.edit": "Editar Limite",
|
||||
"workspace.monthlyLimit.noLimit": "Nenhum limite de uso definido.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Uso atual para",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "é $",
|
||||
|
||||
"workspace.redeem.title": "Resgatar Cupom",
|
||||
"workspace.redeem.subtitle": "Resgate um código de cupom para receber créditos ou vantagens.",
|
||||
"workspace.redeem.placeholder": "Digite o código do cupom",
|
||||
"workspace.redeem.redeem": "Resgatar",
|
||||
"workspace.redeem.redeeming": "Resgatando...",
|
||||
"workspace.redeem.success": "Cupom resgatado com sucesso.",
|
||||
|
||||
"workspace.reload.title": "Recarga Automática",
|
||||
"workspace.reload.disabled.before": "A recarga automática está",
|
||||
"workspace.reload.disabled.state": "desativada",
|
||||
"workspace.reload.disabled.after": "Ative para recarregar automaticamente quando o saldo estiver baixo.",
|
||||
"workspace.reload.enabled.before": "A recarga automática está",
|
||||
"workspace.reload.enabled.state": "ativada",
|
||||
"workspace.reload.enabled.middle": "Recarregaremos",
|
||||
"workspace.reload.processingFee": "taxa de processamento",
|
||||
"workspace.reload.enabled.after": "quando o saldo atingir",
|
||||
"workspace.reload.edit": "Editar",
|
||||
"workspace.reload.enable": "Ativar",
|
||||
"workspace.reload.enableAutoReload": "Ativar Recarga Automática",
|
||||
"workspace.reload.reloadAmount": "Recarregar $",
|
||||
"workspace.reload.whenBalanceReaches": "Quando o saldo atingir $",
|
||||
"workspace.reload.saving": "Salvando...",
|
||||
"workspace.reload.save": "Salvar",
|
||||
"workspace.reload.failedAt": "Recarga falhou em",
|
||||
"workspace.reload.reason": "Motivo:",
|
||||
"workspace.reload.updatePaymentMethod": "Por favor, atualize sua forma de pagamento e tente novamente.",
|
||||
"workspace.reload.retrying": "Tentando novamente...",
|
||||
"workspace.reload.retry": "Tentar novamente",
|
||||
"workspace.reload.error.paymentFailed": "Pagamento falhou.",
|
||||
|
||||
"workspace.payments.title": "Histórico de Pagamentos",
|
||||
"workspace.payments.subtitle": "Transações de pagamento recentes.",
|
||||
"workspace.payments.table.date": "Data",
|
||||
"workspace.payments.table.paymentId": "ID do Pagamento",
|
||||
"workspace.payments.table.amount": "Valor",
|
||||
"workspace.payments.table.receipt": "Recibo",
|
||||
"workspace.payments.type.credit": "crédito",
|
||||
"workspace.payments.type.subscription": "assinatura",
|
||||
"workspace.payments.view": "Ver",
|
||||
|
||||
"workspace.black.loading": "Carregando...",
|
||||
"workspace.black.time.day": "dia",
|
||||
"workspace.black.time.days": "dias",
|
||||
"workspace.black.time.hour": "hora",
|
||||
"workspace.black.time.hours": "horas",
|
||||
"workspace.black.time.minute": "minuto",
|
||||
"workspace.black.time.minutes": "minutos",
|
||||
"workspace.black.time.fewSeconds": "alguns segundos",
|
||||
"workspace.black.subscription.title": "Assinatura",
|
||||
"workspace.black.subscription.message": "Você assina o OpenCode Black por ${{plan}} por mês.",
|
||||
"workspace.black.subscription.manage": "Gerenciar Assinatura",
|
||||
"workspace.black.subscription.rollingUsage": "Uso de 5 horas",
|
||||
"workspace.black.subscription.weeklyUsage": "Uso Semanal",
|
||||
"workspace.black.subscription.resetsIn": "Reinicia em",
|
||||
"workspace.black.subscription.useBalance": "Use seu saldo disponível após atingir os limites de uso",
|
||||
"workspace.black.waitlist.title": "Lista de Espera",
|
||||
"workspace.black.waitlist.joined": "Você está na lista de espera para o plano OpenCode Black de ${{plan}} por mês.",
|
||||
"workspace.black.waitlist.ready": "Estamos prontos para inscrever você no plano OpenCode Black de ${{plan}} por mês.",
|
||||
"workspace.black.waitlist.leave": "Sair da Lista de Espera",
|
||||
"workspace.black.waitlist.leaving": "Saindo...",
|
||||
"workspace.black.waitlist.left": "Saiu",
|
||||
"workspace.black.waitlist.enroll": "Inscrever-se",
|
||||
"workspace.black.waitlist.enrolling": "Inscrevendo-se...",
|
||||
"workspace.black.waitlist.enrolled": "Inscrito",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Ao clicar em Inscrever-se, sua assinatura começará imediatamente e seu cartão será cobrado.",
|
||||
|
||||
"workspace.lite.loading": "Carregando...",
|
||||
"workspace.lite.time.day": "dia",
|
||||
"workspace.lite.time.days": "dias",
|
||||
"workspace.lite.time.hour": "hora",
|
||||
"workspace.lite.time.hours": "horas",
|
||||
"workspace.lite.time.minute": "minuto",
|
||||
"workspace.lite.time.minutes": "minutos",
|
||||
"workspace.lite.time.fewSeconds": "alguns segundos",
|
||||
"workspace.lite.subscription.message": "Você assina o OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Gerenciar Assinatura",
|
||||
"workspace.lite.subscription.rollingUsage": "Uso Contínuo",
|
||||
"workspace.lite.subscription.weeklyUsage": "Uso Semanal",
|
||||
"workspace.lite.subscription.monthlyUsage": "Uso Mensal",
|
||||
"workspace.lite.subscription.resetsIn": "Reinicia em",
|
||||
"workspace.lite.subscription.useBalance": "Use seu saldo disponível após atingir os limites de uso",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Selecione "OpenCode Go" como provedor na sua configuração do opencode para usar os modelos Go.',
|
||||
"workspace.lite.black.message":
|
||||
"Você está atualmente inscrito no OpenCode Black ou na lista de espera. Por favor, cancele a assinatura primeiro se desejar mudar para o Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Outro membro neste workspace já assina o OpenCode Go. Apenas um membro por workspace pode assinar.",
|
||||
"workspace.lite.promo.description":
|
||||
"O OpenCode Go começa em {{price}}, depois $10/mês, e oferece acesso confiável a modelos de codificação abertos populares com limites de uso generosos.",
|
||||
"workspace.lite.promo.price": "$5 no primeiro mês",
|
||||
"workspace.lite.promo.modelsTitle": "O que está incluído",
|
||||
"workspace.lite.promo.footer":
|
||||
"O plano é projetado principalmente para usuários internacionais, com modelos hospedados nos EUA, UE e Singapura para acesso global estável. Preços e limites de uso podem mudar conforme aprendemos com o uso inicial e feedback.",
|
||||
"workspace.lite.promo.subscribe": "Assinar Go",
|
||||
"workspace.lite.promo.subscribing": "Redirecionando...",
|
||||
"workspace.lite.promo.otherMethods": "Outros métodos de pagamento",
|
||||
"workspace.lite.promo.selectMethod": "Selecionar método de pagamento",
|
||||
|
||||
"download.title": "OpenCode | Baixar",
|
||||
"download.meta.description": "Baixe o OpenCode para macOS, Windows e Linux",
|
||||
"download.hero.title": "Baixar OpenCode",
|
||||
"download.hero.subtitle": "Disponível em Beta para macOS, Windows e Linux",
|
||||
"download.hero.button": "Baixar para {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "Extensões OpenCode",
|
||||
"download.section.integrations": "Integrações OpenCode",
|
||||
"download.action.download": "Baixar",
|
||||
"download.action.install": "Instalar",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Não necessariamente, mas provavelmente. Você precisará de uma assinatura de IA se quiser conectar o OpenCode a um provedor pago, embora você possa trabalhar com",
|
||||
"download.faq.a3.localLink": "modelos locais",
|
||||
"download.faq.a3.afterLocal.beforeZen": "de graça. Embora incentivemos os usuários a usar o",
|
||||
"download.faq.a3.afterZen":
|
||||
", o OpenCode funciona com todos os provedores populares, como OpenAI, Anthropic, xAI etc.",
|
||||
|
||||
"download.faq.a5.p1": "O OpenCode é 100% gratuito para usar.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Quaisquer custos adicionais virão da sua assinatura de um provedor de modelo. Embora o OpenCode funcione com qualquer provedor de modelo, recomendamos o uso do",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1":
|
||||
"Seus dados e informações só são armazenados quando você cria links compartilháveis no OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "Saiba mais sobre",
|
||||
"download.faq.a6.shareLink": "páginas de compartilhamento",
|
||||
|
||||
"enterprise.title": "OpenCode | Soluções empresariais para sua organização",
|
||||
"enterprise.meta.description": "Contate a OpenCode para soluções empresariais",
|
||||
"enterprise.hero.title": "Seu código é seu",
|
||||
"enterprise.hero.body1":
|
||||
"O OpenCode opera com segurança dentro da sua organização, sem dados ou contexto armazenados e sem restrições de licenciamento ou reivindicações de propriedade. Inicie um teste com sua equipe e, em seguida, implante em toda a organização integrando-o ao seu SSO e gateway de IA interno.",
|
||||
"enterprise.hero.body2": "Deixe-nos saber como podemos ajudar.",
|
||||
"enterprise.form.name.label": "Nome completo",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Cargo",
|
||||
"enterprise.form.role.placeholder": "Presidente Executivo",
|
||||
"enterprise.form.company.label": "Empresa",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "E-mail corporativo",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Telefone",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "Qual problema você está tentando resolver?",
|
||||
"enterprise.form.message.placeholder": "Precisamos de ajuda com...",
|
||||
"enterprise.form.send": "Enviar",
|
||||
"enterprise.form.sending": "Enviando...",
|
||||
"enterprise.form.success": "Mensagem enviada, entraremos em contato em breve.",
|
||||
"enterprise.form.success.submitted": "Formulário enviado com sucesso.",
|
||||
"enterprise.form.error.allFieldsRequired": "Todos os campos são obrigatórios.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Formato de e-mail inválido.",
|
||||
"enterprise.form.error.internalServer": "Erro interno do servidor.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "O que é OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise é para organizações que desejam garantir que seu código e dados nunca saiam de sua infraestrutura. Isso pode ser feito usando uma configuração centralizada que se integra ao seu SSO e gateway de IA interno.",
|
||||
"enterprise.faq.q2": "Como faço para começar com o OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Basta começar com um teste interno com sua equipe. O OpenCode por padrão não armazena seu código ou dados de contexto, facilitando o início. Em seguida, entre em contato conosco para discutir opções de preços e implementação.",
|
||||
"enterprise.faq.q3": "Como funciona o preço empresarial?",
|
||||
"enterprise.faq.a3":
|
||||
"Oferecemos preços empresariais por assento. Se você tiver seu próprio gateway de LLM, não cobramos pelos tokens usados. Para mais detalhes, entre em contato conosco para um orçamento personalizado com base nas necessidades da sua organização.",
|
||||
"enterprise.faq.q4": "Meus dados estão seguros com o OpenCode Enterprise?",
|
||||
"enterprise.faq.a4":
|
||||
"Sim. O OpenCode não armazena seu código ou dados de contexto. Todo o processamento acontece localmente ou por meio de chamadas de API diretas para seu provedor de IA. Com configuração centralizada e integração de SSO, seus dados permanecem seguros dentro da infraestrutura de sua organização.",
|
||||
|
||||
"brand.title": "OpenCode | Marca",
|
||||
"brand.meta.description": "Diretrizes da marca OpenCode",
|
||||
"brand.heading": "Diretrizes da marca",
|
||||
"brand.subtitle": "Recursos e ativos para ajudá-lo a trabalhar com a marca OpenCode.",
|
||||
"brand.downloadAll": "Baixar todos os recursos",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "Notas de versão e changelog do OpenCode",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "Novas atualizações e melhorias no OpenCode",
|
||||
"changelog.empty": "Nenhuma entrada de changelog encontrada.",
|
||||
"changelog.viewJson": "Ver JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agente",
|
||||
"bench.list.table.model": "Modelo",
|
||||
"bench.list.table.score": "Pontuação",
|
||||
"bench.submission.error.allFieldsRequired": "Todos os campos são obrigatórios.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Tarefa não encontrada",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "Agente",
|
||||
"bench.detail.labels.model": "Modelo",
|
||||
"bench.detail.labels.task": "Tarefa",
|
||||
"bench.detail.labels.repo": "Repositório",
|
||||
"bench.detail.labels.from": "De",
|
||||
"bench.detail.labels.to": "Para",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Duração Média",
|
||||
"bench.detail.labels.averageScore": "Pontuação Média",
|
||||
"bench.detail.labels.averageCost": "Custo Médio",
|
||||
"bench.detail.labels.summary": "Resumo",
|
||||
"bench.detail.labels.runs": "Execuções",
|
||||
"bench.detail.labels.score": "Pontuação",
|
||||
"bench.detail.labels.base": "Base",
|
||||
"bench.detail.labels.penalty": "Penalidade",
|
||||
"bench.detail.labels.weight": "peso",
|
||||
"bench.detail.table.run": "Execução",
|
||||
"bench.detail.table.score": "Pontuação (Base - Penalidade)",
|
||||
"bench.detail.table.cost": "Custo",
|
||||
"bench.detail.table.duration": "Duração",
|
||||
"bench.detail.run.title": "Execução {{n}}",
|
||||
"bench.detail.rawJson": "JSON Bruto",
|
||||
} satisfies Dict
|
||||
785
qimingcode/packages/console/app/src/i18n/da.ts
Normal file
@@ -0,0 +1,785 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Dokumentation",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Log ind",
|
||||
"nav.free": "Download",
|
||||
"nav.home": "Hjem",
|
||||
"nav.openMenu": "Åbn menu",
|
||||
"nav.getStartedFree": "Kom i gang gratis",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Kopier logo som SVG",
|
||||
"nav.context.copyWordmark": "Kopier wordmark som SVG",
|
||||
"nav.context.brandAssets": "Brand-assets",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Dokumentation",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Brand",
|
||||
"legal.privacy": "Privatliv",
|
||||
"legal.terms": "Vilkår",
|
||||
|
||||
"email.title": "Få besked først, når vi lancerer nye produkter",
|
||||
"email.subtitle": "Tilmeld dig ventelisten for tidlig adgang.",
|
||||
"email.placeholder": "E-mailadresse",
|
||||
"email.subscribe": "Tilmeld",
|
||||
"email.success": "Næsten færdig - tjek din indbakke og bekræft din e-mailadresse",
|
||||
|
||||
"notFound.title": "Ikke fundet | opencode",
|
||||
"notFound.heading": "404 - Siden blev ikke fundet",
|
||||
"notFound.home": "Hjem",
|
||||
"notFound.docs": "Dokumentation",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "opencode logo light",
|
||||
"notFound.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"user.logout": "Log ud",
|
||||
|
||||
"auth.callback.error.codeMissing": "Ingen autorisationskode fundet.",
|
||||
|
||||
"workspace.select": "Vælg workspace",
|
||||
"workspace.createNew": "+ Opret nyt workspace",
|
||||
"workspace.modal.title": "Opret nyt workspace",
|
||||
"workspace.modal.placeholder": "Indtast workspace-navn",
|
||||
|
||||
"common.cancel": "Annuller",
|
||||
"common.creating": "Opretter...",
|
||||
"common.create": "Opret",
|
||||
|
||||
"common.videoUnsupported": "Din browser understøtter ikke video-tagget.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Læs mere",
|
||||
|
||||
"error.invalidPlan": "Ugyldig plan",
|
||||
"error.workspaceRequired": "Workspace-ID er påkrævet",
|
||||
"error.alreadySubscribed": "Dette workspace har allerede et abonnement",
|
||||
"error.limitRequired": "Grænse er påkrævet.",
|
||||
"error.monthlyLimitInvalid": "Angiv en gyldig månedlig grænse.",
|
||||
"error.workspaceNameRequired": "Workspace-navn er påkrævet.",
|
||||
"error.nameTooLong": "Navnet må højst være på 255 tegn.",
|
||||
"error.emailRequired": "E-mail er påkrævet",
|
||||
"error.roleRequired": "Rolle er påkrævet",
|
||||
"error.idRequired": "ID er påkrævet",
|
||||
"error.nameRequired": "Navn er påkrævet",
|
||||
"error.providerRequired": "Udbyder er påkrævet",
|
||||
"error.apiKeyRequired": "API-nøgle er påkrævet",
|
||||
"error.modelRequired": "Model er påkrævet",
|
||||
"error.reloadAmountMin": "Genopfyldningsbeløb skal være mindst ${{amount}}",
|
||||
"error.reloadTriggerMin": "Saldogrænse skal være mindst ${{amount}}",
|
||||
|
||||
"app.meta.description": "OpenCode - Den open source kodningsagent.",
|
||||
|
||||
"home.title": "OpenCode | Den open source AI-kodningsagent",
|
||||
|
||||
"temp.title": "opencode | AI-kodningsagent bygget til terminalen",
|
||||
"temp.hero.title": "AI-kodningsagenten bygget til terminalen",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "Kom i gang",
|
||||
"temp.feature.native.title": "Native TUI",
|
||||
"temp.feature.native.body": "En responsiv, native, tema-bar terminal-UI",
|
||||
"temp.feature.zen.beforeLink": "En",
|
||||
"temp.feature.zen.link": "kurateret liste over modeller",
|
||||
"temp.feature.zen.afterLink": "leveret af opencode",
|
||||
"temp.feature.models.beforeLink": "Understøtter 75+ LLM-udbydere gennem",
|
||||
"temp.feature.models.afterLink": ", inklusive lokale modeller",
|
||||
"temp.screenshot.caption": "opencode TUI med tokyonight-temaet",
|
||||
"temp.screenshot.alt": "opencode TUI med tokyonight-temaet",
|
||||
"temp.logoLightAlt": "opencode logo light",
|
||||
"temp.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"home.banner.badge": "Ny",
|
||||
"home.banner.text": "Desktop-app tilgængelig i beta",
|
||||
"home.banner.platforms": "på macOS, Windows og Linux",
|
||||
"home.banner.downloadNow": "Download nu",
|
||||
"home.banner.downloadBetaNow": "Download desktop-betaen nu",
|
||||
|
||||
"home.hero.title": "Den open source AI-kodningsagent",
|
||||
"home.hero.subtitle.a": "Gratis modeller inkluderet, eller forbind enhver model fra enhver udbyder,",
|
||||
"home.hero.subtitle.b": "inklusive Claude, GPT, Gemini og mere.",
|
||||
|
||||
"home.install.ariaLabel": "Installationsmuligheder",
|
||||
|
||||
"home.what.title": "Hvad er OpenCode?",
|
||||
"home.what.body":
|
||||
"OpenCode er en open source agent, der hjælper dig med at skrive kode i din terminal, IDE eller desktop.",
|
||||
"home.what.lsp.title": "LSP aktiveret",
|
||||
"home.what.lsp.body": "Indlæser automatisk de rigtige LSP'er til LLM'en",
|
||||
"home.what.multiSession.title": "Multi-session",
|
||||
"home.what.multiSession.body": "Start flere agenter parallelt på det samme projekt",
|
||||
"home.what.shareLinks.title": "Del links",
|
||||
"home.what.shareLinks.body": "Del et link til enhver session til reference eller debugging",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Log ind med GitHub for at bruge din Copilot-konto",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Log ind med OpenAI for at bruge din ChatGPT Plus- eller Pro-konto",
|
||||
"home.what.anyModel.title": "Enhver model",
|
||||
"home.what.anyModel.body": "75+ LLM-udbydere via Models.dev, inklusive lokale modeller",
|
||||
"home.what.anyEditor.title": "Enhver editor",
|
||||
"home.what.anyEditor.body": "Tilgængelig som terminal-interface, desktop-app og IDE-udvidelse",
|
||||
"home.what.readDocs": "Læs docs",
|
||||
|
||||
"home.growth.title": "Den open source AI-kodningsagent",
|
||||
"home.growth.body":
|
||||
"Med over <strong>{{stars}}</strong> GitHub-stjerner, <strong>{{contributors}}</strong> bidragsydere og over <strong>{{commits}}</strong> commits bruges OpenCode af over <strong>{{monthlyUsers}}</strong> udviklere hver måned.",
|
||||
"home.growth.githubStars": "GitHub-stjerner",
|
||||
"home.growth.contributors": "Bidragsydere",
|
||||
"home.growth.monthlyDevs": "Månedlige udviklere",
|
||||
|
||||
"home.privacy.title": "Bygget med privatliv først",
|
||||
"home.privacy.body":
|
||||
"OpenCode gemmer ikke din kode eller kontekstdata, så den kan bruges i privatlivsfølsomme miljøer.",
|
||||
"home.privacy.learnMore": "Læs mere om",
|
||||
"home.privacy.link": "privatliv",
|
||||
|
||||
"home.faq.q1": "Hvad er OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode er en open source agent, der hjælper dig med at skrive og køre kode med enhver AI-model. Den er tilgængelig som terminal-interface, desktop-app eller IDE-udvidelse.",
|
||||
"home.faq.q2": "Hvordan bruger jeg OpenCode?",
|
||||
"home.faq.a2.before": "Den nemmeste måde at komme i gang på er at læse",
|
||||
"home.faq.a2.link": "introen",
|
||||
"home.faq.q3": "Skal jeg have ekstra AI-abonnementer for at bruge OpenCode?",
|
||||
"home.faq.a3.p1":
|
||||
"Ikke nødvendigvis. OpenCode kommer med gratis modeller, som du kan bruge uden at oprette en konto.",
|
||||
"home.faq.a3.p2.beforeZen": "Derudover kan du bruge populære kodningsmodeller ved at oprette en",
|
||||
"home.faq.a3.p2.afterZen": " konto.",
|
||||
"home.faq.a3.p3":
|
||||
"Vi opfordrer til at bruge Zen, men OpenCode virker også med populære udbydere som OpenAI, Anthropic, xAI osv.",
|
||||
"home.faq.a3.p4.beforeLocal": "Du kan endda forbinde dine",
|
||||
"home.faq.a3.p4.localLink": "lokale modeller",
|
||||
"home.faq.q4": "Kan jeg bruge mine eksisterende AI-abonnementer med OpenCode?",
|
||||
"home.faq.a4.p1":
|
||||
"Ja. OpenCode understøtter abonnementer fra alle store udbydere. Du kan bruge Claude Pro/Max, ChatGPT Plus/Pro eller GitHub Copilot.",
|
||||
"home.faq.q5": "Kan jeg kun bruge OpenCode i terminalen?",
|
||||
"home.faq.a5.beforeDesktop": "Ikke længere! OpenCode er nu tilgængelig som en app til",
|
||||
"home.faq.a5.desktop": "desktop",
|
||||
"home.faq.a5.and": "og",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "Hvad koster OpenCode?",
|
||||
"home.faq.a6":
|
||||
"OpenCode er 100% gratis at bruge. Det kommer også med et sæt gratis modeller. Der kan være ekstra omkostninger, hvis du forbinder en anden udbyder.",
|
||||
"home.faq.q7": "Hvad med data og privatliv?",
|
||||
"home.faq.a7.p1": "Dine data gemmes kun, når du bruger vores gratis modeller eller opretter delbare links.",
|
||||
"home.faq.a7.p2.beforeModels": "Læs mere om",
|
||||
"home.faq.a7.p2.modelsLink": "vores modeller",
|
||||
"home.faq.a7.p2.and": "og",
|
||||
"home.faq.a7.p2.shareLink": "delingssider",
|
||||
"home.faq.q8": "Er OpenCode open source?",
|
||||
"home.faq.a8.p1": "Ja, OpenCode er fuldt open source. Kildekoden er offentlig på",
|
||||
"home.faq.a8.p2": "under",
|
||||
"home.faq.a8.mitLicense": "MIT-licensen",
|
||||
"home.faq.a8.p3":
|
||||
", hvilket betyder at alle kan bruge, ændre eller bidrage til udviklingen. Alle i communityet kan oprette issues, indsende pull requests og udvide funktionalitet.",
|
||||
|
||||
"home.zenCta.title": "Få adgang til pålidelige, optimerede modeller til kodningsagenter",
|
||||
"home.zenCta.body":
|
||||
"Zen giver dig adgang til et håndplukket sæt AI-modeller, som OpenCode har testet og benchmarked specifikt til kodningsagenter. Du behøver ikke bekymre dig om svingende performance og kvalitet på tværs af udbydere: brug validerede modeller, der virker.",
|
||||
"home.zenCta.link": "Læs om Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | Et kurateret sæt af pålidelige, optimerede modeller til kodningsagenter",
|
||||
"zen.hero.title": "Pålidelige optimerede modeller til kodningsagenter",
|
||||
"zen.hero.body":
|
||||
"Zen giver dig adgang til et kurateret sæt AI-modeller, som OpenCode har testet og benchmarked specifikt til kodningsagenter. Du behøver ikke bekymre dig om svingende performance og kvalitet: brug validerede modeller, der virker.",
|
||||
|
||||
"zen.faq.q1": "Hvad er OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen er et kurateret sæt AI-modeller testet og benchmarked til kodningsagenter, skabt af teamet bag OpenCode.",
|
||||
"zen.faq.q2": "Hvad gør Zen mere præcis?",
|
||||
"zen.faq.a2":
|
||||
"Zen tilbyder kun modeller, der er testet og benchmarked specifikt til kodningsagenter. Du ville ikke bruge en smørkniv til at skære steak; brug ikke dårlige modeller til kodning.",
|
||||
"zen.faq.q3": "Er Zen billigere?",
|
||||
"zen.faq.a3":
|
||||
"Zen er ikke for profit. Zen videregiver omkostningerne fra modeludbyderne til dig. Jo mere Zen bruges, desto mere kan OpenCode forhandle bedre priser og give dem videre til dig.",
|
||||
"zen.faq.q4": "Hvad koster Zen?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "opkræver per request",
|
||||
"zen.faq.a4.p1.afterPricing": "uden markups, så du betaler præcis det, som modeludbyderen opkræver.",
|
||||
"zen.faq.a4.p2.beforeAccount": "Din samlede pris afhænger af brug, og du kan sætte månedlige udgiftsgrænser i din",
|
||||
"zen.faq.a4.p2.accountLink": "konto",
|
||||
"zen.faq.a4.p3":
|
||||
"For at dække omkostninger tilføjer OpenCode kun et lille betalingsgebyr på $1.23 per $20 saldo-opfyldning.",
|
||||
"zen.faq.q5": "Hvad med data og privatliv?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Alle Zen-modeller hostes i USA. Udbydere følger en zero-retention-policy og bruger ikke dine data til modeltræning, med de",
|
||||
"zen.faq.a5.exceptionsLink": "følgende undtagelser",
|
||||
"zen.faq.q6": "Kan jeg sætte udgiftsgrænser?",
|
||||
"zen.faq.a6": "Ja, du kan sætte månedlige udgiftsgrænser i din konto.",
|
||||
"zen.faq.q7": "Kan jeg afmelde?",
|
||||
"zen.faq.a7": "Ja, du kan deaktivere betaling når som helst og bruge din resterende saldo.",
|
||||
"zen.faq.q8": "Kan jeg bruge Zen med andre kodningsagenter?",
|
||||
"zen.faq.a8":
|
||||
"Selvom Zen fungerer godt med OpenCode, kan du bruge Zen med enhver agent. Følg opsætningsinstruktionerne i din foretrukne kodningsagent.",
|
||||
|
||||
"zen.cta.start": "Kom godt i gang med Zen",
|
||||
"zen.pricing.title": "Tilføj $20 Pay as you go-saldo",
|
||||
"zen.pricing.fee": "(+$1.23 kortbehandlingsgebyr)",
|
||||
"zen.pricing.body": "Brug med enhver agent. Indstil månedlige forbrugsgrænser. Annuller til enhver tid.",
|
||||
"zen.problem.title": "Hvilket problem løser Zen?",
|
||||
"zen.problem.body":
|
||||
"Der er så mange modeller tilgængelige, men kun få fungerer godt med kodningsagenter. De fleste udbydere konfigurerer dem anderledes med forskellige resultater.",
|
||||
"zen.problem.subtitle": "Vi løser dette for alle, ikke kun OpenCode-brugere.",
|
||||
"zen.problem.item1": "Test af udvalgte modeller og høring af deres teams",
|
||||
"zen.problem.item2": "Samarbejde med udbydere for at sikre, at de bliver leveret korrekt",
|
||||
"zen.problem.item3": "Benchmarking af alle model-udbyder kombinationer, vi anbefaler",
|
||||
"zen.how.title": "Hvordan Zen virker",
|
||||
"zen.how.body": "Selvom vi foreslår, at du bruger Zen med OpenCode, kan du bruge Zen med enhver agent.",
|
||||
"zen.how.step1.title": "Tilmeld dig og tilføj saldo på $20",
|
||||
"zen.how.step1.beforeLink": "følg",
|
||||
"zen.how.step1.link": "opsætningsinstruktioner",
|
||||
"zen.how.step2.title": "Brug Zen med gennemsigtige priser",
|
||||
"zen.how.step2.link": "betal per request",
|
||||
"zen.how.step2.afterLink": "med nul markups",
|
||||
"zen.how.step3.title": "Auto-top op",
|
||||
"zen.how.step3.body": "når din saldo når $5, tilføjer vi automatisk $20",
|
||||
"zen.privacy.title": "Dit privatliv er vigtigt for os",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Alle Zen-modeller er hostet i USA. Udbydere følger en nulopbevaringspolitik og bruger ikke dine data til modeltræning med",
|
||||
"zen.privacy.exceptionsLink": "følgende undtagelser",
|
||||
|
||||
"go.title": "OpenCode Go | Kodningsmodeller til lav pris for alle",
|
||||
"go.meta.description":
|
||||
"Go starter ved $5 for den første måned, derefter $10/måned, med generøse 5-timers anmodningsgrænser for GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro og DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Kodningsmodeller til lav pris for alle",
|
||||
"go.hero.body":
|
||||
"Go bringer agentisk kodning til programmører over hele verden. Med generøse grænser og pålidelig adgang til de mest kapable open source-modeller, så du kan bygge med kraftfulde agenter uden at bekymre dig om omkostninger eller tilgængelighed.",
|
||||
|
||||
"go.cta.start": "Abonner på Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Abonner på Go",
|
||||
"go.cta.price": "$10/måned",
|
||||
"go.cta.promo": "$5 første måned",
|
||||
"go.pricing.body":
|
||||
"Brug med enhver agent. $5 første måned, derefter $10/måned. Tank op med kredit efter behov. Afmeld når som helst.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: brugsgrænsen tredoblet til 27. april",
|
||||
"go.graph.free": "Gratis",
|
||||
"go.graph.freePill": "Big Pickle og gratis modeller",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Forespørgsler pr. 5 timer",
|
||||
"go.graph.usageLimits": "Brugsgrænser",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Forespørgsler pr. 5t: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "har været livsændrende, det er virkelig en no-brainer.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, og ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 ud af 5 personer på vores team elsker at bruge",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "Jeg kan ikke anbefale",
|
||||
"go.testimonials.adam.quoteAfter": "nok. Seriøst, det er virkelig godt.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Med",
|
||||
"go.testimonials.david.quoteAfter": "ved jeg, at alle modellerne er testede og perfekte til kodningsagenter.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 gange)",
|
||||
"go.testimonials.frank.quote": "Jeg ville ønske, jeg stadig var hos Nvidia.",
|
||||
"go.problem.title": "Hvilket problem løser Go?",
|
||||
"go.problem.body":
|
||||
"Vi fokuserer på at bringe OpenCode-oplevelsen ud til så mange som muligt. OpenCode Go er et lavprisabonnement: $5 for den første måned, derefter $10/måned. Det giver generøse grænser og pålidelig adgang til de mest kapable open source-modeller.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Lavpris abonnementspriser",
|
||||
"go.problem.item2": "Generøse grænser og pålidelig adgang",
|
||||
"go.problem.item3": "Bygget til så mange programmører som muligt",
|
||||
"go.problem.item4":
|
||||
"Inkluderer GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro og DeepSeek V4 Flash",
|
||||
"go.how.title": "Hvordan Go virker",
|
||||
"go.how.body":
|
||||
"Go starter ved $5 for den første måned, derefter $10/måned. Du kan bruge det med OpenCode eller enhver agent.",
|
||||
"go.how.step1.title": "Opret en konto",
|
||||
"go.how.step1.beforeLink": "følg",
|
||||
"go.how.step1.link": "opsætningsinstruktionerne",
|
||||
"go.how.step2.title": "Abonner på Go",
|
||||
"go.how.step2.link": "$5 første måned",
|
||||
"go.how.step2.afterLink": "derefter $10/måned med generøse grænser",
|
||||
"go.how.step3.title": "Start kodning",
|
||||
"go.how.step3.body": "med pålidelig adgang til open source-modeller",
|
||||
"go.privacy.title": "Dit privatliv er vigtigt for os",
|
||||
"go.privacy.body":
|
||||
"Planen er primært designet til internationale brugere, med modeller hostet i USA, EU og Singapore for stabil global adgang.",
|
||||
"go.privacy.contactAfter": "hvis du har spørgsmål.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Go-modeller hostes i USA. Udbydere følger en nulopbevaringspolitik og bruger ikke dine data til modeltræning, med de",
|
||||
"go.privacy.exceptionsLink": "følgende undtagelser",
|
||||
"go.faq.q1": "Hvad er OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go er et lavprisabonnement, der giver dig pålidelig adgang til kapable open source-modeller til agentisk kodning.",
|
||||
"go.faq.q2": "Hvilke modeller inkluderer Go?",
|
||||
"go.faq.a2": "Go inkluderer modellerne nedenfor med generøse grænser og pålidelig adgang.",
|
||||
"go.faq.q3": "Er Go det samme som Zen?",
|
||||
"go.faq.a3":
|
||||
"Nej. Zen er pay-as-you-go, mens Go starter ved $5 for den første måned, derefter $10/måned, med generøse grænser og pålidelig adgang til open source-modellerne GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro og DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "Hvad koster Go?",
|
||||
"go.faq.a4.p1.beforePricing": "Go koster",
|
||||
"go.faq.a4.p1.pricingLink": "$5 første måned",
|
||||
"go.faq.a4.p1.afterPricing": "derefter $10/måned med generøse grænser.",
|
||||
"go.faq.a4.p2.beforeAccount": "Du kan administrere dit abonnement i din",
|
||||
"go.faq.a4.p2.accountLink": "konto",
|
||||
"go.faq.a4.p3": "Annuller til enhver tid.",
|
||||
"go.faq.q5": "Hvad med data og privatliv?",
|
||||
"go.faq.a5.body":
|
||||
"Planen er primært designet til internationale brugere, med modeller hostet i USA, EU og Singapore for stabil global adgang. Vores udbydere følger en nulopbevaringspolitik og bruger ikke dine data til modeltræning.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Go-modeller hostes i USA. Udbydere følger en nulopbevaringspolitik og bruger ikke dine data til modeltræning, med de",
|
||||
"go.faq.a5.exceptionsLink": "følgende undtagelser",
|
||||
"go.faq.q6": "Kan jeg tanke kredit op?",
|
||||
"go.faq.a6": "Hvis du har brug for mere forbrug, kan du tanke kredit op på din konto.",
|
||||
"go.faq.q7": "Kan jeg annullere?",
|
||||
"go.faq.a7": "Ja, du kan annullere til enhver tid.",
|
||||
"go.faq.q8": "Kan jeg bruge Go med andre kodningsagenter?",
|
||||
"go.faq.a8": "Ja, du kan bruge Go med enhver agent. Følg opsætningsinstruktionerne i din foretrukne kodningsagent.",
|
||||
|
||||
"go.faq.q9": "Hvad er forskellen på gratis modeller og Go?",
|
||||
"go.faq.a9":
|
||||
"Gratis modeller inkluderer Big Pickle plus salgsfremmende modeller tilgængelige på det tidspunkt, med en kvote på 200 forespørgsler/dag. Go inkluderer GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro og DeepSeek V4 Flash med højere anmodningskvoter håndhævet over rullende vinduer (5-timers, ugentlig og månedlig), nogenlunde svarende til $12 pr. 5 timer, $30 pr. uge og $60 pr. måned (faktiske anmodningstal varierer efter model og brug).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Hastighedsgrænse overskredet. Prøv venligst igen senere.",
|
||||
"zen.api.error.modelNotSupported": "Model {{model}} understøttes ikke",
|
||||
"zen.api.error.modelFormatNotSupported": "Model {{model}} understøttes ikke for format {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "Ingen udbyder tilgængelig",
|
||||
"zen.api.error.providerNotSupported": "Udbyder {{provider}} understøttes ikke",
|
||||
"zen.api.error.missingApiKey": "Manglende API-nøgle.",
|
||||
"zen.api.error.invalidApiKey": "Ugyldig API-nøgle.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Abonnementskvote overskredet. Prøv igen om {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Abonnementskvote overskredet. Du kan fortsætte med at bruge gratis modeller.",
|
||||
"zen.api.error.noPaymentMethod": "Ingen betalingsmetode. Tilføj en betalingsmetode her: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Utilstrækkelig saldo. Administrer din fakturering her: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Dit workspace har nået sin månedlige forbrugsgrænse på ${{amount}}. Administrer dine grænser her: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Du har nået din månedlige forbrugsgrænse på ${{amount}}. Administrer dine grænser her: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "Modellen er deaktiveret",
|
||||
"zen.api.error.trialEnded":
|
||||
"Den gratis kampagne for {{model}} er afsluttet. Du kan fortsætte med at bruge modellen ved at abonnere på OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Få adgang til verdens bedste kodningsmodeller",
|
||||
"black.meta.description": "Få adgang til Claude, GPT, Gemini og mere med OpenCode Black-abonnementer.",
|
||||
"black.hero.title": "Få adgang til verdens bedste kodningsmodeller",
|
||||
"black.hero.subtitle": "Inklusive Claude, GPT, Gemini og mere",
|
||||
"black.title": "OpenCode Black | Priser",
|
||||
"black.paused": "Black-plantilmelding er midlertidigt sat på pause.",
|
||||
"black.plan.icon20": "Black 20-plan",
|
||||
"black.plan.icon100": "Black 100-plan",
|
||||
"black.plan.icon200": "Black 200-plan",
|
||||
"black.plan.multiplier100": "5x mere brug end Black 20",
|
||||
"black.plan.multiplier200": "20x mere brug end Black 20",
|
||||
"black.price.perMonth": "pr. måned",
|
||||
"black.price.perPersonBilledMonthly": "pr. person faktureret månedligt",
|
||||
"black.terms.1": "Dit abonnement starter ikke med det samme",
|
||||
"black.terms.2": "Du bliver sat på ventelisten og aktiveret snart",
|
||||
"black.terms.3": "Dit kort debiteres først, når dit abonnement er aktiveret",
|
||||
"black.terms.4": "Forbrugsgrænser gælder, tung automatiseret brug kan nå grænserne hurtigere",
|
||||
"black.terms.5": "Abonnementer er for enkeltpersoner, kontakt Enterprise for teams",
|
||||
"black.terms.6": "Grænser kan justeres, og planer kan blive udfaset i fremtiden",
|
||||
"black.terms.7": "Opsig dit abonnement når som helst",
|
||||
"black.action.continue": "Fortsæt",
|
||||
"black.finePrint.beforeTerms": "Viste priser inkluderer ikke gældende skat",
|
||||
"black.finePrint.terms": "Servicevilkår",
|
||||
"black.workspace.title": "OpenCode Black | Vælg workspace",
|
||||
"black.workspace.selectPlan": "Vælg et workspace til denne plan",
|
||||
"black.workspace.name": "Workspace {{n}}",
|
||||
"black.subscribe.title": "Abonner på OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Betalingsmetode",
|
||||
"black.subscribe.loadingPaymentForm": "Indlæser betalingsformular...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Vælg et workspace for at fortsætte",
|
||||
"black.subscribe.failurePrefix": "Åh nej!",
|
||||
"black.subscribe.error.generic": "Der opstod en fejl",
|
||||
"black.subscribe.error.invalidPlan": "Ugyldig plan",
|
||||
"black.subscribe.error.workspaceRequired": "Workspace-ID er påkrævet",
|
||||
"black.subscribe.error.alreadySubscribed": "Dette workspace har allerede et abonnement",
|
||||
"black.subscribe.processing": "Behandler...",
|
||||
"black.subscribe.submit": "Abonner ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Du bliver først debiteret, når dit abonnement er aktiveret",
|
||||
"black.subscribe.success.title": "Du er på OpenCode Black-ventelisten",
|
||||
"black.subscribe.success.subscriptionPlan": "Abonnementsplan",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Beløb",
|
||||
"black.subscribe.success.amountValue": "${{plan}} pr. måned",
|
||||
"black.subscribe.success.paymentMethod": "Betalingsmetode",
|
||||
"black.subscribe.success.dateJoined": "Dato tilmeldt",
|
||||
"black.subscribe.success.chargeNotice": "Dit kort vil blive debiteret, når dit abonnement er aktiveret",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Brug",
|
||||
"workspace.nav.apiKeys": "API-nøgler",
|
||||
"workspace.nav.members": "Medlemmer",
|
||||
"workspace.nav.billing": "Fakturering",
|
||||
"workspace.nav.settings": "Indstillinger",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Pålidelige optimerede modeller til kodningsagenter.",
|
||||
"workspace.lite.banner.beforeLink": "Lavpris kodemodeller for alle.",
|
||||
"workspace.home.billing.loading": "Indlæser...",
|
||||
"workspace.home.billing.enable": "Aktiver fakturering",
|
||||
"workspace.home.billing.currentBalance": "Nuværende saldo",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Testede og verificerede modeller",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Vi har benchmarket og testet modeller specifikt til kodningsagenter for at sikre den bedste ydeevne.",
|
||||
"workspace.newUser.feature.quality.title": "Højeste kvalitet",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Få adgang til modeller konfigureret til optimal ydeevne - ingen nedgraderinger eller routing til billigere udbydere.",
|
||||
"workspace.newUser.feature.lockin.title": "Ingen indlåsning",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Brug Zen med en hvilken som helst kodningsagent, og fortsæt med at bruge andre udbydere med opencode, når du vil.",
|
||||
"workspace.newUser.copyApiKey": "Kopiér API-nøgle",
|
||||
"workspace.newUser.copyKey": "Kopier nøgle",
|
||||
"workspace.newUser.copied": "Kopieret!",
|
||||
"workspace.newUser.step.enableBilling": "Aktiver fakturering",
|
||||
"workspace.newUser.step.login.before": "Kør",
|
||||
"workspace.newUser.step.login.after": "og vælg opencode",
|
||||
"workspace.newUser.step.pasteKey": "Indsæt din API-nøgle",
|
||||
"workspace.newUser.step.models.before": "Start opencode og kør",
|
||||
"workspace.newUser.step.models.after": "for at vælge en model",
|
||||
|
||||
"workspace.models.title": "Modeller",
|
||||
"workspace.models.subtitle.beforeLink": "Administrer, hvilke modeller workspace-medlemmer kan få adgang til.",
|
||||
"workspace.models.table.model": "Model",
|
||||
"workspace.models.table.enabled": "Aktiveret",
|
||||
|
||||
"workspace.providers.title": "Medbring din egen nøgle",
|
||||
"workspace.providers.subtitle": "Konfigurer dine egne API-nøgler fra AI-udbydere.",
|
||||
"workspace.providers.placeholder": "Indtast {{provider}} API-nøgle ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Konfigurer",
|
||||
"workspace.providers.edit": "Rediger",
|
||||
"workspace.providers.delete": "Slet",
|
||||
"workspace.providers.saving": "Gemmer...",
|
||||
"workspace.providers.save": "Gem",
|
||||
"workspace.providers.table.provider": "Udbyder",
|
||||
"workspace.providers.table.apiKey": "API-nøgle",
|
||||
|
||||
"workspace.usage.title": "Brugshistorik",
|
||||
"workspace.usage.subtitle": "Seneste API-brug og omkostninger.",
|
||||
"workspace.usage.empty": "Foretag dit første API-opkald for at komme i gang.",
|
||||
"workspace.usage.table.date": "Dato",
|
||||
"workspace.usage.table.model": "Model",
|
||||
"workspace.usage.table.input": "Input",
|
||||
"workspace.usage.table.output": "Output",
|
||||
"workspace.usage.table.cost": "Omkostning",
|
||||
"workspace.usage.table.session": "Session",
|
||||
"workspace.usage.breakdown.input": "Input",
|
||||
"workspace.usage.breakdown.cacheRead": "Cache læst",
|
||||
"workspace.usage.breakdown.cacheWrite": "Cache skriv",
|
||||
"workspace.usage.breakdown.output": "Output",
|
||||
"workspace.usage.breakdown.reasoning": "Ræsonnement",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Omkostninger",
|
||||
"workspace.cost.subtitle": "Brugsomkostninger opdelt efter model.",
|
||||
"workspace.cost.allModels": "Alle modeller",
|
||||
"workspace.cost.allKeys": "Alle nøgler",
|
||||
"workspace.cost.deletedSuffix": "(slettet)",
|
||||
"workspace.cost.empty": "Ingen brugsdata tilgængelige for den valgte periode.",
|
||||
"workspace.cost.subscriptionShort": "sub",
|
||||
|
||||
"workspace.keys.title": "API-nøgler",
|
||||
"workspace.keys.subtitle": "Administrer dine API-nøgler for at få adgang til opencode-tjenester.",
|
||||
"workspace.keys.create": "Opret API-nøgle",
|
||||
"workspace.keys.placeholder": "Indtast nøglenavn",
|
||||
"workspace.keys.empty": "Opret en opencode Gateway API-nøgle",
|
||||
"workspace.keys.table.name": "Navn",
|
||||
"workspace.keys.table.key": "Nøgle",
|
||||
"workspace.keys.table.createdBy": "Oprettet af",
|
||||
"workspace.keys.table.lastUsed": "Sidst brugt",
|
||||
"workspace.keys.copyApiKey": "Kopiér API-nøgle",
|
||||
"workspace.keys.delete": "Slet",
|
||||
|
||||
"workspace.members.title": "Medlemmer",
|
||||
"workspace.members.subtitle": "Administrer workspace-medlemmer og deres tilladelser.",
|
||||
"workspace.members.invite": "Inviter medlem",
|
||||
"workspace.members.inviting": "Inviterer...",
|
||||
"workspace.members.beta.beforeLink": "Workspaces er gratis for teams under betaversionen.",
|
||||
"workspace.members.form.invitee": "Inviteret",
|
||||
"workspace.members.form.emailPlaceholder": "Indtast e-mail",
|
||||
"workspace.members.form.role": "Rolle",
|
||||
"workspace.members.form.monthlyLimit": "Månedlig forbrugsgrænse",
|
||||
"workspace.members.noLimit": "Ingen grænse",
|
||||
"workspace.members.noLimitLowercase": "ingen grænse",
|
||||
"workspace.members.invited": "inviteret",
|
||||
"workspace.members.edit": "Rediger",
|
||||
"workspace.members.delete": "Slet",
|
||||
"workspace.members.saving": "Gemmer...",
|
||||
"workspace.members.save": "Gem",
|
||||
"workspace.members.table.email": "E-mail",
|
||||
"workspace.members.table.role": "Rolle",
|
||||
"workspace.members.table.monthLimit": "Månedsgrænse",
|
||||
"workspace.members.role.admin": "Admin",
|
||||
"workspace.members.role.adminDescription": "Kan administrere modeller, medlemmer og fakturering",
|
||||
"workspace.members.role.member": "Medlem",
|
||||
"workspace.members.role.memberDescription": "Kan kun generere API-nøgler til sig selv",
|
||||
|
||||
"workspace.settings.title": "Indstillinger",
|
||||
"workspace.settings.subtitle": "Opdater dit workspace-navn og præferencer.",
|
||||
"workspace.settings.workspaceName": "Workspace-navn",
|
||||
"workspace.settings.defaultName": "Standard",
|
||||
"workspace.settings.updating": "Opdaterer...",
|
||||
"workspace.settings.save": "Gem",
|
||||
"workspace.settings.edit": "Rediger",
|
||||
|
||||
"workspace.billing.title": "Fakturering",
|
||||
"workspace.billing.subtitle.beforeLink": "Administrer betalingsmetoder.",
|
||||
"workspace.billing.contactUs": "Kontakt os",
|
||||
"workspace.billing.subtitle.afterLink": "hvis du har spørgsmål.",
|
||||
"workspace.billing.currentBalance": "Nuværende saldo",
|
||||
"workspace.billing.add": "Tilføj $",
|
||||
"workspace.billing.enterAmount": "Indtast beløb",
|
||||
"workspace.billing.loading": "Indlæser...",
|
||||
"workspace.billing.addAction": "Tilføj",
|
||||
"workspace.billing.addBalance": "Tilføj saldo",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Forbundet til Stripe",
|
||||
"workspace.billing.manage": "Administrer",
|
||||
"workspace.billing.enable": "Aktiver fakturering",
|
||||
|
||||
"workspace.monthlyLimit.title": "Månedlig grænse",
|
||||
"workspace.monthlyLimit.subtitle": "Indstil en månedlig forbrugsgrænse for din konto.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Indstiller...",
|
||||
"workspace.monthlyLimit.set": "Sæt",
|
||||
"workspace.monthlyLimit.edit": "Rediger grænse",
|
||||
"workspace.monthlyLimit.noLimit": "Ingen forbrugsgrænse angivet.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Nuværende brug for",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "er $",
|
||||
|
||||
"workspace.redeem.title": "Indløs kupon",
|
||||
"workspace.redeem.subtitle": "Indløs en kuponkode for at få kreditter eller fordele.",
|
||||
"workspace.redeem.placeholder": "Indtast kuponkode",
|
||||
"workspace.redeem.redeem": "Indløs",
|
||||
"workspace.redeem.redeeming": "Indløser...",
|
||||
"workspace.redeem.success": "Kuponen blev indløst.",
|
||||
|
||||
"workspace.reload.title": "Automatisk genopfyldning",
|
||||
"workspace.reload.disabled.before": "Automatisk genopfyldning er",
|
||||
"workspace.reload.disabled.state": "deaktiveret",
|
||||
"workspace.reload.disabled.after": "Aktiver for automatisk at genopfylde, når saldoen er lav.",
|
||||
"workspace.reload.enabled.before": "Automatisk genopfyldning er",
|
||||
"workspace.reload.enabled.state": "aktiveret",
|
||||
"workspace.reload.enabled.middle": "Vi genopfylder",
|
||||
"workspace.reload.processingFee": "ekspeditionsgebyr",
|
||||
"workspace.reload.enabled.after": "når saldoen når",
|
||||
"workspace.reload.edit": "Rediger",
|
||||
"workspace.reload.enable": "Aktiver",
|
||||
"workspace.reload.enableAutoReload": "Aktiver automatisk genopfyldning",
|
||||
"workspace.reload.reloadAmount": "Genopfyld $",
|
||||
"workspace.reload.whenBalanceReaches": "Når saldoen når $",
|
||||
"workspace.reload.saving": "Gemmer...",
|
||||
"workspace.reload.save": "Gem",
|
||||
"workspace.reload.failedAt": "Genopfyldning mislykkedes kl",
|
||||
"workspace.reload.reason": "Årsag:",
|
||||
"workspace.reload.updatePaymentMethod": "Opdater din betalingsmetode, og prøv igen.",
|
||||
"workspace.reload.retrying": "Prøver igen...",
|
||||
"workspace.reload.retry": "Prøv igen",
|
||||
"workspace.reload.error.paymentFailed": "Betaling mislykkedes.",
|
||||
|
||||
"workspace.payments.title": "Betalingshistorik",
|
||||
"workspace.payments.subtitle": "Seneste betalingstransaktioner.",
|
||||
"workspace.payments.table.date": "Dato",
|
||||
"workspace.payments.table.paymentId": "Betalings-ID",
|
||||
"workspace.payments.table.amount": "Beløb",
|
||||
"workspace.payments.table.receipt": "Kvittering",
|
||||
"workspace.payments.type.credit": "kredit",
|
||||
"workspace.payments.type.subscription": "abonnement",
|
||||
"workspace.payments.view": "Vis",
|
||||
|
||||
"workspace.black.loading": "Indlæser...",
|
||||
"workspace.black.time.day": "dag",
|
||||
"workspace.black.time.days": "dage",
|
||||
"workspace.black.time.hour": "time",
|
||||
"workspace.black.time.hours": "timer",
|
||||
"workspace.black.time.minute": "minut",
|
||||
"workspace.black.time.minutes": "minutter",
|
||||
"workspace.black.time.fewSeconds": "et par sekunder",
|
||||
"workspace.black.subscription.title": "Abonnement",
|
||||
"workspace.black.subscription.message": "Du abonnerer på OpenCode Black for ${{plan}} om måneden.",
|
||||
"workspace.black.subscription.manage": "Administrer abonnement",
|
||||
"workspace.black.subscription.rollingUsage": "5-timers brug",
|
||||
"workspace.black.subscription.weeklyUsage": "Ugentlig brug",
|
||||
"workspace.black.subscription.resetsIn": "Nulstiller i",
|
||||
"workspace.black.subscription.useBalance": "Brug din tilgængelige saldo, når du har nået forbrugsgrænserne",
|
||||
"workspace.black.waitlist.title": "Venteliste",
|
||||
"workspace.black.waitlist.joined": "Du er på ventelisten for ${{plan}} per måned OpenCode Black plan.",
|
||||
"workspace.black.waitlist.ready": "Vi er klar til at tilmelde dig ${{plan}} per måned OpenCode Black plan.",
|
||||
"workspace.black.waitlist.leave": "Forlad venteliste",
|
||||
"workspace.black.waitlist.leaving": "Forlader...",
|
||||
"workspace.black.waitlist.left": "Forladt",
|
||||
"workspace.black.waitlist.enroll": "Tilmeld",
|
||||
"workspace.black.waitlist.enrolling": "Tilmelder...",
|
||||
"workspace.black.waitlist.enrolled": "Tilmeldt",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Når du klikker på Tilmeld, starter dit abonnement med det samme, og dit kort vil blive debiteret.",
|
||||
|
||||
"workspace.lite.loading": "Indlæser...",
|
||||
"workspace.lite.time.day": "dag",
|
||||
"workspace.lite.time.days": "dage",
|
||||
"workspace.lite.time.hour": "time",
|
||||
"workspace.lite.time.hours": "timer",
|
||||
"workspace.lite.time.minute": "minut",
|
||||
"workspace.lite.time.minutes": "minutter",
|
||||
"workspace.lite.time.fewSeconds": "et par sekunder",
|
||||
"workspace.lite.subscription.message": "Du abonnerer på OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Administrer abonnement",
|
||||
"workspace.lite.subscription.rollingUsage": "Løbende forbrug",
|
||||
"workspace.lite.subscription.weeklyUsage": "Ugentligt forbrug",
|
||||
"workspace.lite.subscription.monthlyUsage": "Månedligt forbrug",
|
||||
"workspace.lite.subscription.resetsIn": "Nulstiller i",
|
||||
"workspace.lite.subscription.useBalance": "Brug din tilgængelige saldo, når du har nået forbrugsgrænserne",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Vælg "OpenCode Go" som udbyder i din opencode-konfiguration for at bruge Go-modeller.',
|
||||
"workspace.lite.black.message":
|
||||
"Du abonnerer i øjeblikket på OpenCode Black eller er på venteliste. Afmeld venligst først, hvis du vil skifte til Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Et andet medlem i dette workspace abonnerer allerede på OpenCode Go. Kun ét medlem pr. workspace kan abonnere.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go starter ved {{price}}, derefter $10/måned, og giver pålidelig adgang til populære åbne kodningsmodeller med generøse brugsgrænser.",
|
||||
"workspace.lite.promo.price": "$5 for den første måned",
|
||||
"workspace.lite.promo.modelsTitle": "Hvad er inkluderet",
|
||||
"workspace.lite.promo.footer":
|
||||
"Planen er primært designet til internationale brugere, med modeller hostet i USA, EU og Singapore for stabil global adgang. Priser og forbrugsgrænser kan ændre sig, efterhånden som vi lærer af tidlig brug og feedback.",
|
||||
"workspace.lite.promo.subscribe": "Abonner på Go",
|
||||
"workspace.lite.promo.subscribing": "Omdirigerer...",
|
||||
"workspace.lite.promo.otherMethods": "Andre betalingsmetoder",
|
||||
"workspace.lite.promo.selectMethod": "Vælg betalingsmetode",
|
||||
|
||||
"download.title": "OpenCode | Download",
|
||||
"download.meta.description": "Download OpenCode til macOS, Windows og Linux",
|
||||
"download.hero.title": "Download OpenCode",
|
||||
"download.hero.subtitle": "Tilgængelig i beta til macOS, Windows og Linux",
|
||||
"download.hero.button": "Download til {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "OpenCode Extensions",
|
||||
"download.section.integrations": "OpenCode Integrations",
|
||||
"download.action.download": "Download",
|
||||
"download.action.install": "Installer",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Ikke nødvendigvis, men sandsynligvis. Du skal bruge et AI-abonnement hvis du vil forbinde OpenCode til en betalt udbyder, men du kan arbejde med",
|
||||
"download.faq.a3.localLink": "lokale modeller",
|
||||
"download.faq.a3.afterLocal.beforeZen": "gratis. Selvom vi opfordrer brugere til at bruge",
|
||||
"download.faq.a3.afterZen": ", fungerer OpenCode med alle populære udbydere som OpenAI, Anthropic, xAI osv.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode er 100% gratis at bruge.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Eventuelle ekstra omkostninger kommer fra dit abonnement hos en modeludbyder. Selvom OpenCode fungerer med enhver modeludbyder, anbefaler vi at bruge",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1": "Dine data og oplysninger gemmes kun når du opretter delbare links i OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "Læs mere om",
|
||||
"download.faq.a6.shareLink": "delingssider",
|
||||
|
||||
"enterprise.title": "OpenCode | Enterprise-løsninger til din organisation",
|
||||
"enterprise.meta.description": "Kontakt OpenCode for enterprise-løsninger",
|
||||
"enterprise.hero.title": "Din kode er din egen",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode fungerer sikkert inde i din organisation uden at lagre data eller kontekst og uden licensbegrænsninger eller ejerskabskrav. Start en prøveperiode med dit team, og udrul det derefter i hele din organisation ved at integrere det med dit SSO og din interne AI-gateway.",
|
||||
"enterprise.hero.body2": "Fortæl os, hvordan vi kan hjælpe.",
|
||||
"enterprise.form.name.label": "Fulde navn",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Rolle",
|
||||
"enterprise.form.role.placeholder": "Bestyrelsesformand",
|
||||
"enterprise.form.company.label": "Virksomhed",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "Firma-e-mail",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Telefonnummer",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "Hvilket problem prøver du at løse?",
|
||||
"enterprise.form.message.placeholder": "Vi har brug for hjælp med...",
|
||||
"enterprise.form.send": "Send",
|
||||
"enterprise.form.sending": "Sender...",
|
||||
"enterprise.form.success": "Besked sendt, vi vender tilbage snart.",
|
||||
"enterprise.form.success.submitted": "Formular indsendt med succes.",
|
||||
"enterprise.form.error.allFieldsRequired": "Alle felter er påkrævet.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Ugyldigt e-mailformat.",
|
||||
"enterprise.form.error.internalServer": "Intern serverfejl.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "Hvad er OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise er til organisationer, der vil sikre, at deres kode og data aldrig forlader deres infrastruktur. Det kan gøres med en central konfiguration, der integrerer med dit SSO og din interne AI-gateway.",
|
||||
"enterprise.faq.q2": "Hvordan kommer jeg i gang med OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Start blot med en intern prøveperiode med dit team. OpenCode gemmer som standard ikke din kode eller kontekstdata, hvilket gør det nemt at komme i gang. Kontakt os derefter for at tale om priser og implementeringsmuligheder.",
|
||||
"enterprise.faq.q3": "Hvordan fungerer enterprise-priser?",
|
||||
"enterprise.faq.a3":
|
||||
"Vi tilbyder enterprise-priser pr. bruger. Hvis du har din egen LLM-gateway, opkræver vi ikke for brugte tokens. Kontakt os for flere detaljer og et tilbud tilpasset din organisations behov.",
|
||||
"enterprise.faq.q4": "Er mine data sikre med OpenCode Enterprise?",
|
||||
"enterprise.faq.a4":
|
||||
"Ja. OpenCode gemmer ikke din kode eller kontekstdata. Al behandling sker lokalt eller via direkte API-kald til din AI-udbyder. Med central konfiguration og SSO-integration forbliver dine data sikre inden for din organisations infrastruktur.",
|
||||
|
||||
"brand.title": "OpenCode | Brand",
|
||||
"brand.meta.description": "OpenCode brandretningslinjer",
|
||||
"brand.heading": "Brandretningslinjer",
|
||||
"brand.subtitle": "Ressourcer og assets, der hjælper dig med at arbejde med OpenCode-brandet.",
|
||||
"brand.downloadAll": "Download alle assets",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "OpenCode versionsnoter og changelog",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "Nye opdateringer og forbedringer til OpenCode",
|
||||
"changelog.empty": "Ingen changelog-indlæg fundet.",
|
||||
"changelog.viewJson": "Se JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agent",
|
||||
"bench.list.table.model": "Model",
|
||||
"bench.list.table.score": "Score",
|
||||
"bench.submission.error.allFieldsRequired": "Alle felter er påkrævet.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Opgave ikke fundet",
|
||||
"bench.detail.na": "Ikke tilgængelig",
|
||||
"bench.detail.labels.agent": "Agent",
|
||||
"bench.detail.labels.model": "Model",
|
||||
"bench.detail.labels.task": "Opgave",
|
||||
"bench.detail.labels.repo": "Repo",
|
||||
"bench.detail.labels.from": "Fra",
|
||||
"bench.detail.labels.to": "Til",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Gennemsnitlig varighed",
|
||||
"bench.detail.labels.averageScore": "Gennemsnitlig score",
|
||||
"bench.detail.labels.averageCost": "Gennemsnitlig omkostning",
|
||||
"bench.detail.labels.summary": "Resumé",
|
||||
"bench.detail.labels.runs": "Kørsler",
|
||||
"bench.detail.labels.score": "Score",
|
||||
"bench.detail.labels.base": "Basis",
|
||||
"bench.detail.labels.penalty": "Straf",
|
||||
"bench.detail.labels.weight": "vægt",
|
||||
"bench.detail.table.run": "Kørsel",
|
||||
"bench.detail.table.score": "Score (Basis - Straf)",
|
||||
"bench.detail.table.cost": "Omkostning",
|
||||
"bench.detail.table.duration": "Varighed",
|
||||
"bench.detail.run.title": "Kørsel {{n}}",
|
||||
"bench.detail.rawJson": "Rå JSON",
|
||||
} satisfies Dict
|
||||
790
qimingcode/packages/console/app/src/i18n/de.ts
Normal file
@@ -0,0 +1,790 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Dokumentation",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Anmelden",
|
||||
"nav.free": "Download",
|
||||
"nav.home": "Startseite",
|
||||
"nav.openMenu": "Menü öffnen",
|
||||
"nav.getStartedFree": "Kostenlos starten",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Logo als SVG kopieren",
|
||||
"nav.context.copyWordmark": "Wortmarke als SVG kopieren",
|
||||
"nav.context.brandAssets": "Marken-Assets",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Dokumentation",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Marke",
|
||||
"legal.privacy": "Datenschutz",
|
||||
"legal.terms": "AGB",
|
||||
|
||||
"email.title": "Erfahre als Erste:r, wenn wir neue Produkte veröffentlichen",
|
||||
"email.subtitle": "Trage dich in die Warteliste für frühen Zugang ein.",
|
||||
"email.placeholder": "E-Mail-Adresse",
|
||||
"email.subscribe": "Anmelden",
|
||||
"email.success": "Fast geschafft, überprüfe deinen Posteingang und bestätige deine E-Mail-Adresse",
|
||||
|
||||
"notFound.title": "Nicht gefunden | OpenCode",
|
||||
"notFound.heading": "404 - Seite nicht gefunden",
|
||||
"notFound.home": "Startseite",
|
||||
"notFound.docs": "Dokumentation",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "OpenCode Logo hell",
|
||||
"notFound.logoDarkAlt": "OpenCode Logo dunkel",
|
||||
|
||||
"user.logout": "Abmelden",
|
||||
|
||||
"auth.callback.error.codeMissing": "Kein Autorisierungscode gefunden.",
|
||||
|
||||
"workspace.select": "Workspace auswählen",
|
||||
"workspace.createNew": "+ Neuen Workspace erstellen",
|
||||
"workspace.modal.title": "Neuen Workspace erstellen",
|
||||
"workspace.modal.placeholder": "Workspace-Namen eingeben",
|
||||
|
||||
"common.cancel": "Abbrechen",
|
||||
"common.creating": "Erstelle...",
|
||||
"common.create": "Erstellen",
|
||||
|
||||
"common.videoUnsupported": "Dein Browser unterstützt das Video-Tag nicht.",
|
||||
"common.figure": "Abb. {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Mehr erfahren",
|
||||
|
||||
"error.invalidPlan": "Ungültiger Plan",
|
||||
"error.workspaceRequired": "Workspace-ID ist erforderlich",
|
||||
"error.alreadySubscribed": "Dieser Workspace hat bereits ein Abonnement",
|
||||
"error.limitRequired": "Limit ist erforderlich.",
|
||||
"error.monthlyLimitInvalid": "Bitte gib ein gültiges monatliches Limit ein.",
|
||||
"error.workspaceNameRequired": "Workspace-Name ist erforderlich.",
|
||||
"error.nameTooLong": "Der Name darf höchstens 255 Zeichen lang sein.",
|
||||
"error.emailRequired": "E-Mail ist erforderlich",
|
||||
"error.roleRequired": "Rolle ist erforderlich",
|
||||
"error.idRequired": "ID ist erforderlich",
|
||||
"error.nameRequired": "Name ist erforderlich",
|
||||
"error.providerRequired": "Anbieter ist erforderlich",
|
||||
"error.apiKeyRequired": "API-Key ist erforderlich",
|
||||
"error.modelRequired": "Modell ist erforderlich",
|
||||
"error.reloadAmountMin": "Aufladebetrag muss mindestens ${{amount}} betragen",
|
||||
"error.reloadTriggerMin": "Guthaben-Auslöser muss mindestens ${{amount}} betragen",
|
||||
|
||||
"app.meta.description": "OpenCode - Der Open-Source Coding-Agent.",
|
||||
|
||||
"home.title": "OpenCode | Der Open-Source AI-Coding-Agent",
|
||||
|
||||
"temp.title": "OpenCode | Für das Terminal gebauter AI-Coding-Agent",
|
||||
"temp.hero.title": "Der für das Terminal gebaute AI-Coding-Agent",
|
||||
"temp.zen": "OpenCode Zen",
|
||||
"temp.getStarted": "Loslegen",
|
||||
"temp.feature.native.title": "Native TUI",
|
||||
"temp.feature.native.body": "Eine reaktionsschnelle, native, thematisierbare Terminal-UI",
|
||||
"temp.feature.zen.beforeLink": "Eine",
|
||||
"temp.feature.zen.link": "kuratierte Liste von Modellen",
|
||||
"temp.feature.zen.afterLink": "bereitgestellt von OpenCode",
|
||||
"temp.feature.models.beforeLink": "Unterstützt 75+ LLM-Anbieter durch",
|
||||
"temp.feature.models.afterLink": ", einschließlich lokaler Modelle",
|
||||
"temp.screenshot.caption": "OpenCode TUI mit dem Tokyonight-Theme",
|
||||
"temp.screenshot.alt": "OpenCode TUI mit Tokyonight-Theme",
|
||||
"temp.logoLightAlt": "OpenCode Logo hell",
|
||||
"temp.logoDarkAlt": "OpenCode Logo dunkel",
|
||||
|
||||
"home.banner.badge": "Neu",
|
||||
"home.banner.text": "Desktop-App in der Beta verfügbar",
|
||||
"home.banner.platforms": "auf macOS, Windows und Linux",
|
||||
"home.banner.downloadNow": "Jetzt herunterladen",
|
||||
"home.banner.downloadBetaNow": "Desktop-Beta jetzt herunterladen",
|
||||
|
||||
"home.hero.title": "Der Open-Source AI-Coding-Agent",
|
||||
"home.hero.subtitle.a": "Kostenlose Modelle inklusive oder verbinde jedes Modell eines beliebigen Anbieters,",
|
||||
"home.hero.subtitle.b": "einschließlich Claude, GPT, Gemini und mehr.",
|
||||
|
||||
"home.install.ariaLabel": "Installationsoptionen",
|
||||
|
||||
"home.what.title": "Was ist OpenCode?",
|
||||
"home.what.body":
|
||||
"OpenCode ist ein Open-Source-Agent, der dir hilft, Code in deinem Terminal, deiner IDE oder auf dem Desktop zu schreiben.",
|
||||
"home.what.lsp.title": "LSP-fähig",
|
||||
"home.what.lsp.body": "Lädt automatisch die richtigen LSPs für das LLM",
|
||||
"home.what.multiSession.title": "Multi-Session",
|
||||
"home.what.multiSession.body": "Starte mehrere Agenten parallel im selben Projekt",
|
||||
"home.what.shareLinks.title": "Links teilen",
|
||||
"home.what.shareLinks.body": "Teile einen Link zu jeder Sitzung als Referenz oder zum Debuggen",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Melde dich mit GitHub an, um deinen Copilot-Account zu nutzen",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Melde dich mit OpenAI an, um deinen ChatGPT Plus- oder Pro-Account zu nutzen",
|
||||
"home.what.anyModel.title": "Jedes Modell",
|
||||
"home.what.anyModel.body": "75+ LLM-Anbieter durch Models.dev, einschließlich lokaler Modelle",
|
||||
"home.what.anyEditor.title": "Jeder Editor",
|
||||
"home.what.anyEditor.body": "Verfügbar als Terminal-Interface, Desktop-App und IDE-Extension",
|
||||
"home.what.readDocs": "Doku lesen",
|
||||
|
||||
"home.growth.title": "Der Open-Source AI-Coding-Agent",
|
||||
"home.growth.body":
|
||||
"Mit über <strong>{{stars}}</strong> GitHub-Stars, <strong>{{contributors}}</strong> Contributors und über <strong>{{commits}}</strong> Commits wird OpenCode von über <strong>{{monthlyUsers}}</strong> Entwickler:innen jeden Monat genutzt und geschätzt.",
|
||||
"home.growth.githubStars": "GitHub Stars",
|
||||
"home.growth.contributors": "Contributors",
|
||||
"home.growth.monthlyDevs": "Monatliche Devs",
|
||||
|
||||
"home.privacy.title": "Built for privacy first",
|
||||
"home.privacy.body":
|
||||
"OpenCode speichert keinen deiner Codes oder Kontextdaten, sodass es in datenschutzsensiblen Umgebungen arbeiten kann.",
|
||||
"home.privacy.learnMore": "Erfahre mehr über",
|
||||
"home.privacy.link": "Datenschutz",
|
||||
|
||||
"home.faq.q1": "Was ist OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode ist ein Open-Source-Agent, der dir hilft, Code mit jedem KI-Modell zu schreiben und auszuführen. Er ist als Terminal-Interface, Desktop-App oder IDE-Erweiterung verfügbar.",
|
||||
"home.faq.q2": "Wie nutze ich OpenCode?",
|
||||
"home.faq.a2.before": "Der einfachste Weg zu starten ist, die",
|
||||
"home.faq.a2.link": "Einführung zu lesen",
|
||||
"home.faq.q3": "Brauche ich zusätzliche AI-Abos, um OpenCode zu nutzen?",
|
||||
"home.faq.a3.p1":
|
||||
"Nicht unbedingt, OpenCode kommt mit einer Reihe kostenloser Modelle, die du ohne Account nutzen kannst.",
|
||||
"home.faq.a3.p2.beforeZen": "Abgesehen davon kannst du jedes beliebige Coding-Modell nutzen, indem du einen",
|
||||
"home.faq.a3.p2.afterZen": " Account erstellst.",
|
||||
"home.faq.a3.p3":
|
||||
"Während wir dazu raten, Zen zu nutzen, funktioniert OpenCode auch mit allen beliebten Anbietern wie OpenAI, Anthropic, xAI etc.",
|
||||
"home.faq.a3.p4.beforeLocal": "Du kannst sogar deine",
|
||||
"home.faq.a3.p4.localLink": "lokalen Modelle verbinden",
|
||||
"home.faq.q4": "Kann ich meine bestehenden AI-Abos mit OpenCode nutzen?",
|
||||
"home.faq.a4.p1":
|
||||
"Ja, OpenCode unterstützt Abos von allen großen Anbietern. Du kannst deine Claude Pro/Max, ChatGPT Plus/Pro oder GitHub Copilot Abos nutzen.",
|
||||
"home.faq.q5": "Kann ich OpenCode nur im Terminal nutzen?",
|
||||
"home.faq.a5.beforeDesktop": "Nicht mehr! OpenCode ist jetzt als App für",
|
||||
"home.faq.a5.desktop": "Desktop",
|
||||
"home.faq.a5.and": "und",
|
||||
"home.faq.a5.web": "Web verfügbar",
|
||||
"home.faq.q6": "Wie viel kostet OpenCode?",
|
||||
"home.faq.a6":
|
||||
"OpenCode ist zu 100% kostenlos. Es enthält auch eine Reihe kostenloser Modelle. Zusätzliche Kosten können entstehen, wenn du andere Anbieter verbindest.",
|
||||
"home.faq.q7": "Was ist mit Daten und Privatsphäre?",
|
||||
"home.faq.a7.p1":
|
||||
"Deine Daten und Informationen werden nur gespeichert, wenn du unsere kostenlosen Modelle nutzt oder teilbare Links erstellst.",
|
||||
"home.faq.a7.p2.beforeModels": "Erfahre mehr über",
|
||||
"home.faq.a7.p2.modelsLink": "unsere Modelle",
|
||||
"home.faq.a7.p2.and": "und",
|
||||
"home.faq.a7.p2.shareLink": "Share-Pages",
|
||||
"home.faq.q8": "Ist OpenCode Open Source?",
|
||||
"home.faq.a8.p1": "Ja, OpenCode ist vollständig Open Source. Der Quellcode ist öffentlich auf",
|
||||
"home.faq.a8.p2": "unter der",
|
||||
"home.faq.a8.mitLicense": "MIT Lizenz",
|
||||
"home.faq.a8.p3":
|
||||
", was bedeutet, dass jeder ihn nutzen, modifizieren oder zu seiner Entwicklung beitragen kann. Jeder aus der Community kann Issues melden, Pull Requests einreichen und die Funktionalität erweitern.",
|
||||
|
||||
"home.zenCta.title": "Zugriff auf zuverlässige, optimierte Modelle für Coding-Agents",
|
||||
"home.zenCta.body":
|
||||
"Zen gibt dir Zugriff auf ein handverlesenes Set an AI-Modellen, die OpenCode speziell für Coding-Agents getestet und bewertet hat. Keine Sorge wegen inkonsistenter Leistung und Qualität bei verschiedenen Anbietern – nutze validierte Modelle, die funktionieren.",
|
||||
"home.zenCta.link": "Erfahre mehr über Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | Ein kuratiertes Set zuverlässiger, optimierter Modelle für Coding-Agents",
|
||||
"zen.hero.title": "Zuverlässige, optimierte Modelle für Coding-Agents",
|
||||
"zen.hero.body":
|
||||
"Zen gibt dir Zugriff auf ein kuratiertes Set an AI-Modellen, die OpenCode speziell für Coding-Agents getestet und bewertet hat. Keine Sorge wegen inkonsistenter Leistung und Qualität – nutze validierte Modelle, die funktionieren.",
|
||||
|
||||
"zen.faq.q1": "Was ist OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen ist ein kuratiertes Set an AI-Modellen, getestet und bewertet für Coding-Agents, erstellt vom Team hinter OpenCode.",
|
||||
"zen.faq.q2": "Was macht Zen genauer?",
|
||||
"zen.faq.a2":
|
||||
"Zen bietet nur Modelle, die speziell für Coding-Agents getestet und bewertet wurden. Du würdest kein Buttermesser nehmen, um ein Steak zu schneiden – nutze keine schlechten Modelle zum Coden.",
|
||||
"zen.faq.q3": "Ist Zen günstiger?",
|
||||
"zen.faq.a3":
|
||||
"Zen ist nicht gewinnorientiert. Zen gibt die Kosten der Modellanbieter an dich weiter. Je höher die Nutzung von Zen, desto besser kann OpenCode Preise verhandeln und diese an dich weitergeben.",
|
||||
"zen.faq.q4": "Wie viel kostet Zen?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "berechnet pro Anfrage",
|
||||
"zen.faq.a4.p1.afterPricing": "ohne Aufschläge, also zahlst du genau das, was der Modellanbieter berechnet.",
|
||||
"zen.faq.a4.p2.beforeAccount":
|
||||
"Deine Gesamtkosten hängen von der Nutzung ab, und du kannst monatliche Ausgabenlimits in deinem",
|
||||
"zen.faq.a4.p2.accountLink": "Account festlegen",
|
||||
"zen.faq.a4.p3":
|
||||
"Um die Kosten zu decken, fügt OpenCode nur eine kleine Bearbeitungsgebühr von $1.23 pro $20 Guthabenaufladung hinzu.",
|
||||
"zen.faq.q5": "Was ist mit Daten und Privatsphäre?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Alle Zen-Modelle werden in den USA gehostet. Anbieter folgen einer Zero-Retention-Policy und nutzen deine Daten nicht zum Trainieren von Modellen, mit den",
|
||||
"zen.faq.a5.exceptionsLink": "folgenden Ausnahmen",
|
||||
"zen.faq.q6": "Kann ich Ausgabenlimits setzen?",
|
||||
"zen.faq.a6": "Ja, du kannst monatliche Ausgabenlimits in deinem Account setzen.",
|
||||
"zen.faq.q7": "Kann ich kündigen?",
|
||||
"zen.faq.a7": "Ja, du kannst die Abrechnung jederzeit deaktivieren und dein verbleibendes Guthaben nutzen.",
|
||||
"zen.faq.q8": "Kann ich Zen mit anderen Coding-Agents nutzen?",
|
||||
"zen.faq.a8":
|
||||
"Während Zen großartig mit OpenCode funktioniert, kannst du Zen mit jedem Agent nutzen. Folge den Einrichtungsanweisungen in deinem bevorzugten Coding-Agent.",
|
||||
|
||||
"zen.cta.start": "Starte mit Zen",
|
||||
"zen.pricing.title": "Füge $20 Pay-as-you-go Guthaben hinzu",
|
||||
"zen.pricing.fee": "(+$1.23 Bearbeitungsgebühr)",
|
||||
"zen.pricing.body": "Nutze es mit jedem Agent. Setze monatliche Ausgabenlimits. Jederzeit kündbar.",
|
||||
"zen.problem.title": "Welches Problem löst Zen?",
|
||||
"zen.problem.body":
|
||||
"Es gibt so viele Modelle, aber nur wenige funktionieren gut mit Coding-Agents. Die meisten Anbieter konfigurieren sie unterschiedlich, was zu variierenden Ergebnissen führt.",
|
||||
"zen.problem.subtitle": "Wir beheben das für alle, nicht nur für OpenCode-Nutzer.",
|
||||
"zen.problem.item1": "Testen ausgewählter Modelle und Beratung mit deren Teams",
|
||||
"zen.problem.item2": "Zusammenarbeit mit Anbietern, um korrekte Bereitstellung zu sichern",
|
||||
"zen.problem.item3": "Benchmarking aller Modell-Anbieter-Kombinationen, die wir empfehlen",
|
||||
"zen.how.title": "Wie Zen funktioniert",
|
||||
"zen.how.body": "Während wir dir raten, Zen mit OpenCode zu nutzen, kannst du Zen mit jedem Agent nutzen.",
|
||||
"zen.how.step1.title": "Melde dich an und füge $20 Guthaben hinzu",
|
||||
"zen.how.step1.beforeLink": "folge den",
|
||||
"zen.how.step1.link": "Einrichtungsanweisungen",
|
||||
"zen.how.step2.title": "Nutze Zen mit transparenter Preisgestaltung",
|
||||
"zen.how.step2.link": "zahle pro Anfrage",
|
||||
"zen.how.step2.afterLink": "ohne Aufschläge",
|
||||
"zen.how.step3.title": "Auto-Top-up",
|
||||
"zen.how.step3.body": "wenn dein Guthaben $5 erreicht, fügen wir automatisch $20 hinzu",
|
||||
"zen.privacy.title": "Deine Privatsphäre ist uns wichtig",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Alle Zen-Modelle werden in den USA gehostet. Anbieter folgen einer Zero-Retention-Policy und nutzen deine Daten nicht für Modelltraining, mit den",
|
||||
"zen.privacy.exceptionsLink": "folgenden Ausnahmen",
|
||||
|
||||
"go.title": "OpenCode Go | Kostengünstige Coding-Modelle für alle",
|
||||
"go.meta.description":
|
||||
"Go beginnt bei $5 für den ersten Monat, danach $10/Monat, mit großzügigen 5-Stunden-Anfragelimits für GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro und DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Kostengünstige Coding-Modelle für alle",
|
||||
"go.hero.body":
|
||||
"Go bringt Agentic Coding zu Programmierern auf der ganzen Welt. Mit großzügigen Limits und zuverlässigem Zugang zu den leistungsfähigsten Open-Source-Modellen, damit du mit leistungsstarken Agenten entwickeln kannst, ohne dir Gedanken über Kosten oder Verfügbarkeit zu machen.",
|
||||
|
||||
"go.cta.start": "Go abonnieren",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Go abonnieren",
|
||||
"go.cta.price": "$10/Monat",
|
||||
"go.cta.promo": "$5 im ersten Monat",
|
||||
"go.pricing.body":
|
||||
"Mit jedem Agenten nutzbar. $5 im ersten Monat, danach $10/Monat. Guthaben bei Bedarf aufladen. Jederzeit kündbar.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: Nutzungslimit bis zum 27. April verdreifacht",
|
||||
"go.graph.free": "Kostenlos",
|
||||
"go.graph.freePill": "Big Pickle und kostenlose Modelle",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Anfragen pro 5 Stunden",
|
||||
"go.graph.usageLimits": "Nutzungslimits",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Anfragen pro 5h: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "hat mein Leben verändert, es ist wirklich ein No-Brainer.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Gründer, SEED, PM, Melt, Pop, Dapt, Cadmus und ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 von 5 Leuten in unserem Team lieben die Nutzung von",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "Ich kann",
|
||||
"go.testimonials.adam.quoteAfter": "nicht genug empfehlen. Ernsthaft, es ist wirklich gut.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Mit",
|
||||
"go.testimonials.david.quoteAfter": "weiß ich, dass alle Modelle getestet und perfekt für Coding-Agenten sind.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Praktikant, Nvidia (4 mal)",
|
||||
"go.testimonials.frank.quote": "Ich wünschte, ich wäre noch bei Nvidia.",
|
||||
"go.problem.title": "Welches Problem löst Go?",
|
||||
"go.problem.body":
|
||||
"Wir konzentrieren uns darauf, die OpenCode-Erfahrung so vielen Menschen wie möglich zugänglich zu machen. OpenCode Go ist ein kostengünstiges Abonnement: $5 im ersten Monat, danach $10/Monat. Es bietet großzügige Limits und zuverlässigen Zugang zu den leistungsfähigsten Open-Source-Modellen.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Kostengünstiges Abonnement",
|
||||
"go.problem.item2": "Großzügige Limits und zuverlässiger Zugang",
|
||||
"go.problem.item3": "Für so viele Programmierer wie möglich gebaut",
|
||||
"go.problem.item4":
|
||||
"Beinhaltet GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro und DeepSeek V4 Flash",
|
||||
"go.how.title": "Wie Go funktioniert",
|
||||
"go.how.body":
|
||||
"Go beginnt bei $5 für den ersten Monat, danach $10/Monat. Du kannst es mit OpenCode oder jedem Agenten nutzen.",
|
||||
"go.how.step1.title": "Konto erstellen",
|
||||
"go.how.step1.beforeLink": "folge den",
|
||||
"go.how.step1.link": "Einrichtungsanweisungen",
|
||||
"go.how.step2.title": "Go abonnieren",
|
||||
"go.how.step2.link": "$5 im ersten Monat",
|
||||
"go.how.step2.afterLink": "danach $10/Monat mit großzügigen Limits",
|
||||
"go.how.step3.title": "Loslegen mit Coding",
|
||||
"go.how.step3.body": "mit zuverlässigem Zugang zu Open-Source-Modellen",
|
||||
"go.privacy.title": "Deine Privatsphäre ist uns wichtig",
|
||||
"go.privacy.body":
|
||||
"Der Plan ist primär für internationale Nutzer konzipiert, mit Modellen gehostet in den USA, der EU und Singapur für stabilen globalen Zugang.",
|
||||
"go.privacy.contactAfter": "wenn du Fragen hast.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Go-Modelle werden in den USA gehostet. Anbieter verfolgen eine Zero-Retention-Politik und nutzen deine Daten nicht für das Training von Modellen, mit den",
|
||||
"go.privacy.exceptionsLink": "folgenden Ausnahmen",
|
||||
"go.faq.q1": "Was ist OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go ist ein kostengünstiges Abonnement, das dir zuverlässigen Zugang zu leistungsfähigen Open-Source-Modellen für Agentic Coding bietet.",
|
||||
"go.faq.q2": "Welche Modelle beinhaltet Go?",
|
||||
"go.faq.a2": "Go umfasst die unten aufgeführten Modelle mit großzügigen Limits und zuverlässigem Zugriff.",
|
||||
"go.faq.q3": "Ist Go dasselbe wie Zen?",
|
||||
"go.faq.a3":
|
||||
"Nein. Zen ist Pay-as-you-go, während Go bei $5 für den ersten Monat beginnt, danach $10/Monat, mit großzügigen Limits und zuverlässigem Zugang zu den Open-Source-Modellen GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro und DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "Wie viel kostet Go?",
|
||||
"go.faq.a4.p1.beforePricing": "Go kostet",
|
||||
"go.faq.a4.p1.pricingLink": "$5 im ersten Monat",
|
||||
"go.faq.a4.p1.afterPricing": "danach $10/Monat mit großzügigen Limits.",
|
||||
"go.faq.a4.p2.beforeAccount": "Du kannst dein Abonnement in deinem",
|
||||
"go.faq.a4.p2.accountLink": "Konto verwalten",
|
||||
"go.faq.a4.p3": "Jederzeit kündbar.",
|
||||
"go.faq.q5": "Was ist mit Daten und Privatsphäre?",
|
||||
"go.faq.a5.body":
|
||||
"Der Plan ist primär für internationale Nutzer konzipiert, mit Modellen gehostet in den USA, der EU und Singapur für stabilen globalen Zugang. Unsere Anbieter verfolgen eine Zero-Retention-Politik und nutzen deine Daten nicht für das Training von Modellen.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Go-Modelle werden in den USA gehostet. Anbieter verfolgen eine Zero-Retention-Politik und nutzen deine Daten nicht für das Training von Modellen, mit den",
|
||||
"go.faq.a5.exceptionsLink": "folgenden Ausnahmen",
|
||||
"go.faq.q6": "Kann ich Guthaben aufladen?",
|
||||
"go.faq.a6": "Wenn du mehr Nutzung benötigst, kannst du Guthaben in deinem Konto aufladen.",
|
||||
"go.faq.q7": "Kann ich kündigen?",
|
||||
"go.faq.a7": "Ja, du kannst jederzeit kündigen.",
|
||||
"go.faq.q8": "Kann ich Go mit anderen Coding-Agenten nutzen?",
|
||||
"go.faq.a8":
|
||||
"Ja, du kannst Go mit jedem Agenten nutzen. Folge den Einrichtungsanweisungen in deinem bevorzugten Coding-Agenten.",
|
||||
|
||||
"go.faq.q9": "Was ist der Unterschied zwischen kostenlosen Modellen und Go?",
|
||||
"go.faq.a9":
|
||||
"Kostenlose Modelle beinhalten Big Pickle sowie Werbemodelle, die zum jeweiligen Zeitpunkt verfügbar sind, mit einem Kontingent von 200 Anfragen/Tag. Go beinhaltet GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro und DeepSeek V4 Flash mit höheren Anfragekontingenten, die über rollierende Zeitfenster (5 Stunden, wöchentlich und monatlich) durchgesetzt werden, grob äquivalent zu $12 pro 5 Stunden, $30 pro Woche und $60 pro Monat (tatsächliche Anfragezahlen variieren je nach Modell und Nutzung).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Ratenlimit überschritten. Bitte versuche es später erneut.",
|
||||
"zen.api.error.modelNotSupported": "Modell {{model}} wird nicht unterstützt",
|
||||
"zen.api.error.modelFormatNotSupported": "Modell {{model}} wird für das Format {{format}} nicht unterstützt",
|
||||
"zen.api.error.noProviderAvailable": "Kein Anbieter verfügbar",
|
||||
"zen.api.error.providerNotSupported": "Anbieter {{provider}} wird nicht unterstützt",
|
||||
"zen.api.error.missingApiKey": "Fehlender API-Key.",
|
||||
"zen.api.error.invalidApiKey": "Ungültiger API-Key.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Abonnement-Quote überschritten. Erneuter Versuch in {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Abonnement-Quote überschritten. Du kannst weiterhin kostenlose Modelle nutzen.",
|
||||
"zen.api.error.noPaymentMethod": "Keine Zahlungsmethode. Füge hier eine Zahlungsmethode hinzu: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Unzureichendes Guthaben. Verwalte deine Abrechnung hier: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Dein Workspace hat sein monatliches Ausgabenlimit von ${{amount}} erreicht. Verwalte deine Limits hier: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Du hast dein monatliches Ausgabenlimit von ${{amount}} erreicht. Verwalte deine Limits hier: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "Modell ist deaktiviert",
|
||||
"zen.api.error.trialEnded":
|
||||
"Die kostenlose Aktion für {{model}} ist beendet. Du kannst das Modell weiterhin nutzen, indem du OpenCode Go abonnierst - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Zugriff auf die weltweit besten Coding-Modelle",
|
||||
"black.meta.description": "Erhalte Zugriff auf Claude, GPT, Gemini und mehr mit OpenCode Black Abos.",
|
||||
"black.hero.title": "Zugriff auf die weltweit besten Coding-Modelle",
|
||||
"black.hero.subtitle": "Einschließlich Claude, GPT, Gemini und mehr",
|
||||
"black.title": "OpenCode Black | Preise",
|
||||
"black.paused": "Die Anmeldung zum Black-Plan ist vorübergehend pausiert.",
|
||||
"black.plan.icon20": "Black 20 Plan",
|
||||
"black.plan.icon100": "Black 100 Plan",
|
||||
"black.plan.icon200": "Black 200 Plan",
|
||||
"black.plan.multiplier100": "5x mehr Nutzung als Black 20",
|
||||
"black.plan.multiplier200": "20x mehr Nutzung als Black 20",
|
||||
"black.price.perMonth": "pro Monat",
|
||||
"black.price.perPersonBilledMonthly": "pro Person, monatlich abgerechnet",
|
||||
"black.terms.1": "Dein Abonnement startet nicht sofort",
|
||||
"black.terms.2": "Du wirst auf die Warteliste gesetzt und bald freigeschaltet",
|
||||
"black.terms.3": "Deine Karte wird erst belastet, wenn dein Abonnement aktiviert ist",
|
||||
"black.terms.4": "Nutzungslimits gelten, stark automatisierte Nutzung kann Limits schneller erreichen",
|
||||
"black.terms.5": "Abonnements sind für Einzelpersonen, kontaktiere Enterprise für Teams",
|
||||
"black.terms.6": "Limits können angepasst werden und Pläne können in Zukunft eingestellt werden",
|
||||
"black.terms.7": "Kündige dein Abonnement jederzeit",
|
||||
"black.action.continue": "Weiter",
|
||||
"black.finePrint.beforeTerms": "Angezeigte Preise enthalten keine anfallenden Steuern",
|
||||
"black.finePrint.terms": "Nutzungsbedingungen",
|
||||
"black.workspace.title": "OpenCode Black | Workspace wählen",
|
||||
"black.workspace.selectPlan": "Wähle einen Workspace für diesen Plan",
|
||||
"black.workspace.name": "Workspace {{n}}",
|
||||
"black.subscribe.title": "OpenCode Black abonnieren",
|
||||
"black.subscribe.paymentMethod": "Zahlungsmethode",
|
||||
"black.subscribe.loadingPaymentForm": "Lade Zahlungsformular...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Wähle einen Workspace um fortzufahren",
|
||||
"black.subscribe.failurePrefix": "Oh nein!",
|
||||
"black.subscribe.error.generic": "Ein Fehler ist aufgetreten",
|
||||
"black.subscribe.error.invalidPlan": "Ungültiger Plan",
|
||||
"black.subscribe.error.workspaceRequired": "Workspace-ID ist erforderlich",
|
||||
"black.subscribe.error.alreadySubscribed": "Dieser Workspace hat bereits ein Abonnement",
|
||||
"black.subscribe.processing": "Verarbeitung...",
|
||||
"black.subscribe.submit": "Abonnieren ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Du wirst erst belastet, wenn dein Abonnement aktiviert ist",
|
||||
"black.subscribe.success.title": "Du bist auf der OpenCode Black Warteliste",
|
||||
"black.subscribe.success.subscriptionPlan": "Abo-Plan",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Betrag",
|
||||
"black.subscribe.success.amountValue": "${{plan}} pro Monat",
|
||||
"black.subscribe.success.paymentMethod": "Zahlungsmethode",
|
||||
"black.subscribe.success.dateJoined": "Beitrittsdatum",
|
||||
"black.subscribe.success.chargeNotice": "Deine Karte wird belastet, sobald dein Abonnement aktiviert ist",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Nutzung",
|
||||
"workspace.nav.apiKeys": "API Keys",
|
||||
"workspace.nav.members": "Mitglieder",
|
||||
"workspace.nav.billing": "Abrechnung",
|
||||
"workspace.nav.settings": "Einstellungen",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Zuverlässige, optimierte Modelle für Coding-Agents.",
|
||||
"workspace.lite.banner.beforeLink": "Kostengünstige Coding-Modelle für alle.",
|
||||
"workspace.home.billing.loading": "Laden...",
|
||||
"workspace.home.billing.enable": "Abrechnung aktivieren",
|
||||
"workspace.home.billing.currentBalance": "Aktuelles Guthaben",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Getestete & Verifizierte Modelle",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Wir haben Modelle speziell für Coding-Agents getestet und bewertet, um beste Leistung zu garantieren.",
|
||||
"workspace.newUser.feature.quality.title": "Höchste Qualität",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Zugriff auf Modelle, die für optimale Leistung konfiguriert sind – keine Downgrades oder Routing zu billigeren Anbietern.",
|
||||
"workspace.newUser.feature.lockin.title": "Kein Lock-in",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Nutze Zen mit jedem Coding-Agent und nutze weiterhin andere Anbieter mit OpenCode, wann immer du willst.",
|
||||
"workspace.newUser.copyApiKey": "API Key kopieren",
|
||||
"workspace.newUser.copyKey": "Key kopieren",
|
||||
"workspace.newUser.copied": "Kopiert!",
|
||||
"workspace.newUser.step.enableBilling": "Abrechnung aktivieren",
|
||||
"workspace.newUser.step.login.before": "Führe",
|
||||
"workspace.newUser.step.login.after": "aus und wähle OpenCode",
|
||||
"workspace.newUser.step.pasteKey": "Füge deinen API Key ein",
|
||||
"workspace.newUser.step.models.before": "Starte OpenCode und führe",
|
||||
"workspace.newUser.step.models.after": "aus, um ein Modell zu wählen",
|
||||
|
||||
"workspace.models.title": "Modelle",
|
||||
"workspace.models.subtitle.beforeLink": "Verwalte, auf welche Modelle Workspace-Mitglieder zugreifen können.",
|
||||
"workspace.models.table.model": "Modell",
|
||||
"workspace.models.table.enabled": "Aktiviert",
|
||||
|
||||
"workspace.providers.title": "Bring Your Own Key",
|
||||
"workspace.providers.subtitle": "Konfiguriere deine eigenen API Keys von AI-Anbietern.",
|
||||
"workspace.providers.placeholder": "Gib {{provider}} API Key ein ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Konfigurieren",
|
||||
"workspace.providers.edit": "Bearbeiten",
|
||||
"workspace.providers.delete": "Löschen",
|
||||
"workspace.providers.saving": "Speichere...",
|
||||
"workspace.providers.save": "Speichern",
|
||||
"workspace.providers.table.provider": "Anbieter",
|
||||
"workspace.providers.table.apiKey": "API Key",
|
||||
|
||||
"workspace.usage.title": "Nutzungsverlauf",
|
||||
"workspace.usage.subtitle": "Kürzliche API-Nutzung und Kosten.",
|
||||
"workspace.usage.empty": "Mache deinen ersten API-Aufruf, um loszulegen.",
|
||||
"workspace.usage.table.date": "Datum",
|
||||
"workspace.usage.table.model": "Modell",
|
||||
"workspace.usage.table.input": "Input",
|
||||
"workspace.usage.table.output": "Output",
|
||||
"workspace.usage.table.cost": "Kosten",
|
||||
"workspace.usage.table.session": "Sitzung",
|
||||
"workspace.usage.breakdown.input": "Input",
|
||||
"workspace.usage.breakdown.cacheRead": "Cache Read",
|
||||
"workspace.usage.breakdown.cacheWrite": "Cache Write",
|
||||
"workspace.usage.breakdown.output": "Output",
|
||||
"workspace.usage.breakdown.reasoning": "Reasoning",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Kosten",
|
||||
"workspace.cost.subtitle": "Nutzungskosten aufgeschlüsselt nach Modell.",
|
||||
"workspace.cost.allModels": "Alle Modelle",
|
||||
"workspace.cost.allKeys": "Alle Keys",
|
||||
"workspace.cost.deletedSuffix": "(gelöscht)",
|
||||
"workspace.cost.empty": "Keine Nutzungsdaten für den gewählten Zeitraum verfügbar.",
|
||||
"workspace.cost.subscriptionShort": "Abo",
|
||||
|
||||
"workspace.keys.title": "API Keys",
|
||||
"workspace.keys.subtitle": "Verwalte deine API Keys für den Zugriff auf OpenCode-Dienste.",
|
||||
"workspace.keys.create": "API Key erstellen",
|
||||
"workspace.keys.placeholder": "Key-Namen eingeben",
|
||||
"workspace.keys.empty": "Erstelle einen OpenCode Gateway API Key",
|
||||
"workspace.keys.table.name": "Name",
|
||||
"workspace.keys.table.key": "Key",
|
||||
"workspace.keys.table.createdBy": "Erstellt von",
|
||||
"workspace.keys.table.lastUsed": "Zuletzt genutzt",
|
||||
"workspace.keys.copyApiKey": "API Key kopieren",
|
||||
"workspace.keys.delete": "Löschen",
|
||||
|
||||
"workspace.members.title": "Mitglieder",
|
||||
"workspace.members.subtitle": "Verwalte Workspace-Mitglieder und deren Berechtigungen.",
|
||||
"workspace.members.invite": "Mitglied einladen",
|
||||
"workspace.members.inviting": "Lade ein...",
|
||||
"workspace.members.beta.beforeLink": "Workspaces sind für Teams während der Beta kostenlos.",
|
||||
"workspace.members.form.invitee": "Eingeladene Person",
|
||||
"workspace.members.form.emailPlaceholder": "E-Mail eingeben",
|
||||
"workspace.members.form.role": "Rolle",
|
||||
"workspace.members.form.monthlyLimit": "Monatliches Ausgabenlimit",
|
||||
"workspace.members.noLimit": "Kein Limit",
|
||||
"workspace.members.noLimitLowercase": "kein Limit",
|
||||
"workspace.members.invited": "eingeladen",
|
||||
"workspace.members.edit": "Bearbeiten",
|
||||
"workspace.members.delete": "Löschen",
|
||||
"workspace.members.saving": "Speichere...",
|
||||
"workspace.members.save": "Speichern",
|
||||
"workspace.members.table.email": "E-Mail",
|
||||
"workspace.members.table.role": "Rolle",
|
||||
"workspace.members.table.monthLimit": "Monatslimit",
|
||||
"workspace.members.role.admin": "Admin",
|
||||
"workspace.members.role.adminDescription": "Kann Modelle, Mitglieder und Abrechnung verwalten",
|
||||
"workspace.members.role.member": "Mitglied",
|
||||
"workspace.members.role.memberDescription": "Kann nur API Keys für sich selbst generieren",
|
||||
|
||||
"workspace.settings.title": "Einstellungen",
|
||||
"workspace.settings.subtitle": "Aktualisiere deinen Workspace-Namen und Präferenzen.",
|
||||
"workspace.settings.workspaceName": "Workspace-Name",
|
||||
"workspace.settings.defaultName": "Standard",
|
||||
"workspace.settings.updating": "Aktualisiere...",
|
||||
"workspace.settings.save": "Speichern",
|
||||
"workspace.settings.edit": "Bearbeiten",
|
||||
|
||||
"workspace.billing.title": "Abrechnung",
|
||||
"workspace.billing.subtitle.beforeLink": "Zahlungsmethoden verwalten.",
|
||||
"workspace.billing.contactUs": "Kontaktiere uns",
|
||||
"workspace.billing.subtitle.afterLink": "wenn du Fragen hast.",
|
||||
"workspace.billing.currentBalance": "Aktuelles Guthaben",
|
||||
"workspace.billing.add": "$ hinzufügen",
|
||||
"workspace.billing.enterAmount": "Betrag eingeben",
|
||||
"workspace.billing.loading": "Lade...",
|
||||
"workspace.billing.addAction": "Hinzufügen",
|
||||
"workspace.billing.addBalance": "Guthaben aufladen",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Mit Stripe verbunden",
|
||||
"workspace.billing.manage": "Verwalten",
|
||||
"workspace.billing.enable": "Abrechnung aktivieren",
|
||||
|
||||
"workspace.monthlyLimit.title": "Monatliches Limit",
|
||||
"workspace.monthlyLimit.subtitle": "Setze ein monatliches Nutzungslimit für deinen Account.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Setze...",
|
||||
"workspace.monthlyLimit.set": "Setzen",
|
||||
"workspace.monthlyLimit.edit": "Limit bearbeiten",
|
||||
"workspace.monthlyLimit.noLimit": "Kein Nutzungslimit gesetzt.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Aktuelle Nutzung für",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "ist $",
|
||||
|
||||
"workspace.redeem.title": "Gutschein einlösen",
|
||||
"workspace.redeem.subtitle": "Löse einen Gutscheincode ein, um Guthaben oder Vorteile zu erhalten.",
|
||||
"workspace.redeem.placeholder": "Gutscheincode eingeben",
|
||||
"workspace.redeem.redeem": "Einlösen",
|
||||
"workspace.redeem.redeeming": "Wird eingelöst...",
|
||||
"workspace.redeem.success": "Gutschein erfolgreich eingelöst.",
|
||||
|
||||
"workspace.reload.title": "Auto-Reload",
|
||||
"workspace.reload.disabled.before": "Auto-Reload ist",
|
||||
"workspace.reload.disabled.state": "deaktiviert",
|
||||
"workspace.reload.disabled.after": "Aktivieren, um automatisch aufzuladen, wenn das Guthaben niedrig ist.",
|
||||
"workspace.reload.enabled.before": "Auto-Reload ist",
|
||||
"workspace.reload.enabled.state": "aktiviert",
|
||||
"workspace.reload.enabled.middle": "Wir laden auf",
|
||||
"workspace.reload.processingFee": "Bearbeitungsgebühr",
|
||||
"workspace.reload.enabled.after": "wenn das Guthaben erreicht:",
|
||||
"workspace.reload.edit": "Bearbeiten",
|
||||
"workspace.reload.enable": "Aktivieren",
|
||||
"workspace.reload.enableAutoReload": "Auto-Reload aktivieren",
|
||||
"workspace.reload.reloadAmount": "Aufladebetrag $",
|
||||
"workspace.reload.whenBalanceReaches": "Wenn Guthaben $ erreicht",
|
||||
"workspace.reload.saving": "Speichere...",
|
||||
"workspace.reload.save": "Speichern",
|
||||
"workspace.reload.failedAt": "Aufladung fehlgeschlagen am",
|
||||
"workspace.reload.reason": "Grund:",
|
||||
"workspace.reload.updatePaymentMethod": "Bitte aktualisiere deine Zahlungsmethode und versuche es erneut.",
|
||||
"workspace.reload.retrying": "Versuche erneut...",
|
||||
"workspace.reload.retry": "Erneut versuchen",
|
||||
"workspace.reload.error.paymentFailed": "Zahlung fehlgeschlagen.",
|
||||
|
||||
"workspace.payments.title": "Zahlungshistorie",
|
||||
"workspace.payments.subtitle": "Kürzliche Zahlungstransaktionen.",
|
||||
"workspace.payments.table.date": "Datum",
|
||||
"workspace.payments.table.paymentId": "Zahlungs-ID",
|
||||
"workspace.payments.table.amount": "Betrag",
|
||||
"workspace.payments.table.receipt": "Beleg",
|
||||
"workspace.payments.type.credit": "Guthaben",
|
||||
"workspace.payments.type.subscription": "Abonnement",
|
||||
"workspace.payments.view": "Ansehen",
|
||||
|
||||
"workspace.black.loading": "Lade...",
|
||||
"workspace.black.time.day": "Tag",
|
||||
"workspace.black.time.days": "Tage",
|
||||
"workspace.black.time.hour": "Stunde",
|
||||
"workspace.black.time.hours": "Stunden",
|
||||
"workspace.black.time.minute": "Minute",
|
||||
"workspace.black.time.minutes": "Minuten",
|
||||
"workspace.black.time.fewSeconds": "einige Sekunden",
|
||||
"workspace.black.subscription.title": "Abonnement",
|
||||
"workspace.black.subscription.message": "Du hast OpenCode Black für ${{plan}} pro Monat abonniert.",
|
||||
"workspace.black.subscription.manage": "Abo verwalten",
|
||||
"workspace.black.subscription.rollingUsage": "5-Stunden-Nutzung",
|
||||
"workspace.black.subscription.weeklyUsage": "Wöchentliche Nutzung",
|
||||
"workspace.black.subscription.resetsIn": "Setzt zurück in",
|
||||
"workspace.black.subscription.useBalance": "Nutze dein verfügbares Guthaben, nachdem die Limits erreicht sind",
|
||||
"workspace.black.waitlist.title": "Warteliste",
|
||||
"workspace.black.waitlist.joined": "Du bist auf der Warteliste für den ${{plan}} pro Monat OpenCode Black Plan.",
|
||||
"workspace.black.waitlist.ready": "Wir sind bereit, dich in den ${{plan}} pro Monat OpenCode Black Plan aufzunehmen.",
|
||||
"workspace.black.waitlist.leave": "Warteliste verlassen",
|
||||
"workspace.black.waitlist.leaving": "Verlasse...",
|
||||
"workspace.black.waitlist.left": "Verlassen",
|
||||
"workspace.black.waitlist.enroll": "Einschreiben",
|
||||
"workspace.black.waitlist.enrolling": "Schreibe ein...",
|
||||
"workspace.black.waitlist.enrolled": "Eingeschrieben",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Wenn du auf Einschreiben klickst, startet dein Abo sofort und deine Karte wird belastet.",
|
||||
|
||||
"workspace.lite.loading": "Lade...",
|
||||
"workspace.lite.time.day": "Tag",
|
||||
"workspace.lite.time.days": "Tage",
|
||||
"workspace.lite.time.hour": "Stunde",
|
||||
"workspace.lite.time.hours": "Stunden",
|
||||
"workspace.lite.time.minute": "Minute",
|
||||
"workspace.lite.time.minutes": "Minuten",
|
||||
"workspace.lite.time.fewSeconds": "einige Sekunden",
|
||||
"workspace.lite.subscription.message": "Du hast OpenCode Go abonniert.",
|
||||
"workspace.lite.subscription.manage": "Abo verwalten",
|
||||
"workspace.lite.subscription.rollingUsage": "Fortlaufende Nutzung",
|
||||
"workspace.lite.subscription.weeklyUsage": "Wöchentliche Nutzung",
|
||||
"workspace.lite.subscription.monthlyUsage": "Monatliche Nutzung",
|
||||
"workspace.lite.subscription.resetsIn": "Setzt zurück in",
|
||||
"workspace.lite.subscription.useBalance": "Nutze dein verfügbares Guthaben, nachdem die Nutzungslimits erreicht sind",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Wähle "OpenCode Go" als Anbieter in deiner opencode-Konfiguration, um Go-Modelle zu verwenden.',
|
||||
"workspace.lite.black.message":
|
||||
"Du hast derzeit OpenCode Black abonniert oder stehst auf der Warteliste. Bitte kündige zuerst, wenn du zu Go wechseln möchtest.",
|
||||
"workspace.lite.other.message":
|
||||
"Ein anderes Mitglied in diesem Workspace hat OpenCode Go bereits abonniert. Nur ein Mitglied pro Workspace kann abonnieren.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go startet bei {{price}}, danach $10/Monat, und bietet zuverlässigen Zugang zu beliebten offenen Coding-Modellen mit großzügigen Nutzungslimits.",
|
||||
"workspace.lite.promo.price": "$5 im ersten Monat",
|
||||
"workspace.lite.promo.modelsTitle": "Was enthalten ist",
|
||||
"workspace.lite.promo.footer":
|
||||
"Der Plan wurde hauptsächlich für internationale Nutzer entwickelt, wobei die Modelle in den USA, der EU und Singapur gehostet werden, um einen stabilen weltweiten Zugriff zu gewährleisten. Preise und Nutzungslimits können sich ändern, während wir aus der frühen Nutzung und dem Feedback lernen.",
|
||||
"workspace.lite.promo.subscribe": "Go abonnieren",
|
||||
"workspace.lite.promo.subscribing": "Leite weiter...",
|
||||
"workspace.lite.promo.otherMethods": "Andere Zahlungsmethoden",
|
||||
"workspace.lite.promo.selectMethod": "Zahlungsmethode auswählen",
|
||||
|
||||
"download.title": "OpenCode | Download",
|
||||
"download.meta.description": "Lade OpenCode für macOS, Windows und Linux herunter",
|
||||
"download.hero.title": "OpenCode herunterladen",
|
||||
"download.hero.subtitle": "In Beta verfügbar für macOS, Windows und Linux",
|
||||
"download.hero.button": "Download für {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "OpenCode Extensions",
|
||||
"download.section.integrations": "OpenCode Integrationen",
|
||||
"download.action.download": "Download",
|
||||
"download.action.install": "Installieren",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Nicht unbedingt, aber wahrscheinlich. Du brauchst ein AI-Abo, wenn du OpenCode mit einem bezahlten Anbieter verbinden willst, obwohl du mit",
|
||||
"download.faq.a3.localLink": "lokalen Modellen",
|
||||
"download.faq.a3.afterLocal.beforeZen": "kostenlos arbeiten kannst. Während wir Nutzern raten,",
|
||||
"download.faq.a3.afterZen":
|
||||
" zu nutzen, funktioniert OpenCode mit allen populären Anbietern wie OpenAI, Anthropic, xAI etc.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode ist 100% kostenlos.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Zusätzliche Kosten entstehen durch dein Abo bei einem Modellanbieter. Während OpenCode mit jedem Modellanbieter funktioniert, empfehlen wir",
|
||||
"download.faq.a5.p2.afterZen": " zu nutzen.",
|
||||
|
||||
"download.faq.a6.p1":
|
||||
"Deine Daten und Informationen werden nur gespeichert, wenn du teilbare Links in OpenCode erstellst.",
|
||||
"download.faq.a6.p2.beforeShare": "Erfahre mehr über",
|
||||
"download.faq.a6.shareLink": "Share-Pages",
|
||||
|
||||
"enterprise.title": "OpenCode | Enterprise-Lösungen für Ihre Organisation",
|
||||
"enterprise.meta.description": "Kontaktieren Sie OpenCode für Enterprise-Lösungen",
|
||||
"enterprise.hero.title": "Ihr Code gehört Ihnen",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode arbeitet sicher innerhalb Ihrer Organisation, ohne dass Daten oder Kontext gespeichert werden und ohne Lizenzbeschränkungen oder Eigentumsansprüche. Starten Sie einen Testlauf mit Ihrem Team, dann rollen Sie es in Ihrer Organisation aus, indem Sie es in Ihr SSO und internes AI-Gateway integrieren.",
|
||||
"enterprise.hero.body2": "Lassen Sie uns wissen, wie wir helfen können.",
|
||||
"enterprise.form.name.label": "Vollständiger Name",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Rolle",
|
||||
"enterprise.form.role.placeholder": "Executive Chairman",
|
||||
"enterprise.form.company.label": "Unternehmen",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "Firmen-E-Mail",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Telefonnummer",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "Welches Problem versuchen Sie zu lösen?",
|
||||
"enterprise.form.message.placeholder": "Wir brauchen Hilfe bei...",
|
||||
"enterprise.form.send": "Senden",
|
||||
"enterprise.form.sending": "Sende...",
|
||||
"enterprise.form.success": "Nachricht gesendet, wir melden uns bald.",
|
||||
"enterprise.form.success.submitted": "Formular erfolgreich gesendet.",
|
||||
"enterprise.form.error.allFieldsRequired": "Alle Felder sind erforderlich.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Ungültiges E-Mail-Format.",
|
||||
"enterprise.form.error.internalServer": "Interner Serverfehler.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "Was ist OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise ist für Organisationen, die sicherstellen wollen, dass Code und Daten niemals ihre Infrastruktur verlassen. Dies geschieht durch eine zentrale Konfiguration, die in Ihr SSO und internes AI-Gateway integriert wird.",
|
||||
"enterprise.faq.q2": "Wie starte ich mit OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Starten Sie einfach mit einem internen Testlauf mit Ihrem Team. OpenCode speichert standardmäßig weder Code noch Kontextdaten, was den Einstieg erleichtert. Kontaktieren Sie uns dann, um Preise und Implementierungsoptionen zu besprechen.",
|
||||
"enterprise.faq.q3": "Wie funktioniert das Enterprise-Pricing?",
|
||||
"enterprise.faq.a3":
|
||||
"Wir bieten eine Preisgestaltung pro Arbeitsplatz (Seat) an. Wenn Sie Ihr eigenes LLM-Gateway haben, berechnen wir keine Gebühren für genutzte Token. Für weitere Details kontaktieren Sie uns für ein individuelles Angebot basierend auf den Anforderungen Ihrer Organisation.",
|
||||
"enterprise.faq.q4": "Sind meine Daten mit OpenCode Enterprise sicher?",
|
||||
"enterprise.faq.a4":
|
||||
"Ja. OpenCode speichert weder Ihren Code noch Kontextdaten. Alle Verarbeitungen finden lokal oder über direkte API-Aufrufe an Ihren AI-Anbieter statt. Mit zentraler Konfiguration und SSO-Integration bleiben Ihre Daten sicher innerhalb der Infrastruktur Ihrer Organisation.",
|
||||
|
||||
"brand.title": "OpenCode | Marke",
|
||||
"brand.meta.description": "OpenCode Markenrichtlinien",
|
||||
"brand.heading": "Markenrichtlinien",
|
||||
"brand.subtitle": "Ressourcen und Assets, die dir helfen, mit der OpenCode-Marke zu arbeiten.",
|
||||
"brand.downloadAll": "Alle Assets herunterladen",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "OpenCode Release Notes und Changelog",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "Neue Updates und Verbesserungen für OpenCode",
|
||||
"changelog.empty": "Keine Changelog-Einträge gefunden.",
|
||||
"changelog.viewJson": "JSON ansehen",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agent",
|
||||
"bench.list.table.model": "Modell",
|
||||
"bench.list.table.score": "Score",
|
||||
"bench.submission.error.allFieldsRequired": "Alle Felder sind erforderlich.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Task nicht gefunden",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "Agent",
|
||||
"bench.detail.labels.model": "Modell",
|
||||
"bench.detail.labels.task": "Task",
|
||||
"bench.detail.labels.repo": "Repo",
|
||||
"bench.detail.labels.from": "Von",
|
||||
"bench.detail.labels.to": "Bis",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Durchschnittliche Dauer",
|
||||
"bench.detail.labels.averageScore": "Durchschnittlicher Score",
|
||||
"bench.detail.labels.averageCost": "Durchschnittliche Kosten",
|
||||
"bench.detail.labels.summary": "Zusammenfassung",
|
||||
"bench.detail.labels.runs": "Durchläufe",
|
||||
"bench.detail.labels.score": "Score",
|
||||
"bench.detail.labels.base": "Basis",
|
||||
"bench.detail.labels.penalty": "Strafe",
|
||||
"bench.detail.labels.weight": "Gewichtung",
|
||||
"bench.detail.table.run": "Durchlauf",
|
||||
"bench.detail.table.score": "Score (Basis - Strafe)",
|
||||
"bench.detail.table.cost": "Kosten",
|
||||
"bench.detail.table.duration": "Dauer",
|
||||
"bench.detail.run.title": "Durchlauf {{n}}",
|
||||
"bench.detail.rawJson": "Raw JSON",
|
||||
} satisfies Dict
|
||||
784
qimingcode/packages/console/app/src/i18n/en.ts
Normal file
@@ -0,0 +1,784 @@
|
||||
export const dict = {
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Docs",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.go": "Go",
|
||||
"nav.login": "Login",
|
||||
"nav.free": "Download",
|
||||
"nav.home": "Home",
|
||||
"nav.openMenu": "Open menu",
|
||||
"nav.getStartedFree": "Get started for free",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Copy logo as SVG",
|
||||
"nav.context.copyWordmark": "Copy wordmark as SVG",
|
||||
"nav.context.brandAssets": "Brand assets",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Docs",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.feishu": "Feishu",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Brand",
|
||||
"legal.privacy": "Privacy",
|
||||
"legal.terms": "Terms",
|
||||
|
||||
"email.title": "Be the first to know when we release new products",
|
||||
"email.subtitle": "Join the waitlist for early access.",
|
||||
"email.placeholder": "Email address",
|
||||
"email.subscribe": "Subscribe",
|
||||
"email.success": "Almost done, check your inbox and confirm your email address",
|
||||
|
||||
"notFound.title": "Not Found | opencode",
|
||||
"notFound.heading": "404 - Page Not Found",
|
||||
"notFound.home": "Home",
|
||||
"notFound.docs": "Docs",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "opencode logo light",
|
||||
"notFound.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"user.logout": "Logout",
|
||||
|
||||
"auth.callback.error.codeMissing": "No authorization code found.",
|
||||
|
||||
"workspace.select": "Select workspace",
|
||||
"workspace.createNew": "+ Create New Workspace",
|
||||
"workspace.modal.title": "Create New Workspace",
|
||||
"workspace.modal.placeholder": "Enter workspace name",
|
||||
|
||||
"common.cancel": "Cancel",
|
||||
"common.creating": "Creating...",
|
||||
"common.create": "Create",
|
||||
"common.contactUs": "Contact us",
|
||||
|
||||
"common.videoUnsupported": "Your browser does not support the video tag.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Learn more",
|
||||
|
||||
"error.invalidPlan": "Invalid plan",
|
||||
"error.workspaceRequired": "Workspace ID is required",
|
||||
"error.alreadySubscribed": "This workspace already has a subscription",
|
||||
"error.limitRequired": "Limit is required.",
|
||||
"error.monthlyLimitInvalid": "Set a valid monthly limit.",
|
||||
"error.workspaceNameRequired": "Workspace name is required.",
|
||||
"error.nameTooLong": "Name must be 255 characters or less.",
|
||||
"error.emailRequired": "Email is required",
|
||||
"error.roleRequired": "Role is required",
|
||||
"error.idRequired": "ID is required",
|
||||
"error.nameRequired": "Name is required",
|
||||
"error.providerRequired": "Provider is required",
|
||||
"error.apiKeyRequired": "API key is required",
|
||||
"error.modelRequired": "Model is required",
|
||||
"error.reloadAmountMin": "Reload amount must be at least ${{amount}}",
|
||||
"error.reloadTriggerMin": "Balance trigger must be at least ${{amount}}",
|
||||
|
||||
"app.meta.description": "OpenCode - The open source coding agent.",
|
||||
|
||||
"home.title": "OpenCode | The open source AI coding agent",
|
||||
|
||||
"temp.title": "opencode | AI coding agent built for the terminal",
|
||||
"temp.hero.title": "The AI coding agent built for the terminal",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "Get Started",
|
||||
"temp.feature.native.title": "Native TUI",
|
||||
"temp.feature.native.body": "A responsive, native, themeable terminal UI",
|
||||
"temp.feature.zen.beforeLink": "A",
|
||||
"temp.feature.zen.link": "curated list of models",
|
||||
"temp.feature.zen.afterLink": "provided by opencode",
|
||||
"temp.feature.models.beforeLink": "Supports 75+ LLM providers through",
|
||||
"temp.feature.models.afterLink": ", including local models",
|
||||
"temp.screenshot.caption": "opencode TUI with the tokyonight theme",
|
||||
"temp.screenshot.alt": "opencode TUI with tokyonight theme",
|
||||
"temp.logoLightAlt": "opencode logo light",
|
||||
"temp.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"home.banner.badge": "New",
|
||||
"home.banner.text": "Desktop app available in beta",
|
||||
"home.banner.platforms": "on macOS, Windows, and Linux",
|
||||
"home.banner.downloadNow": "Download now",
|
||||
"home.banner.downloadBetaNow": "Download the desktop beta now",
|
||||
|
||||
"home.hero.title": "The open source AI coding agent",
|
||||
"home.hero.subtitle.a": "Free models included or connect any model from any provider,",
|
||||
"home.hero.subtitle.b": "including Claude, GPT, Gemini and more.",
|
||||
|
||||
"home.install.ariaLabel": "Install options",
|
||||
|
||||
"home.what.title": "What is OpenCode?",
|
||||
"home.what.body": "OpenCode is an open source agent that helps you write code in your terminal, IDE, or desktop.",
|
||||
"home.what.lsp.title": "LSP enabled",
|
||||
"home.what.lsp.body": "Automatically loads the right LSPs for the LLM",
|
||||
"home.what.multiSession.title": "Multi-session",
|
||||
"home.what.multiSession.body": "Start multiple agents in parallel on the same project",
|
||||
"home.what.shareLinks.title": "Share links",
|
||||
"home.what.shareLinks.body": "Share a link to any session for reference or to debug",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Log in with GitHub to use your Copilot account",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Log in with OpenAI to use your ChatGPT Plus or Pro account",
|
||||
"home.what.anyModel.title": "Any model",
|
||||
"home.what.anyModel.body": "75+ LLM providers through Models.dev, including local models",
|
||||
"home.what.anyEditor.title": "Any editor",
|
||||
"home.what.anyEditor.body": "Available as a terminal interface, desktop app, and IDE extension",
|
||||
"home.what.readDocs": "Read docs",
|
||||
|
||||
"home.growth.title": "The open source AI coding agent",
|
||||
"home.growth.body":
|
||||
"With over <strong>{{stars}}</strong> GitHub stars, <strong>{{contributors}}</strong> contributors, and over <strong>{{commits}}</strong> commits, OpenCode is used and trusted by over <strong>{{monthlyUsers}}</strong> developers every month.",
|
||||
"home.growth.githubStars": "GitHub Stars",
|
||||
"home.growth.contributors": "Contributors",
|
||||
"home.growth.monthlyDevs": "Monthly Devs",
|
||||
|
||||
"home.privacy.title": "Built for privacy first",
|
||||
"home.privacy.body":
|
||||
"OpenCode does not store any of your code or context data, so that it can operate in privacy sensitive environments.",
|
||||
"home.privacy.learnMore": "Learn more about",
|
||||
"home.privacy.link": "privacy",
|
||||
|
||||
"home.faq.q1": "What is OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode is an open source agent that helps you write and run code with any AI model. It's available as a terminal-based interface, desktop app, or IDE extension.",
|
||||
"home.faq.q2": "How do I use OpenCode?",
|
||||
"home.faq.a2.before": "The easiest way to get started is to read the",
|
||||
"home.faq.a2.link": "intro",
|
||||
"home.faq.q3": "Do I need extra AI subscriptions to use OpenCode?",
|
||||
"home.faq.a3.p1":
|
||||
"Not necessarily, OpenCode comes with a set of free models that you can use without creating an account.",
|
||||
"home.faq.a3.p2.beforeZen": "Aside from these, you can use any of the popular coding models by creating a",
|
||||
"home.faq.a3.p2.afterZen": " account.",
|
||||
"home.faq.a3.p3":
|
||||
"While we encourage users to use Zen, OpenCode also works with all popular providers such as OpenAI, Anthropic, xAI etc.",
|
||||
"home.faq.a3.p4.beforeLocal": "You can even connect your",
|
||||
"home.faq.a3.p4.localLink": "local models",
|
||||
"home.faq.q4": "Can I use my existing AI subscriptions with OpenCode?",
|
||||
"home.faq.a4.p1":
|
||||
"Yes, OpenCode supports subscription plans from all major providers. You can use your Claude Pro/Max, ChatGPT Plus/Pro, or GitHub Copilot subscriptions.",
|
||||
"home.faq.q5": "Can I only use OpenCode in the terminal?",
|
||||
"home.faq.a5.beforeDesktop": "Not anymore! OpenCode is now available as an app for your",
|
||||
"home.faq.a5.desktop": "desktop",
|
||||
"home.faq.a5.and": "and",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "How much does OpenCode cost?",
|
||||
"home.faq.a6":
|
||||
"OpenCode is 100% free to use. It also comes with a set of free models. There might be additional costs if you connect any other provider.",
|
||||
"home.faq.q7": "What about data and privacy?",
|
||||
"home.faq.a7.p1": "Your data and information is only stored when you use our free models or create sharable links.",
|
||||
"home.faq.a7.p2.beforeModels": "Learn more about",
|
||||
"home.faq.a7.p2.modelsLink": "our models",
|
||||
"home.faq.a7.p2.and": "and",
|
||||
"home.faq.a7.p2.shareLink": "share pages",
|
||||
"home.faq.q8": "Is OpenCode open source?",
|
||||
"home.faq.a8.p1": "Yes, OpenCode is fully open source. The source code is public on",
|
||||
"home.faq.a8.p2": "under the",
|
||||
"home.faq.a8.mitLicense": "MIT License",
|
||||
"home.faq.a8.p3":
|
||||
", meaning anyone can use, modify, or contribute to its development. Anyone from the community can file issues, submit pull requests, and extend functionality.",
|
||||
|
||||
"home.zenCta.title": "Access reliable optimized models for coding agents",
|
||||
"home.zenCta.body":
|
||||
"Zen gives you access to a handpicked set of AI models that OpenCode has tested and benchmarked specifically for coding agents. No need to worry about inconsistent performance and quality across providers, use validated models that work.",
|
||||
"home.zenCta.link": "Learn about Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | A curated set of reliable optimized models for coding agents",
|
||||
"zen.hero.title": "Reliable optimized models for coding agents",
|
||||
"zen.hero.body":
|
||||
"Zen gives you access to a curated set of AI models that OpenCode has tested and benchmarked specifically for coding agents. No need to worry about inconsistent performance and quality, use validated models that work.",
|
||||
|
||||
"zen.faq.q1": "What is OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen is a curated set of AI models tested and benchmarked for coding agents created by the team behind OpenCode.",
|
||||
"zen.faq.q2": "What makes Zen more accurate?",
|
||||
"zen.faq.a2":
|
||||
"Zen only provides models that have been specifically tested and benchmarked for coding agents. You wouldn't use a butter knife to cut steak, don't use poor models for coding.",
|
||||
"zen.faq.q3": "Is Zen cheaper?",
|
||||
"zen.faq.a3":
|
||||
"Zen is not for profit. Zen passes through the costs from the model providers to you. The higher Zen's usage the more OpenCode can negotiate better rates and pass those to you.",
|
||||
"zen.faq.q4": "How much does Zen cost?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "charges per request",
|
||||
"zen.faq.a4.p1.afterPricing": "with zero markups, so you pay exactly what the model provider charges.",
|
||||
"zen.faq.a4.p2.beforeAccount": "Your total cost depends on usage, and you can set monthly spend limits in your",
|
||||
"zen.faq.a4.p2.accountLink": "account",
|
||||
"zen.faq.a4.p3": "To cover costs, OpenCode adds only a small payment processing fee of $1.23 per $20 balance top-up.",
|
||||
"zen.faq.q5": "What about data and privacy?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"All Zen models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the",
|
||||
"zen.faq.a5.exceptionsLink": "following exceptions",
|
||||
"zen.faq.q6": "Can I set spend limits?",
|
||||
"zen.faq.a6": "Yes, you can set monthly spending limits in your account.",
|
||||
"zen.faq.q7": "Can I cancel?",
|
||||
"zen.faq.a7": "Yes, you can disable billing at any time and use your remaining balance.",
|
||||
"zen.faq.q8": "Can I use Zen with other coding agents?",
|
||||
"zen.faq.a8":
|
||||
"While Zen works great with OpenCode, you can use Zen with any agent. Follow the setup instructions in your preferred coding agent.",
|
||||
|
||||
"zen.cta.start": "Get started with Zen",
|
||||
"zen.pricing.title": "Add $20 Pay as you go balance",
|
||||
"zen.pricing.fee": "(+$1.23 card processing fee)",
|
||||
"zen.pricing.body": "Use with any agent. Set monthly spend limits. Cancel any time.",
|
||||
"zen.problem.title": "What problem is Zen solving?",
|
||||
"zen.problem.body":
|
||||
"There are so many models available, but only a few work well with coding agents. Most providers configure them differently with varying results.",
|
||||
"zen.problem.subtitle": "We're fixing this for everyone, not just OpenCode users.",
|
||||
"zen.problem.item1": "Testing select models and consulting their teams",
|
||||
"zen.problem.item2": "Working with providers to ensure they're delivered properly",
|
||||
"zen.problem.item3": "Benchmarking all model-provider combinations we recommend",
|
||||
"zen.how.title": "How Zen works",
|
||||
"zen.how.body": "While we suggest you use Zen with OpenCode, you can use Zen with any agent.",
|
||||
"zen.how.step1.title": "Sign up and add $20 balance",
|
||||
"zen.how.step1.beforeLink": "follow the",
|
||||
"zen.how.step1.link": "setup instructions",
|
||||
"zen.how.step2.title": "Use Zen with transparent pricing",
|
||||
"zen.how.step2.link": "pay per request",
|
||||
"zen.how.step2.afterLink": "with zero markups",
|
||||
"zen.how.step3.title": "Auto-top up",
|
||||
"zen.how.step3.body": "when your balance reaches $5 we'll automatically add $20",
|
||||
"zen.privacy.title": "Your privacy is important to us",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"All Zen models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the",
|
||||
"zen.privacy.exceptionsLink": "following exceptions",
|
||||
|
||||
"go.title": "OpenCode Go | Low cost coding models for everyone",
|
||||
"go.meta.description":
|
||||
"Go starts at $5 for your first month, then $10/month, with generous 5-hour request limits for GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro, and DeepSeek V4 Flash.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6 gets 3× usage limits through April 27",
|
||||
"go.hero.title": "Low cost coding models for everyone",
|
||||
"go.hero.body":
|
||||
"Go brings agentic coding to programmers around the world. Offering generous limits and reliable access to the most capable open-source models, so you can build with powerful agents without worrying about cost or availability.",
|
||||
|
||||
"go.cta.start": "Subscribe to Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Subscribe to Go",
|
||||
"go.cta.price": "$10/month",
|
||||
"go.cta.promo": "$5 first month",
|
||||
"go.pricing.body": "Use with any agent. $5 first month, then $10/month. Top up credit if needed. Cancel any time.",
|
||||
"go.graph.free": "Free",
|
||||
"go.graph.freePill": "Big Pickle and free models",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Requests per 5 hour",
|
||||
"go.graph.usageLimits": "Usage limits",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Requests per 5h: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "has been life changing, it's truly a no-brainer.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, and ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 out of 5 people on our team love using",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "I can't recommend",
|
||||
"go.testimonials.adam.quoteAfter": "enough. Seriously, it's really good.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "With",
|
||||
"go.testimonials.david.quoteAfter": "I know all the models are tested and perfect for coding agents.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 times)",
|
||||
"go.testimonials.frank.quote": "I wish I was still at Nvidia.",
|
||||
"go.problem.title": "What problem is Go solving?",
|
||||
"go.problem.body":
|
||||
"We're focused on bringing the OpenCode experience to as many people as possible. OpenCode Go is a low cost subscription: $5 for your first month, then $10/month. It provides generous limits and reliable access to the most capable open source models.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Low cost subscription pricing",
|
||||
"go.problem.item2": "Generous limits and reliable access",
|
||||
"go.problem.item3": "Built for as many programmers as possible",
|
||||
"go.problem.item4":
|
||||
"Includes GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro, and DeepSeek V4 Flash",
|
||||
"go.how.title": "How Go works",
|
||||
"go.how.body": "Go starts at $5 for your first month, then $10/month. You can use it with OpenCode or any agent.",
|
||||
"go.how.step1.title": "Create an account",
|
||||
"go.how.step1.beforeLink": "follow the",
|
||||
"go.how.step1.link": "setup instructions",
|
||||
"go.how.step2.title": "Subscribe to Go",
|
||||
"go.how.step2.link": "$5 first month",
|
||||
"go.how.step2.afterLink": "then $10/month with generous limits",
|
||||
"go.how.step3.title": "Start coding",
|
||||
"go.how.step3.body": "with reliable access to open-source models",
|
||||
"go.privacy.title": "Your privacy is important to us",
|
||||
"go.privacy.body":
|
||||
"The plan is designed primarily for international users, with models hosted in the US, EU, and Singapore for stable global access.",
|
||||
"go.privacy.contactAfter": "if you have any questions.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Go models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the",
|
||||
"go.privacy.exceptionsLink": "following exceptions",
|
||||
"go.faq.q1": "What is OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go is a low-cost subscription that gives you reliable access to capable open-source models for agentic coding.",
|
||||
"go.faq.q2": "What models does Go include?",
|
||||
"go.faq.a2": "Go includes the models listed below, with generous limits and reliable access.",
|
||||
"go.faq.q3": "Is Go the same as Zen?",
|
||||
"go.faq.a3":
|
||||
"No. Zen is pay-as-you-go, while Go starts at $5 for your first month, then $10/month, with generous limits and reliable access to open-source models GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro, and DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "How much does Go cost?",
|
||||
"go.faq.a4.p1.beforePricing": "Go costs",
|
||||
"go.faq.a4.p1.pricingLink": "$5 first month",
|
||||
"go.faq.a4.p1.afterPricing": "then $10/month with generous limits.",
|
||||
"go.faq.a4.p2.beforeAccount": "You can manage your subscription in your",
|
||||
"go.faq.a4.p2.accountLink": "account",
|
||||
"go.faq.a4.p3": "Cancel any time.",
|
||||
"go.faq.q5": "What about data and privacy?",
|
||||
"go.faq.a5.body":
|
||||
"The plan is designed primarily for international users, with models hosted in the US, EU, and Singapore for stable global access. Our providers follow a zero-retention policy and do not use your data for model training.",
|
||||
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Go models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the",
|
||||
"go.faq.a5.exceptionsLink": "following exceptions",
|
||||
"go.faq.q6": "Can I top up credit?",
|
||||
"go.faq.a6": "If you need more usage, you can top up credit in your account.",
|
||||
"go.faq.q7": "Can I cancel?",
|
||||
"go.faq.a7": "Yes, you can cancel any time.",
|
||||
"go.faq.q8": "Can I use Go with other coding agents?",
|
||||
"go.faq.a8": "Yes, you can use Go with any agent. Follow the setup instructions in your preferred coding agent.",
|
||||
|
||||
"go.faq.q9": "What is the difference between free models and Go?",
|
||||
"go.faq.a9":
|
||||
"Free models include Big Pickle plus promotional models available at the time, with a quota of 200 requests/day. Go includes GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro, and DeepSeek V4 Flash with higher request quotas enforced across rolling windows (5-hour, weekly, and monthly), roughly equivalent to $12 per 5 hours, $30 per week, and $60 per month (actual request counts vary by model and usage).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Rate limit exceeded. Please try again later.",
|
||||
"zen.api.error.modelNotSupported": "Model {{model}} not supported",
|
||||
"zen.api.error.modelFormatNotSupported": "Model {{model}} not supported for format {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "No provider available",
|
||||
"zen.api.error.providerNotSupported": "Provider {{provider}} not supported",
|
||||
"zen.api.error.missingApiKey": "Missing API key.",
|
||||
"zen.api.error.invalidApiKey": "Invalid API key.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Subscription quota exceeded. Retry in {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Subscription quota exceeded. You can continue using free models.",
|
||||
"zen.api.error.noPaymentMethod": "No payment method. Add a payment method here: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Insufficient balance. Manage your billing here: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Your workspace has reached its monthly spending limit of ${{amount}}. Manage your limits here: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"You have reached your monthly spending limit of ${{amount}}. Manage your limits here: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "Model is disabled",
|
||||
"zen.api.error.trialEnded":
|
||||
"Free promotion has ended for {{model}}. You can continue using the model by subscribing to OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Access all the world's best coding models",
|
||||
"black.meta.description": "Get access to Claude, GPT, Gemini and more with OpenCode Black subscription plans.",
|
||||
"black.hero.title": "Access all the world's best coding models",
|
||||
"black.hero.subtitle": "Including Claude, GPT, Gemini and more",
|
||||
"black.title": "OpenCode Black | Pricing",
|
||||
"black.paused": "Black plan enrollment is temporarily paused.",
|
||||
"black.plan.icon20": "Black 20 plan",
|
||||
"black.plan.icon100": "Black 100 plan",
|
||||
"black.plan.icon200": "Black 200 plan",
|
||||
"black.plan.multiplier100": "5x more usage than Black 20",
|
||||
"black.plan.multiplier200": "20x more usage than Black 20",
|
||||
"black.price.perMonth": "per month",
|
||||
"black.price.perPersonBilledMonthly": "per person billed monthly",
|
||||
"black.terms.1": "Your subscription will not start immediately",
|
||||
"black.terms.2": "You will be added to the waitlist and activated soon",
|
||||
"black.terms.3": "Your card will only be charged when your subscription is activated",
|
||||
"black.terms.4": "Usage limits apply, heavily automated use may reach limits sooner",
|
||||
"black.terms.5": "Subscriptions are for individuals, contact Enterprise for teams",
|
||||
"black.terms.6": "Limits may be adjusted and plans may be discontinued in the future",
|
||||
"black.terms.7": "Cancel your subscription at any time",
|
||||
"black.action.continue": "Continue",
|
||||
"black.finePrint.beforeTerms": "Prices shown don't include applicable tax",
|
||||
"black.finePrint.terms": "Terms of Service",
|
||||
"black.workspace.title": "OpenCode Black | Select Workspace",
|
||||
"black.workspace.selectPlan": "Select a workspace for this plan",
|
||||
"black.workspace.name": "Workspace {{n}}",
|
||||
"black.subscribe.title": "Subscribe to OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Payment method",
|
||||
"black.subscribe.loadingPaymentForm": "Loading payment form...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Select a workspace to continue",
|
||||
"black.subscribe.failurePrefix": "Uh oh!",
|
||||
"black.subscribe.error.generic": "An error occurred",
|
||||
"black.subscribe.error.invalidPlan": "Invalid plan",
|
||||
"black.subscribe.error.workspaceRequired": "Workspace ID is required",
|
||||
"black.subscribe.error.alreadySubscribed": "This workspace already has a subscription",
|
||||
"black.subscribe.processing": "Processing...",
|
||||
"black.subscribe.submit": "Subscribe ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "You will only be charged when your subscription is activated",
|
||||
"black.subscribe.success.title": "You're on the OpenCode Black waitlist",
|
||||
"black.subscribe.success.subscriptionPlan": "Subscription plan",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Amount",
|
||||
"black.subscribe.success.amountValue": "${{plan}} per month",
|
||||
"black.subscribe.success.paymentMethod": "Payment method",
|
||||
"black.subscribe.success.dateJoined": "Date joined",
|
||||
"black.subscribe.success.chargeNotice": "Your card will be charged when your subscription is activated",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Usage",
|
||||
"workspace.nav.apiKeys": "API Keys",
|
||||
"workspace.nav.members": "Members",
|
||||
"workspace.nav.billing": "Billing",
|
||||
"workspace.nav.settings": "Settings",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Reliable optimized models for coding agents.",
|
||||
"workspace.lite.banner.beforeLink": "Low cost coding models for everyone.",
|
||||
"workspace.home.billing.loading": "Loading...",
|
||||
"workspace.home.billing.enable": "Enable billing",
|
||||
"workspace.home.billing.currentBalance": "Current balance",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Tested & Verified Models",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"We've benchmarked and tested models specifically for coding agents to ensure the best performance.",
|
||||
"workspace.newUser.feature.quality.title": "Highest Quality",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Access models configured for optimal performance - no downgrades or routing to cheaper providers.",
|
||||
"workspace.newUser.feature.lockin.title": "No Lock-in",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Use Zen with any coding agent, and continue using other providers with opencode whenever you want.",
|
||||
"workspace.newUser.copyApiKey": "Copy API key",
|
||||
"workspace.newUser.copyKey": "Copy Key",
|
||||
"workspace.newUser.copied": "Copied!",
|
||||
"workspace.newUser.step.enableBilling": "Enable billing",
|
||||
"workspace.newUser.step.login.before": "Run",
|
||||
"workspace.newUser.step.login.after": "and select opencode",
|
||||
"workspace.newUser.step.pasteKey": "Paste your API key",
|
||||
"workspace.newUser.step.models.before": "Start opencode and run",
|
||||
"workspace.newUser.step.models.after": "to select a model",
|
||||
|
||||
"workspace.models.title": "Models",
|
||||
"workspace.models.subtitle.beforeLink": "Manage which models workspace members can access.",
|
||||
"workspace.models.table.model": "Model",
|
||||
"workspace.models.table.enabled": "Enabled",
|
||||
|
||||
"workspace.providers.title": "Bring Your Own Key",
|
||||
"workspace.providers.subtitle": "Configure your own API keys from AI providers.",
|
||||
"workspace.providers.placeholder": "Enter {{provider}} API key ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Configure",
|
||||
"workspace.providers.edit": "Edit",
|
||||
"workspace.providers.delete": "Delete",
|
||||
"workspace.providers.saving": "Saving...",
|
||||
"workspace.providers.save": "Save",
|
||||
"workspace.providers.table.provider": "Provider",
|
||||
"workspace.providers.table.apiKey": "API Key",
|
||||
|
||||
"workspace.usage.title": "Usage History",
|
||||
"workspace.usage.subtitle": "Recent API usage and costs.",
|
||||
"workspace.usage.empty": "Make your first API call to get started.",
|
||||
"workspace.usage.table.date": "Date",
|
||||
"workspace.usage.table.model": "Model",
|
||||
"workspace.usage.table.input": "Input",
|
||||
"workspace.usage.table.output": "Output",
|
||||
"workspace.usage.table.cost": "Cost",
|
||||
"workspace.usage.table.session": "Session",
|
||||
"workspace.usage.breakdown.input": "Input",
|
||||
"workspace.usage.breakdown.cacheRead": "Cache Read",
|
||||
"workspace.usage.breakdown.cacheWrite": "Cache Write",
|
||||
"workspace.usage.breakdown.output": "Output",
|
||||
"workspace.usage.breakdown.reasoning": "Reasoning",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Cost",
|
||||
"workspace.cost.subtitle": "Usage costs broken down by model.",
|
||||
"workspace.cost.allModels": "All Models",
|
||||
"workspace.cost.allKeys": "All Keys",
|
||||
"workspace.cost.deletedSuffix": "(deleted)",
|
||||
"workspace.cost.empty": "No usage data available for the selected period.",
|
||||
"workspace.cost.subscriptionShort": "sub",
|
||||
|
||||
"workspace.keys.title": "API Keys",
|
||||
"workspace.keys.subtitle": "Manage your API keys for accessing opencode services.",
|
||||
"workspace.keys.create": "Create API Key",
|
||||
"workspace.keys.placeholder": "Enter key name",
|
||||
"workspace.keys.empty": "Create an opencode Gateway API key",
|
||||
"workspace.keys.table.name": "Name",
|
||||
"workspace.keys.table.key": "Key",
|
||||
"workspace.keys.table.createdBy": "Created By",
|
||||
"workspace.keys.table.lastUsed": "Last Used",
|
||||
"workspace.keys.copyApiKey": "Copy API key",
|
||||
"workspace.keys.delete": "Delete",
|
||||
|
||||
"workspace.members.title": "Members",
|
||||
"workspace.members.subtitle": "Manage workspace members and their permissions.",
|
||||
"workspace.members.invite": "Invite Member",
|
||||
"workspace.members.inviting": "Inviting...",
|
||||
"workspace.members.beta.beforeLink": "Workspaces are free for teams during the beta.",
|
||||
"workspace.members.form.invitee": "Invitee",
|
||||
"workspace.members.form.emailPlaceholder": "Enter email",
|
||||
"workspace.members.form.role": "Role",
|
||||
"workspace.members.form.monthlyLimit": "Monthly spending limit",
|
||||
"workspace.members.noLimit": "No limit",
|
||||
"workspace.members.noLimitLowercase": "no limit",
|
||||
"workspace.members.invited": "invited",
|
||||
"workspace.members.edit": "Edit",
|
||||
"workspace.members.delete": "Delete",
|
||||
"workspace.members.saving": "Saving...",
|
||||
"workspace.members.save": "Save",
|
||||
"workspace.members.table.email": "Email",
|
||||
"workspace.members.table.role": "Role",
|
||||
"workspace.members.table.monthLimit": "Month limit",
|
||||
"workspace.members.role.admin": "Admin",
|
||||
"workspace.members.role.adminDescription": "Can manage models, members, and billing",
|
||||
"workspace.members.role.member": "Member",
|
||||
"workspace.members.role.memberDescription": "Can only generate API keys for themselves",
|
||||
|
||||
"workspace.settings.title": "Settings",
|
||||
"workspace.settings.subtitle": "Update your workspace name and preferences.",
|
||||
"workspace.settings.workspaceName": "Workspace name",
|
||||
"workspace.settings.defaultName": "Default",
|
||||
"workspace.settings.updating": "Updating...",
|
||||
"workspace.settings.save": "Save",
|
||||
"workspace.settings.edit": "Edit",
|
||||
|
||||
"workspace.billing.title": "Billing",
|
||||
"workspace.billing.subtitle.beforeLink": "Manage payment methods.",
|
||||
"workspace.billing.contactUs": "Contact us",
|
||||
"workspace.billing.subtitle.afterLink": "if you have any questions.",
|
||||
"workspace.billing.currentBalance": "Current Balance",
|
||||
"workspace.billing.add": "Add $",
|
||||
"workspace.billing.enterAmount": "Enter amount",
|
||||
"workspace.billing.loading": "Loading...",
|
||||
"workspace.billing.addAction": "Add",
|
||||
"workspace.billing.addBalance": "Add Balance",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Linked to Stripe",
|
||||
"workspace.billing.manage": "Manage",
|
||||
"workspace.billing.enable": "Enable Billing",
|
||||
|
||||
"workspace.monthlyLimit.title": "Monthly Limit",
|
||||
"workspace.monthlyLimit.subtitle": "Set a monthly usage limit for your account.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Setting...",
|
||||
"workspace.monthlyLimit.set": "Set",
|
||||
"workspace.monthlyLimit.edit": "Edit Limit",
|
||||
"workspace.monthlyLimit.noLimit": "No usage limit set.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Current usage for",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "is $",
|
||||
|
||||
"workspace.redeem.title": "Redeem Coupon",
|
||||
"workspace.redeem.subtitle": "Redeem a coupon code to claim credits or perks.",
|
||||
"workspace.redeem.placeholder": "Enter coupon code",
|
||||
"workspace.redeem.redeem": "Redeem",
|
||||
"workspace.redeem.redeeming": "Redeeming...",
|
||||
"workspace.redeem.success": "Coupon redeemed successfully.",
|
||||
|
||||
"workspace.reload.title": "Auto Reload",
|
||||
"workspace.reload.disabled.before": "Auto reload is",
|
||||
"workspace.reload.disabled.state": "disabled",
|
||||
"workspace.reload.disabled.after": "Enable to automatically reload when balance is low.",
|
||||
"workspace.reload.enabled.before": "Auto reload is",
|
||||
"workspace.reload.enabled.state": "enabled",
|
||||
"workspace.reload.enabled.middle": "We'll reload",
|
||||
"workspace.reload.processingFee": "processing fee",
|
||||
"workspace.reload.enabled.after": "when balance reaches",
|
||||
"workspace.reload.edit": "Edit",
|
||||
"workspace.reload.enable": "Enable",
|
||||
"workspace.reload.enableAutoReload": "Enable Auto Reload",
|
||||
"workspace.reload.reloadAmount": "Reload $",
|
||||
"workspace.reload.whenBalanceReaches": "When balance reaches $",
|
||||
"workspace.reload.saving": "Saving...",
|
||||
"workspace.reload.save": "Save",
|
||||
"workspace.reload.failedAt": "Reload failed at",
|
||||
"workspace.reload.reason": "Reason:",
|
||||
"workspace.reload.updatePaymentMethod": "Please update your payment method and try again.",
|
||||
"workspace.reload.retrying": "Retrying...",
|
||||
"workspace.reload.retry": "Retry",
|
||||
"workspace.reload.error.paymentFailed": "Payment failed.",
|
||||
|
||||
"workspace.payments.title": "Payments History",
|
||||
"workspace.payments.subtitle": "Recent payment transactions.",
|
||||
"workspace.payments.table.date": "Date",
|
||||
"workspace.payments.table.paymentId": "Payment ID",
|
||||
"workspace.payments.table.amount": "Amount",
|
||||
"workspace.payments.table.receipt": "Receipt",
|
||||
"workspace.payments.type.credit": "credit",
|
||||
"workspace.payments.type.subscription": "subscription",
|
||||
"workspace.payments.view": "View",
|
||||
|
||||
"workspace.black.loading": "Loading...",
|
||||
"workspace.black.time.day": "day",
|
||||
"workspace.black.time.days": "days",
|
||||
"workspace.black.time.hour": "hour",
|
||||
"workspace.black.time.hours": "hours",
|
||||
"workspace.black.time.minute": "minute",
|
||||
"workspace.black.time.minutes": "minutes",
|
||||
"workspace.black.time.fewSeconds": "a few seconds",
|
||||
"workspace.black.subscription.title": "Subscription",
|
||||
"workspace.black.subscription.message": "You are subscribed to OpenCode Black for ${{plan}} per month.",
|
||||
"workspace.black.subscription.manage": "Manage Subscription",
|
||||
"workspace.black.subscription.rollingUsage": "5-hour Usage",
|
||||
"workspace.black.subscription.weeklyUsage": "Weekly Usage",
|
||||
"workspace.black.subscription.resetsIn": "Resets in",
|
||||
"workspace.black.subscription.useBalance": "Use your available balance after reaching the usage limits",
|
||||
"workspace.black.waitlist.title": "Waitlist",
|
||||
"workspace.black.waitlist.joined": "You are on the waitlist for the ${{plan}} per month OpenCode Black plan.",
|
||||
"workspace.black.waitlist.ready": "We're ready to enroll you into the ${{plan}} per month OpenCode Black plan.",
|
||||
"workspace.black.waitlist.leave": "Leave Waitlist",
|
||||
"workspace.black.waitlist.leaving": "Leaving...",
|
||||
"workspace.black.waitlist.left": "Left",
|
||||
"workspace.black.waitlist.enroll": "Enroll",
|
||||
"workspace.black.waitlist.enrolling": "Enrolling...",
|
||||
"workspace.black.waitlist.enrolled": "Enrolled",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"When you click Enroll, your subscription starts immediately and your card will be charged.",
|
||||
|
||||
"workspace.lite.loading": "Loading...",
|
||||
"workspace.lite.time.day": "day",
|
||||
"workspace.lite.time.days": "days",
|
||||
"workspace.lite.time.hour": "hour",
|
||||
"workspace.lite.time.hours": "hours",
|
||||
"workspace.lite.time.minute": "minute",
|
||||
"workspace.lite.time.minutes": "minutes",
|
||||
"workspace.lite.time.fewSeconds": "a few seconds",
|
||||
"workspace.lite.subscription.message": "You are subscribed to OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Manage Subscription",
|
||||
"workspace.lite.subscription.rollingUsage": "Rolling Usage",
|
||||
"workspace.lite.subscription.weeklyUsage": "Weekly Usage",
|
||||
"workspace.lite.subscription.monthlyUsage": "Monthly Usage",
|
||||
"workspace.lite.subscription.resetsIn": "Resets in",
|
||||
"workspace.lite.subscription.useBalance": "Use your available balance after reaching the usage limits",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Select "OpenCode Go" as the provider in your opencode configuration to use Go models.',
|
||||
"workspace.lite.black.message":
|
||||
"You're currently subscribed to OpenCode Black or on the waitlist. Please unsubscribe first if you'd like to switch to Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Another member in this workspace is already subscribed to OpenCode Go. Only one member per workspace can subscribe.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go starts at {{price}}, then $10/month, and provides reliable access to popular open coding models with generous usage limits.",
|
||||
"workspace.lite.promo.price": "$5 for your first month",
|
||||
"workspace.lite.promo.modelsTitle": "What's Included",
|
||||
"workspace.lite.promo.footer":
|
||||
"The plan is designed primarily for international users, with models hosted in the US, EU, and Singapore for stable global access. Pricing and usage limits may change as we learn from early usage and feedback.",
|
||||
"workspace.lite.promo.subscribe": "Subscribe to Go",
|
||||
"workspace.lite.promo.subscribing": "Redirecting...",
|
||||
"workspace.lite.promo.otherMethods": "Other payment methods",
|
||||
"workspace.lite.promo.selectMethod": "Select payment method",
|
||||
|
||||
"download.title": "OpenCode | Download",
|
||||
"download.meta.description": "Download OpenCode for macOS, Windows, and Linux",
|
||||
"download.hero.title": "Download OpenCode",
|
||||
"download.hero.subtitle": "Available in Beta for macOS, Windows, and Linux",
|
||||
"download.hero.button": "Download for {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "OpenCode Extensions",
|
||||
"download.section.integrations": "OpenCode Integrations",
|
||||
"download.action.download": "Download",
|
||||
"download.action.install": "Install",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Not necessarily, but probably. You'll need an AI subscription if you want to connect OpenCode to a paid provider, although you can work with",
|
||||
"download.faq.a3.localLink": "local models",
|
||||
"download.faq.a3.afterLocal.beforeZen": "for free. While we encourage users to use",
|
||||
"download.faq.a3.afterZen": ", OpenCode works with all popular providers such as OpenAI, Anthropic, xAI etc.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode is 100% free to use.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Any additional costs will come from your subscription to a model provider. While OpenCode works with any model provider, we recommend using",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1": "Your data and information is only stored when you create sharable links in OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "Learn more about",
|
||||
"download.faq.a6.shareLink": "share pages",
|
||||
|
||||
"enterprise.title": "OpenCode | Enterprise solutions for your organisation",
|
||||
"enterprise.meta.description": "Contact OpenCode for enterprise solutions",
|
||||
"enterprise.hero.title": "Your code is yours",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode operates securely inside your organization with no data or context stored and no licensing restrictions or ownership claims. Start a trial with your team, then deploy it across your organization by integrating it with your SSO and internal AI gateway.",
|
||||
"enterprise.hero.body2": "Let us know how we can help.",
|
||||
"enterprise.form.name.label": "Full name",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Role",
|
||||
"enterprise.form.role.placeholder": "Executive Chairman",
|
||||
"enterprise.form.company.label": "Company",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "Company email",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Phone number",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "What problem are you trying to solve?",
|
||||
"enterprise.form.message.placeholder": "We need help with...",
|
||||
"enterprise.form.send": "Send",
|
||||
"enterprise.form.sending": "Sending...",
|
||||
"enterprise.form.success": "Message sent, we'll be in touch soon.",
|
||||
"enterprise.form.success.submitted": "Form submitted successfully.",
|
||||
"enterprise.form.error.allFieldsRequired": "All fields are required.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Invalid email format.",
|
||||
"enterprise.form.error.internalServer": "Internal server error.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "What is OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise is for organizations that want to ensure that their code and data never leaves their infrastructure. It can do this by using a centralized config that integrates with your SSO and internal AI gateway.",
|
||||
"enterprise.faq.q2": "How do I get started with OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Simply start with an internal trial with your team. OpenCode by default does not store your code or context data, making it easy to get started. Then contact us to discuss pricing and implementation options.",
|
||||
"enterprise.faq.q3": "How does enterprise pricing work?",
|
||||
"enterprise.faq.a3":
|
||||
"We offer per-seat enterprise pricing. If you have your own LLM gateway, we do not charge for tokens used. For further details, contact us for a custom quote based on your organization's needs.",
|
||||
"enterprise.faq.q4": "Is my data secure with OpenCode Enterprise?",
|
||||
"enterprise.faq.a4":
|
||||
"Yes. OpenCode does not store your code or context data. All processing happens locally or through direct API calls to your AI provider. With central config and SSO integration, your data remains secure within your organization's infrastructure.",
|
||||
|
||||
"brand.title": "OpenCode | Brand",
|
||||
"brand.meta.description": "OpenCode brand guidelines",
|
||||
"brand.heading": "Brand guidelines",
|
||||
"brand.subtitle": "Resources and assets to help you work with the OpenCode brand.",
|
||||
"brand.downloadAll": "Download all assets",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "OpenCode release notes and changelog",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "New updates and improvements to OpenCode",
|
||||
"changelog.empty": "No changelog entries found.",
|
||||
"changelog.viewJson": "View JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agent",
|
||||
"bench.list.table.model": "Model",
|
||||
"bench.list.table.score": "Score",
|
||||
"bench.submission.error.allFieldsRequired": "All fields are required.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Task not found",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "Agent",
|
||||
"bench.detail.labels.model": "Model",
|
||||
"bench.detail.labels.task": "Task",
|
||||
"bench.detail.labels.repo": "Repo",
|
||||
"bench.detail.labels.from": "From",
|
||||
"bench.detail.labels.to": "To",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Average Duration",
|
||||
"bench.detail.labels.averageScore": "Average Score",
|
||||
"bench.detail.labels.averageCost": "Average Cost",
|
||||
"bench.detail.labels.summary": "Summary",
|
||||
"bench.detail.labels.runs": "Runs",
|
||||
"bench.detail.labels.score": "Score",
|
||||
"bench.detail.labels.base": "Base",
|
||||
"bench.detail.labels.penalty": "Penalty",
|
||||
"bench.detail.labels.weight": "weight",
|
||||
"bench.detail.table.run": "Run",
|
||||
"bench.detail.table.score": "Score (Base - Penalty)",
|
||||
"bench.detail.table.cost": "Cost",
|
||||
"bench.detail.table.duration": "Duration",
|
||||
"bench.detail.run.title": "Run {{n}}",
|
||||
"bench.detail.rawJson": "Raw JSON",
|
||||
} as const
|
||||
|
||||
export type Key = keyof typeof dict
|
||||
export type Dict = Record<Key, string>
|
||||
790
qimingcode/packages/console/app/src/i18n/es.ts
Normal file
@@ -0,0 +1,790 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Documentación",
|
||||
"nav.changelog": "Registro de cambios",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Iniciar sesión",
|
||||
"nav.free": "Descargar",
|
||||
"nav.home": "Inicio",
|
||||
"nav.openMenu": "Abrir menú",
|
||||
"nav.getStartedFree": "Empezar gratis",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Copiar logo como SVG",
|
||||
"nav.context.copyWordmark": "Copiar marca como SVG",
|
||||
"nav.context.brandAssets": "Activos de marca",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Documentación",
|
||||
"footer.changelog": "Registro de cambios",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Marca",
|
||||
"legal.privacy": "Privacidad",
|
||||
"legal.terms": "Términos",
|
||||
|
||||
"email.title": "Sé el primero en enterarte cuando lancemos nuevos productos",
|
||||
"email.subtitle": "Únete a la lista de espera para acceso anticipado.",
|
||||
"email.placeholder": "Dirección de correo",
|
||||
"email.subscribe": "Suscribirse",
|
||||
"email.success": "Casi listo, revisa tu bandeja de entrada y confirma tu correo",
|
||||
|
||||
"notFound.title": "No encontrado | opencode",
|
||||
"notFound.heading": "404 - Página no encontrada",
|
||||
"notFound.home": "Inicio",
|
||||
"notFound.docs": "Documentación",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "opencode logo claro",
|
||||
"notFound.logoDarkAlt": "opencode logo oscuro",
|
||||
|
||||
"user.logout": "Cerrar sesión",
|
||||
|
||||
"auth.callback.error.codeMissing": "No se encontró código de autorización.",
|
||||
|
||||
"workspace.select": "Seleccionar espacio de trabajo",
|
||||
"workspace.createNew": "+ Crear nuevo espacio de trabajo",
|
||||
"workspace.modal.title": "Crear nuevo espacio de trabajo",
|
||||
"workspace.modal.placeholder": "Introduce nombre del espacio de trabajo",
|
||||
|
||||
"common.cancel": "Cancelar",
|
||||
"common.creating": "Creando...",
|
||||
"common.create": "Crear",
|
||||
|
||||
"common.videoUnsupported": "Tu navegador no soporta la etiqueta de video.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Más información",
|
||||
|
||||
"error.invalidPlan": "Plan inválido",
|
||||
"error.workspaceRequired": "Se requiere ID del espacio de trabajo",
|
||||
"error.alreadySubscribed": "Este espacio de trabajo ya tiene una suscripción",
|
||||
"error.limitRequired": "El límite es obligatorio.",
|
||||
"error.monthlyLimitInvalid": "Establece un límite mensual válido.",
|
||||
"error.workspaceNameRequired": "El nombre del espacio de trabajo es obligatorio.",
|
||||
"error.nameTooLong": "El nombre debe tener 255 caracteres o menos.",
|
||||
"error.emailRequired": "El correo es obligatorio",
|
||||
"error.roleRequired": "El rol es obligatorio",
|
||||
"error.idRequired": "El ID es obligatorio",
|
||||
"error.nameRequired": "El nombre es obligatorio",
|
||||
"error.providerRequired": "El proveedor es obligatorio",
|
||||
"error.apiKeyRequired": "La clave de API es obligatoria",
|
||||
"error.modelRequired": "El modelo es obligatorio",
|
||||
"error.reloadAmountMin": "La cantidad de recarga debe ser al menos ${{amount}}",
|
||||
"error.reloadTriggerMin": "El disparador de saldo debe ser al menos ${{amount}}",
|
||||
|
||||
"app.meta.description": "OpenCode - El agente de codificación de código abierto.",
|
||||
|
||||
"home.title": "OpenCode | El agente de codificación IA de código abierto",
|
||||
|
||||
"temp.title": "opencode | Agente de codificación IA creado para la terminal",
|
||||
"temp.hero.title": "El agente de codificación IA creado para la terminal",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "Empezar",
|
||||
"temp.feature.native.title": "TUI Nativa",
|
||||
"temp.feature.native.body": "Una interfaz de terminal responsiva, nativa y personalizable",
|
||||
"temp.feature.zen.beforeLink": "Una lista",
|
||||
"temp.feature.zen.link": "seleccionada de modelos",
|
||||
"temp.feature.zen.afterLink": "proporcionada por opencode",
|
||||
"temp.feature.models.beforeLink": "Soporta más de 75 proveedores de LLM a través de",
|
||||
"temp.feature.models.afterLink": ", incluyendo modelos locales",
|
||||
"temp.screenshot.caption": "opencode TUI con el tema tokyonight",
|
||||
"temp.screenshot.alt": "opencode TUI con tema tokyonight",
|
||||
"temp.logoLightAlt": "logo de opencode claro",
|
||||
"temp.logoDarkAlt": "logo de opencode oscuro",
|
||||
|
||||
"home.banner.badge": "Nuevo",
|
||||
"home.banner.text": "Aplicación de escritorio disponible en beta",
|
||||
"home.banner.platforms": "en macOS, Windows y Linux",
|
||||
"home.banner.downloadNow": "Descargar ahora",
|
||||
"home.banner.downloadBetaNow": "Descargar la beta de escritorio ahora",
|
||||
|
||||
"home.hero.title": "El agente de codificación IA de código abierto",
|
||||
"home.hero.subtitle.a": "Modelos gratuitos incluidos o conecta cualquier modelo de cualquier proveedor,",
|
||||
"home.hero.subtitle.b": "incluyendo Claude, GPT, Gemini y más.",
|
||||
|
||||
"home.install.ariaLabel": "Opciones de instalación",
|
||||
|
||||
"home.what.title": "¿Qué es OpenCode?",
|
||||
"home.what.body":
|
||||
"OpenCode es un agente de código abierto que te ayuda a escribir código en tu terminal, IDE o escritorio.",
|
||||
"home.what.lsp.title": "LSP habilitado",
|
||||
"home.what.lsp.body": "Carga automáticamente los LSPs correctos para el LLM",
|
||||
"home.what.multiSession.title": "Multi-sesión",
|
||||
"home.what.multiSession.body": "Inicia múltiples agentes en paralelo en el mismo proyecto",
|
||||
"home.what.shareLinks.title": "Compartir enlaces",
|
||||
"home.what.shareLinks.body": "Comparte un enlace a cualquier sesión para referencia o depuración",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Inicia sesión con GitHub para usar tu cuenta de Copilot",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Inicia sesión con OpenAI para usar tu cuenta de ChatGPT Plus o Pro",
|
||||
"home.what.anyModel.title": "Cualquier modelo",
|
||||
"home.what.anyModel.body": "Más de 75 proveedores de LLM a través de Models.dev, incluyendo modelos locales",
|
||||
"home.what.anyEditor.title": "Cualquier editor",
|
||||
"home.what.anyEditor.body": "Disponible como interfaz de terminal, aplicación de escritorio y extensión de IDE",
|
||||
"home.what.readDocs": "Leer documentación",
|
||||
|
||||
"home.growth.title": "El agente de codificación IA de código abierto",
|
||||
"home.growth.body":
|
||||
"Con más de <strong>{{stars}}</strong> estrellas en GitHub, <strong>{{contributors}}</strong> colaboradores y más de <strong>{{commits}}</strong> commits, OpenCode es usado y confiado por más de <strong>{{monthlyUsers}}</strong> desarrolladores cada mes.",
|
||||
"home.growth.githubStars": "Estrellas en GitHub",
|
||||
"home.growth.contributors": "Colaboradores",
|
||||
"home.growth.monthlyDevs": "Desarrolladores Mensuales",
|
||||
|
||||
"home.privacy.title": "Creado pensando en la privacidad",
|
||||
"home.privacy.body":
|
||||
"OpenCode no almacena tu código ni datos de contexto, para que pueda operar en entornos sensibles a la privacidad.",
|
||||
"home.privacy.learnMore": "Más información sobre",
|
||||
"home.privacy.link": "privacidad",
|
||||
|
||||
"home.faq.q1": "¿Qué es OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode es un agente de código abierto que te ayuda a escribir y ejecutar código con cualquier modelo de IA. Está disponible como interfaz de terminal, aplicación de escritorio o extensión de IDE.",
|
||||
"home.faq.q2": "¿Cómo uso OpenCode?",
|
||||
"home.faq.a2.before": "La forma más fácil de empezar es leer la",
|
||||
"home.faq.a2.link": "introducción",
|
||||
"home.faq.q3": "¿Necesito suscripciones extra de IA para usar OpenCode?",
|
||||
"home.faq.a3.p1":
|
||||
"No necesariamente, OpenCode viene con un conjunto de modelos gratuitos que puedes usar sin crear una cuenta.",
|
||||
"home.faq.a3.p2.beforeZen":
|
||||
"Aparte de estos, puedes usar cualquiera de los modelos de codificación populares creando una cuenta de",
|
||||
"home.faq.a3.p2.afterZen": ".",
|
||||
"home.faq.a3.p3":
|
||||
"Aunque animamos a los usuarios a usar Zen, OpenCode también funciona con todos los proveedores populares como OpenAI, Anthropic, xAI, etc.",
|
||||
"home.faq.a3.p4.beforeLocal": "Incluso puedes conectar tus",
|
||||
"home.faq.a3.p4.localLink": "modelos locales",
|
||||
"home.faq.q4": "¿Puedo usar mis suscripciones de IA existentes con OpenCode?",
|
||||
"home.faq.a4.p1":
|
||||
"Sí, OpenCode soporta planes de suscripción de los principales proveedores. Puedes usar tus suscripciones de Claude Pro/Max, ChatGPT Plus/Pro o GitHub Copilot.",
|
||||
"home.faq.q5": "¿Solo puedo usar OpenCode en la terminal?",
|
||||
"home.faq.a5.beforeDesktop": "¡Ya no! OpenCode ahora está disponible como una aplicación para tu",
|
||||
"home.faq.a5.desktop": "escritorio",
|
||||
"home.faq.a5.and": "y",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "¿Cuánto cuesta OpenCode?",
|
||||
"home.faq.a6":
|
||||
"OpenCode es 100% gratuito de usar. También viene con un conjunto de modelos gratuitos. Puede haber costos adicionales si conectas cualquier otro proveedor.",
|
||||
"home.faq.q7": "¿Qué hay sobre datos y privacidad?",
|
||||
"home.faq.a7.p1":
|
||||
"Tus datos e información solo se almacenan cuando usas nuestros modelos gratuitos o creas enlaces compartibles.",
|
||||
"home.faq.a7.p2.beforeModels": "Más información sobre",
|
||||
"home.faq.a7.p2.modelsLink": "nuestros modelos",
|
||||
"home.faq.a7.p2.and": "y",
|
||||
"home.faq.a7.p2.shareLink": "páginas compartidas",
|
||||
"home.faq.q8": "¿Es OpenCode de código abierto?",
|
||||
"home.faq.a8.p1": "Sí, OpenCode es totalmente de código abierto. El código fuente es público en",
|
||||
"home.faq.a8.p2": "bajo la",
|
||||
"home.faq.a8.mitLicense": "Licencia MIT",
|
||||
"home.faq.a8.p3":
|
||||
", lo que significa que cualquiera puede usar, modificar o contribuir a su desarrollo. Cualquiera de la comunidad puede abrir problemas, enviar solicitudes de extracción y extender la funcionalidad.",
|
||||
|
||||
"home.zenCta.title": "Accede a modelos optimizados y confiables para agentes de codificación",
|
||||
"home.zenCta.body":
|
||||
"Zen te da acceso a un conjunto seleccionado de modelos de IA que OpenCode ha probado y evaluado específicamente para agentes de codificación. No necesitas preocuparte por el rendimiento y la calidad inconsistentes entre proveedores, usa modelos validados que funcionan.",
|
||||
"home.zenCta.link": "Aprende sobre Zen",
|
||||
|
||||
"zen.title":
|
||||
"OpenCode Zen | Un conjunto seleccionado de modelos optimizados y confiables para agentes de codificación",
|
||||
"zen.hero.title": "Modelos optimizados y confiables para agentes de codificación",
|
||||
"zen.hero.body":
|
||||
"Zen te da acceso a un conjunto seleccionado de modelos de IA que OpenCode ha probado y evaluado específicamente para agentes de codificación. No necesitas preocuparte por el rendimiento y la calidad inconsistentes, usa modelos validados que funcionan.",
|
||||
|
||||
"zen.faq.q1": "¿Qué es OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen es un conjunto seleccionado de modelos de IA probados y evaluados para agentes de codificación, creado por el equipo detrás de OpenCode.",
|
||||
"zen.faq.q2": "¿Qué hace a Zen más preciso?",
|
||||
"zen.faq.a2":
|
||||
"Zen solo proporciona modelos que han sido específicamente probados y evaluados para agentes de codificación. No usarías un cuchillo de mantequilla para cortar carne, no uses modelos pobres para codificar.",
|
||||
"zen.faq.q3": "¿Es Zen más barato?",
|
||||
"zen.faq.a3":
|
||||
"Zen no tiene fines de lucro. Zen te transfiere los costos de los proveedores de modelos. Cuanto mayor sea el uso de Zen, más podrá OpenCode negociar mejores tarifas y transferírtelas.",
|
||||
"zen.faq.q4": "¿Cuánto cuesta Zen?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "cobra por solicitud",
|
||||
"zen.faq.a4.p1.afterPricing": "sin recargos, así que pagas exactamente lo que cobra el proveedor del modelo.",
|
||||
"zen.faq.a4.p2.beforeAccount": "Tu costo total depende del uso, y puedes establecer límites de gasto mensuales en tu",
|
||||
"zen.faq.a4.p2.accountLink": "cuenta",
|
||||
"zen.faq.a4.p3":
|
||||
"Para cubrir costos, OpenCode añade solo una pequeña tarifa de procesamiento de pagos de $1.23 por cada recarga de saldo de $20.",
|
||||
"zen.faq.q5": "¿Qué hay sobre datos y privacidad?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Todos los modelos Zen están alojados en EE. UU. Los proveedores siguen una política de cero retención y no usan tus datos para entrenamiento de modelos, con las",
|
||||
"zen.faq.a5.exceptionsLink": "siguientes excepciones",
|
||||
"zen.faq.q6": "¿Puedo establecer límites de gasto?",
|
||||
"zen.faq.a6": "Sí, puedes establecer límites de gasto mensuales en tu cuenta.",
|
||||
"zen.faq.q7": "¿Puedo cancelar?",
|
||||
"zen.faq.a7": "Sí, puedes deshabilitar la facturación en cualquier momento y usar tu saldo restante.",
|
||||
"zen.faq.q8": "¿Puedo usar Zen con otros agentes de codificación?",
|
||||
"zen.faq.a8":
|
||||
"Aunque Zen funciona genial con OpenCode, puedes usar Zen con cualquier agente. Sigue las instrucciones de configuración en tu agente de codificación preferido.",
|
||||
|
||||
"zen.cta.start": "Empieza con Zen",
|
||||
"zen.pricing.title": "Añade $20 de saldo prepago",
|
||||
"zen.pricing.fee": "(+$1.23 tarifa de procesamiento de tarjeta)",
|
||||
"zen.pricing.body": "Úsalo con cualquier agente. Establece límites de gasto mensual. Cancela en cualquier momento.",
|
||||
"zen.problem.title": "¿Qué problema está resolviendo Zen?",
|
||||
"zen.problem.body":
|
||||
"Hay muchos modelos disponibles, pero solo unos pocos funcionan bien con agentes de codificación. La mayoría de los proveedores los configuran de manera diferente con resultados variables.",
|
||||
"zen.problem.subtitle": "Estamos arreglando esto para todos, no solo para usuarios de OpenCode.",
|
||||
"zen.problem.item1": "Probando modelos seleccionados y consultando a sus equipos",
|
||||
"zen.problem.item2": "Trabajando con proveedores para asegurar que se entreguen correctamente",
|
||||
"zen.problem.item3": "Evaluando todas las combinaciones modelo-proveedor que recomendamos",
|
||||
"zen.how.title": "Cómo funciona Zen",
|
||||
"zen.how.body": "Aunque sugerimos usar Zen con OpenCode, puedes usar Zen con cualquier agente.",
|
||||
"zen.how.step1.title": "Regístrate y añade $20 de saldo",
|
||||
"zen.how.step1.beforeLink": "sigue las",
|
||||
"zen.how.step1.link": "instrucciones de configuración",
|
||||
"zen.how.step2.title": "Usa Zen con precios transparentes",
|
||||
"zen.how.step2.link": "paga por solicitud",
|
||||
"zen.how.step2.afterLink": "con cero recargos",
|
||||
"zen.how.step3.title": "Auto-recarga",
|
||||
"zen.how.step3.body": "cuando tu saldo alcance $5 añadiremos automáticamente $20",
|
||||
"zen.privacy.title": "Tu privacidad es importante para nosotros",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Todos los modelos Zen están alojados en EE. UU. Los proveedores siguen una política de cero retención y no usan tus datos para entrenamiento de modelos, con las",
|
||||
"zen.privacy.exceptionsLink": "siguientes excepciones",
|
||||
|
||||
"go.title": "OpenCode Go | Modelos de programación de bajo coste para todos",
|
||||
"go.meta.description":
|
||||
"Go comienza en $5 el primer mes, luego 10 $/mes, con generosos límites de solicitudes de 5 horas para GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro y DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Modelos de programación de bajo coste para todos",
|
||||
"go.hero.body":
|
||||
"Go lleva la programación agéntica a programadores de todo el mundo. Ofrece límites generosos y acceso fiable a los modelos de código abierto más capaces, para que puedas crear con agentes potentes sin preocuparte por el coste o la disponibilidad.",
|
||||
|
||||
"go.cta.start": "Suscribirse a Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Suscribirse a Go",
|
||||
"go.cta.price": "10 $/mes",
|
||||
"go.cta.promo": "$5 el primer mes",
|
||||
"go.pricing.body":
|
||||
"Úsalo con cualquier agente. $5 el primer mes, luego 10 $/mes. Recarga crédito si es necesario. Cancela en cualquier momento.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: límite de uso triplicado hasta el 27 de abril",
|
||||
"go.graph.free": "Gratis",
|
||||
"go.graph.freePill": "Big Pickle y modelos gratuitos",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Solicitudes por 5 horas",
|
||||
"go.graph.usageLimits": "Límites de uso",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Solicitudes por 5h: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "ha cambiado mi vida, es realmente una obviedad.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, and ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "A 4 de cada 5 personas en nuestro equipo les encanta usar",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "No puedo recomendar",
|
||||
"go.testimonials.adam.quoteAfter": "lo suficiente. En serio, es realmente bueno.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Con",
|
||||
"go.testimonials.david.quoteAfter":
|
||||
"sé que todos los modelos están probados y son perfectos para agentes de programación.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 times)",
|
||||
"go.testimonials.frank.quote": "Ojalá siguiera en Nvidia.",
|
||||
"go.problem.title": "¿Qué problema resuelve Go?",
|
||||
"go.problem.body":
|
||||
"Nos enfocamos en llevar la experiencia de OpenCode a tantas personas como sea posible. OpenCode Go es una suscripción de bajo coste: $5 el primer mes, luego 10 $/mes. Proporciona límites generosos y acceso fiable a los modelos de código abierto más capaces.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Precios de suscripción de bajo coste",
|
||||
"go.problem.item2": "Límites generosos y acceso fiable",
|
||||
"go.problem.item3": "Creado para tantos programadores como sea posible",
|
||||
"go.problem.item4":
|
||||
"Incluye GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro y DeepSeek V4 Flash",
|
||||
"go.how.title": "Cómo funciona Go",
|
||||
"go.how.body": "Go comienza en $5 el primer mes, luego 10 $/mes. Puedes usarlo con OpenCode o cualquier agente.",
|
||||
"go.how.step1.title": "Crear una cuenta",
|
||||
"go.how.step1.beforeLink": "sigue las",
|
||||
"go.how.step1.link": "instrucciones de configuración",
|
||||
"go.how.step2.title": "Suscribirse a Go",
|
||||
"go.how.step2.link": "$5 el primer mes",
|
||||
"go.how.step2.afterLink": "luego 10 $/mes con límites generosos",
|
||||
"go.how.step3.title": "Empezar a programar",
|
||||
"go.how.step3.body": "con acceso fiable a modelos de código abierto",
|
||||
"go.privacy.title": "Tu privacidad es importante para nosotros",
|
||||
"go.privacy.body":
|
||||
"El plan está diseñado principalmente para usuarios internacionales, con modelos alojados en EE. UU., UE y Singapur para un acceso global estable.",
|
||||
"go.privacy.contactAfter": "si tienes alguna pregunta.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Los modelos de Go están alojados en EE. UU. Los proveedores siguen una política de retención cero y no utilizan tus datos para el entrenamiento de modelos, con las",
|
||||
"go.privacy.exceptionsLink": "siguientes excepciones",
|
||||
"go.faq.q1": "¿Qué es OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go es una suscripción de bajo coste que te da acceso fiable a modelos de código abierto capaces para programación agéntica.",
|
||||
"go.faq.q2": "¿Qué modelos incluye Go?",
|
||||
"go.faq.a2": "Go incluye los modelos que se indican abajo, con límites generosos y acceso confiable.",
|
||||
"go.faq.q3": "¿Es Go lo mismo que Zen?",
|
||||
"go.faq.a3":
|
||||
"No. Zen es pago por uso, mientras que Go comienza en $5 el primer mes, luego 10 $/mes, con límites generosos y acceso fiable a los modelos de código abierto GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro y DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "¿Cuánto cuesta Go?",
|
||||
"go.faq.a4.p1.beforePricing": "Go cuesta",
|
||||
"go.faq.a4.p1.pricingLink": "$5 el primer mes",
|
||||
"go.faq.a4.p1.afterPricing": "luego 10 $/mes con límites generosos.",
|
||||
"go.faq.a4.p2.beforeAccount": "Puedes gestionar tu suscripción en tu",
|
||||
"go.faq.a4.p2.accountLink": "cuenta",
|
||||
"go.faq.a4.p3": "Cancela en cualquier momento.",
|
||||
"go.faq.q5": "¿Qué pasa con los datos y la privacidad?",
|
||||
"go.faq.a5.body":
|
||||
"El plan está diseñado principalmente para usuarios internacionales, con modelos alojados en EE. UU., UE y Singapur para un acceso global estable. Nuestros proveedores siguen una política de retención cero y no utilizan tus datos para el entrenamiento de modelos.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Los modelos de Go están alojados en EE. UU. Los proveedores siguen una política de retención cero y no utilizan tus datos para el entrenamiento de modelos, con las",
|
||||
"go.faq.a5.exceptionsLink": "siguientes excepciones",
|
||||
"go.faq.q6": "¿Puedo recargar crédito?",
|
||||
"go.faq.a6": "Si necesitas más uso, puedes recargar crédito en tu cuenta.",
|
||||
"go.faq.q7": "¿Puedo cancelar?",
|
||||
"go.faq.a7": "Sí, puedes cancelar en cualquier momento.",
|
||||
"go.faq.q8": "¿Puedo usar Go con otros agentes de programación?",
|
||||
"go.faq.a8":
|
||||
"Sí, puedes usar Go con cualquier agente. Sigue las instrucciones de configuración en tu agente de programación preferido.",
|
||||
|
||||
"go.faq.q9": "¿Cuál es la diferencia entre los modelos gratuitos y Go?",
|
||||
"go.faq.a9":
|
||||
"Los modelos gratuitos incluyen Big Pickle más modelos promocionales disponibles en el momento, con una cuota de 200 solicitudes/día. Go incluye GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro y DeepSeek V4 Flash con cuotas de solicitud más altas aplicadas a través de ventanas móviles (5 horas, semanal y mensual), aproximadamente equivalente a 12 $ por 5 horas, 30 $ por semana y 60 $ por mes (los recuentos reales de solicitudes varían según el modelo y el uso).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Límite de tasa excedido. Por favor, inténtalo de nuevo más tarde.",
|
||||
"zen.api.error.modelNotSupported": "Modelo {{model}} no soportado",
|
||||
"zen.api.error.modelFormatNotSupported": "Modelo {{model}} no soportado para el formato {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "Ningún proveedor disponible",
|
||||
"zen.api.error.providerNotSupported": "Proveedor {{provider}} no soportado",
|
||||
"zen.api.error.missingApiKey": "Falta la clave API.",
|
||||
"zen.api.error.invalidApiKey": "Clave API inválida.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Cuota de suscripción excedida. Reintenta en {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Cuota de suscripción excedida. Puedes continuar usando modelos gratuitos.",
|
||||
"zen.api.error.noPaymentMethod": "Sin método de pago. Añade un método de pago aquí: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Saldo insuficiente. Gestiona tu facturación aquí: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Tu espacio de trabajo ha alcanzado su límite de gasto mensual de ${{amount}}. Gestiona tus límites aquí: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Has alcanzado tu límite de gasto mensual de ${{amount}}. Gestiona tus límites aquí: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "El modelo está deshabilitado",
|
||||
"zen.api.error.trialEnded":
|
||||
"La promoción gratuita de {{model}} ha finalizado. Puedes seguir usando el modelo suscribiéndote a OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Accede a los mejores modelos de codificación del mundo",
|
||||
"black.meta.description": "Obtén acceso a Claude, GPT, Gemini y más con los planes de suscripción de OpenCode Black.",
|
||||
"black.hero.title": "Accede a los mejores modelos de codificación del mundo",
|
||||
"black.hero.subtitle": "Incluyendo Claude, GPT, Gemini y más",
|
||||
"black.title": "OpenCode Black | Precios",
|
||||
"black.paused": "La inscripción al plan Black está temporalmente pausada.",
|
||||
"black.plan.icon20": "Plan Black 20",
|
||||
"black.plan.icon100": "Plan Black 100",
|
||||
"black.plan.icon200": "Plan Black 200",
|
||||
"black.plan.multiplier100": "5x más uso que Black 20",
|
||||
"black.plan.multiplier200": "20x más uso que Black 20",
|
||||
"black.price.perMonth": "al mes",
|
||||
"black.price.perPersonBilledMonthly": "por persona facturado mensualmente",
|
||||
"black.terms.1": "Tu suscripción no comenzará inmediatamente",
|
||||
"black.terms.2": "Serás añadido a la lista de espera y activado pronto",
|
||||
"black.terms.3": "Tu tarjeta solo se cargará cuando tu suscripción se active",
|
||||
"black.terms.4": "Aplican límites de uso, el uso fuertemente automatizado puede alcanzar los límites antes",
|
||||
"black.terms.5": "Las suscripciones son para individuos, contacta a Enterprise para equipos",
|
||||
"black.terms.6": "Los límites pueden ajustarse y los planes pueden discontinuarse en el futuro",
|
||||
"black.terms.7": "Cancela tu suscripción en cualquier momento",
|
||||
"black.action.continue": "Continuar",
|
||||
"black.finePrint.beforeTerms": "Los precios mostrados no incluyen impuestos aplicables",
|
||||
"black.finePrint.terms": "Términos de Servicio",
|
||||
"black.workspace.title": "OpenCode Black | Seleccionar Espacio de Trabajo",
|
||||
"black.workspace.selectPlan": "Selecciona un espacio de trabajo para este plan",
|
||||
"black.workspace.name": "Espacio de trabajo {{n}}",
|
||||
"black.subscribe.title": "Suscribirse a OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Método de pago",
|
||||
"black.subscribe.loadingPaymentForm": "Cargando formulario de pago...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Selecciona un espacio de trabajo para continuar",
|
||||
"black.subscribe.failurePrefix": "¡Oh no!",
|
||||
"black.subscribe.error.generic": "Ocurrió un error",
|
||||
"black.subscribe.error.invalidPlan": "Plan inválido",
|
||||
"black.subscribe.error.workspaceRequired": "Se requiere ID del espacio de trabajo",
|
||||
"black.subscribe.error.alreadySubscribed": "Este espacio de trabajo ya tiene una suscripción",
|
||||
"black.subscribe.processing": "Procesando...",
|
||||
"black.subscribe.submit": "Suscribirse ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Solo se te cobrará cuando tu suscripción se active",
|
||||
"black.subscribe.success.title": "Estás en la lista de espera de OpenCode Black",
|
||||
"black.subscribe.success.subscriptionPlan": "Plan de suscripción",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Cantidad",
|
||||
"black.subscribe.success.amountValue": "${{plan}} al mes",
|
||||
"black.subscribe.success.paymentMethod": "Método de pago",
|
||||
"black.subscribe.success.dateJoined": "Fecha de unión",
|
||||
"black.subscribe.success.chargeNotice": "Tu tarjeta se cargará cuando tu suscripción se active",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Uso",
|
||||
"workspace.nav.apiKeys": "Claves API",
|
||||
"workspace.nav.members": "Miembros",
|
||||
"workspace.nav.billing": "Facturación",
|
||||
"workspace.nav.settings": "Configuración",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Modelos optimizados y confiables para agentes de codificación.",
|
||||
"workspace.lite.banner.beforeLink": "Modelos de codificación de bajo costo para todos.",
|
||||
"workspace.home.billing.loading": "Cargando...",
|
||||
"workspace.home.billing.enable": "Habilitar facturación",
|
||||
"workspace.home.billing.currentBalance": "Saldo actual",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Modelos Probados y Verificados",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Hemos evaluado y probado modelos específicamente para agentes de codificación para asegurar el mejor rendimiento.",
|
||||
"workspace.newUser.feature.quality.title": "Máxima Calidad",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Accede a modelos configurados para un rendimiento óptimo - sin degradaciones ni enrutamiento a proveedores más baratos.",
|
||||
"workspace.newUser.feature.lockin.title": "Sin Bloqueo",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Usa Zen con cualquier agente de codificación, y continúa usando otros proveedores con opencode cuando quieras.",
|
||||
"workspace.newUser.copyApiKey": "Copiar clave API",
|
||||
"workspace.newUser.copyKey": "Copiar Clave",
|
||||
"workspace.newUser.copied": "¡Copiada!",
|
||||
"workspace.newUser.step.enableBilling": "Habilitar facturación",
|
||||
"workspace.newUser.step.login.before": "Ejecuta",
|
||||
"workspace.newUser.step.login.after": "y selecciona opencode",
|
||||
"workspace.newUser.step.pasteKey": "Pega tu clave API",
|
||||
"workspace.newUser.step.models.before": "Inicia opencode y ejecuta",
|
||||
"workspace.newUser.step.models.after": "para seleccionar un modelo",
|
||||
|
||||
"workspace.models.title": "Modelos",
|
||||
"workspace.models.subtitle.beforeLink": "Gestiona qué modelos pueden acceder los miembros del espacio de trabajo.",
|
||||
"workspace.models.table.model": "Modelo",
|
||||
"workspace.models.table.enabled": "Habilitado",
|
||||
|
||||
"workspace.providers.title": "Trae Tu Propia Clave",
|
||||
"workspace.providers.subtitle": "Configura tus propias claves API de proveedores de IA.",
|
||||
"workspace.providers.placeholder": "Introduce clave API de {{provider}} ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Configurar",
|
||||
"workspace.providers.edit": "Editar",
|
||||
"workspace.providers.delete": "Eliminar",
|
||||
"workspace.providers.saving": "Guardando...",
|
||||
"workspace.providers.save": "Guardar",
|
||||
"workspace.providers.table.provider": "Proveedor",
|
||||
"workspace.providers.table.apiKey": "Clave API",
|
||||
|
||||
"workspace.usage.title": "Historial de Uso",
|
||||
"workspace.usage.subtitle": "Uso reciente de API y costos.",
|
||||
"workspace.usage.empty": "Haz tu primera llamada a la API para empezar.",
|
||||
"workspace.usage.table.date": "Fecha",
|
||||
"workspace.usage.table.model": "Modelo",
|
||||
"workspace.usage.table.input": "Entrada",
|
||||
"workspace.usage.table.output": "Salida",
|
||||
"workspace.usage.table.cost": "Costo",
|
||||
"workspace.usage.table.session": "Sesión",
|
||||
"workspace.usage.breakdown.input": "Entrada",
|
||||
"workspace.usage.breakdown.cacheRead": "Lectura de Caché",
|
||||
"workspace.usage.breakdown.cacheWrite": "Escritura de Caché",
|
||||
"workspace.usage.breakdown.output": "Salida",
|
||||
"workspace.usage.breakdown.reasoning": "Razonamiento",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Costo",
|
||||
"workspace.cost.subtitle": "Costos de uso desglosados por modelo.",
|
||||
"workspace.cost.allModels": "Todos los Modelos",
|
||||
"workspace.cost.allKeys": "Todas las Claves",
|
||||
"workspace.cost.deletedSuffix": "(eliminado)",
|
||||
"workspace.cost.empty": "No hay datos de uso disponibles para el periodo seleccionado.",
|
||||
"workspace.cost.subscriptionShort": "sub",
|
||||
|
||||
"workspace.keys.title": "Claves API",
|
||||
"workspace.keys.subtitle": "Gestiona tus claves API para acceder a los servicios de opencode.",
|
||||
"workspace.keys.create": "Crear Clave API",
|
||||
"workspace.keys.placeholder": "Introduce nombre de la clave",
|
||||
"workspace.keys.empty": "Crea una clave API de opencode Gateway",
|
||||
"workspace.keys.table.name": "Nombre",
|
||||
"workspace.keys.table.key": "Clave",
|
||||
"workspace.keys.table.createdBy": "Creado Por",
|
||||
"workspace.keys.table.lastUsed": "Último Uso",
|
||||
"workspace.keys.copyApiKey": "Copiar clave API",
|
||||
"workspace.keys.delete": "Eliminar",
|
||||
|
||||
"workspace.members.title": "Miembros",
|
||||
"workspace.members.subtitle": "Gestiona miembros del espacio de trabajo y sus permisos.",
|
||||
"workspace.members.invite": "Invitar Miembro",
|
||||
"workspace.members.inviting": "Invitando...",
|
||||
"workspace.members.beta.beforeLink": "Los espacios de trabajo son gratuitos para equipos durante la beta.",
|
||||
"workspace.members.form.invitee": "Invitado",
|
||||
"workspace.members.form.emailPlaceholder": "Introduce correo",
|
||||
"workspace.members.form.role": "Rol",
|
||||
"workspace.members.form.monthlyLimit": "Límite de gasto mensual",
|
||||
"workspace.members.noLimit": "Sin límite",
|
||||
"workspace.members.noLimitLowercase": "sin límite",
|
||||
"workspace.members.invited": "invitado",
|
||||
"workspace.members.edit": "Editar",
|
||||
"workspace.members.delete": "Eliminar",
|
||||
"workspace.members.saving": "Guardando...",
|
||||
"workspace.members.save": "Guardar",
|
||||
"workspace.members.table.email": "Correo",
|
||||
"workspace.members.table.role": "Rol",
|
||||
"workspace.members.table.monthLimit": "Límite mensual",
|
||||
"workspace.members.role.admin": "Administrador",
|
||||
"workspace.members.role.adminDescription": "Puede gestionar modelos, miembros y facturación",
|
||||
"workspace.members.role.member": "Miembro",
|
||||
"workspace.members.role.memberDescription": "Solo puede generar claves API para sí mismo",
|
||||
|
||||
"workspace.settings.title": "Configuración",
|
||||
"workspace.settings.subtitle": "Actualiza el nombre de tu espacio de trabajo y preferencias.",
|
||||
"workspace.settings.workspaceName": "Nombre del espacio de trabajo",
|
||||
"workspace.settings.defaultName": "Por defecto",
|
||||
"workspace.settings.updating": "Actualizando...",
|
||||
"workspace.settings.save": "Guardar",
|
||||
"workspace.settings.edit": "Editar",
|
||||
|
||||
"workspace.billing.title": "Facturación",
|
||||
"workspace.billing.subtitle.beforeLink": "Gestionar métodos de pago.",
|
||||
"workspace.billing.contactUs": "Contáctanos",
|
||||
"workspace.billing.subtitle.afterLink": "si tienes alguna pregunta.",
|
||||
"workspace.billing.currentBalance": "Saldo Actual",
|
||||
"workspace.billing.add": "Añadir $",
|
||||
"workspace.billing.enterAmount": "Introduce cantidad",
|
||||
"workspace.billing.loading": "Cargando...",
|
||||
"workspace.billing.addAction": "Añadir",
|
||||
"workspace.billing.addBalance": "Añadir Saldo",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Vinculado con Stripe",
|
||||
"workspace.billing.manage": "Gestionar",
|
||||
"workspace.billing.enable": "Habilitar Facturación",
|
||||
|
||||
"workspace.monthlyLimit.title": "Límite Mensual",
|
||||
"workspace.monthlyLimit.subtitle": "Establece un límite de uso mensual para tu cuenta.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Estableciendo...",
|
||||
"workspace.monthlyLimit.set": "Establecer",
|
||||
"workspace.monthlyLimit.edit": "Editar Límite",
|
||||
"workspace.monthlyLimit.noLimit": "Sin límite de uso establecido.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Uso actual para",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "es $",
|
||||
|
||||
"workspace.redeem.title": "Canjear cupón",
|
||||
"workspace.redeem.subtitle": "Canjea un código de cupón para obtener crédito o beneficios.",
|
||||
"workspace.redeem.placeholder": "Introduce el código del cupón",
|
||||
"workspace.redeem.redeem": "Canjear",
|
||||
"workspace.redeem.redeeming": "Canjeando...",
|
||||
"workspace.redeem.success": "Cupón canjeado correctamente.",
|
||||
|
||||
"workspace.reload.title": "Auto Recarga",
|
||||
"workspace.reload.disabled.before": "La auto recarga está",
|
||||
"workspace.reload.disabled.state": "deshabilitada",
|
||||
"workspace.reload.disabled.after": "Habilita para recargar automáticamente cuando el saldo sea bajo.",
|
||||
"workspace.reload.enabled.before": "La auto recarga está",
|
||||
"workspace.reload.enabled.state": "habilitada",
|
||||
"workspace.reload.enabled.middle": "Recargaremos",
|
||||
"workspace.reload.processingFee": "tarifa de procesamiento",
|
||||
"workspace.reload.enabled.after": "cuando el saldo alcance",
|
||||
"workspace.reload.edit": "Editar",
|
||||
"workspace.reload.enable": "Habilitar",
|
||||
"workspace.reload.enableAutoReload": "Habilitar Auto Recarga",
|
||||
"workspace.reload.reloadAmount": "Recargar $",
|
||||
"workspace.reload.whenBalanceReaches": "Cuando el saldo alcance $",
|
||||
"workspace.reload.saving": "Guardando...",
|
||||
"workspace.reload.save": "Guardar",
|
||||
"workspace.reload.failedAt": "La recarga falló en",
|
||||
"workspace.reload.reason": "Razón:",
|
||||
"workspace.reload.updatePaymentMethod": "Por favor actualiza tu método de pago e intenta de nuevo.",
|
||||
"workspace.reload.retrying": "Reintentando...",
|
||||
"workspace.reload.retry": "Reintentar",
|
||||
"workspace.reload.error.paymentFailed": "El pago falló.",
|
||||
|
||||
"workspace.payments.title": "Historial de Pagos",
|
||||
"workspace.payments.subtitle": "Transacciones de pago recientes.",
|
||||
"workspace.payments.table.date": "Fecha",
|
||||
"workspace.payments.table.paymentId": "ID de Pago",
|
||||
"workspace.payments.table.amount": "Cantidad",
|
||||
"workspace.payments.table.receipt": "Recibo",
|
||||
"workspace.payments.type.credit": "crédito",
|
||||
"workspace.payments.type.subscription": "suscripción",
|
||||
"workspace.payments.view": "Ver",
|
||||
|
||||
"workspace.black.loading": "Cargando...",
|
||||
"workspace.black.time.day": "día",
|
||||
"workspace.black.time.days": "días",
|
||||
"workspace.black.time.hour": "hora",
|
||||
"workspace.black.time.hours": "horas",
|
||||
"workspace.black.time.minute": "minuto",
|
||||
"workspace.black.time.minutes": "minutos",
|
||||
"workspace.black.time.fewSeconds": "unos pocos segundos",
|
||||
"workspace.black.subscription.title": "Suscripción",
|
||||
"workspace.black.subscription.message": "Estás suscrito a OpenCode Black por ${{plan}} al mes.",
|
||||
"workspace.black.subscription.manage": "Gestionar Suscripción",
|
||||
"workspace.black.subscription.rollingUsage": "Uso de 5 horas",
|
||||
"workspace.black.subscription.weeklyUsage": "Uso Semanal",
|
||||
"workspace.black.subscription.resetsIn": "Se reinicia en",
|
||||
"workspace.black.subscription.useBalance": "Usa tu saldo disponible después de alcanzar los límites de uso",
|
||||
"workspace.black.waitlist.title": "Lista de Espera",
|
||||
"workspace.black.waitlist.joined": "Estás en la lista de espera para el plan OpenCode Black de ${{plan}} al mes.",
|
||||
"workspace.black.waitlist.ready": "Estamos listos para inscribirte en el plan OpenCode Black de ${{plan}} al mes.",
|
||||
"workspace.black.waitlist.leave": "Abandonar Lista de Espera",
|
||||
"workspace.black.waitlist.leaving": "Abandonando...",
|
||||
"workspace.black.waitlist.left": "Abandonada",
|
||||
"workspace.black.waitlist.enroll": "Inscribirse",
|
||||
"workspace.black.waitlist.enrolling": "Inscribiéndose...",
|
||||
"workspace.black.waitlist.enrolled": "Inscrito",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Cuando haces clic en Inscribirse, tu suscripción comienza inmediatamente y se cargará a tu tarjeta.",
|
||||
|
||||
"workspace.lite.loading": "Cargando...",
|
||||
"workspace.lite.time.day": "día",
|
||||
"workspace.lite.time.days": "días",
|
||||
"workspace.lite.time.hour": "hora",
|
||||
"workspace.lite.time.hours": "horas",
|
||||
"workspace.lite.time.minute": "minuto",
|
||||
"workspace.lite.time.minutes": "minutos",
|
||||
"workspace.lite.time.fewSeconds": "unos pocos segundos",
|
||||
"workspace.lite.subscription.message": "Estás suscrito a OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Gestionar Suscripción",
|
||||
"workspace.lite.subscription.rollingUsage": "Uso Continuo",
|
||||
"workspace.lite.subscription.weeklyUsage": "Uso Semanal",
|
||||
"workspace.lite.subscription.monthlyUsage": "Uso Mensual",
|
||||
"workspace.lite.subscription.resetsIn": "Se reinicia en",
|
||||
"workspace.lite.subscription.useBalance": "Usa tu saldo disponible después de alcanzar los límites de uso",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Selecciona "OpenCode Go" como proveedor en tu configuración de opencode para usar los modelos Go.',
|
||||
"workspace.lite.black.message":
|
||||
"Actualmente estás suscrito a OpenCode Black o estás en la lista de espera. Por favor, cancela la suscripción primero si deseas cambiar a Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Otro miembro de este espacio de trabajo ya está suscrito a OpenCode Go. Solo un miembro por espacio de trabajo puede suscribirse.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go comienza en {{price}}, luego $10/mes, y ofrece acceso confiable a modelos de codificación abiertos populares con límites de uso generosos.",
|
||||
"workspace.lite.promo.price": "$5 el primer mes",
|
||||
"workspace.lite.promo.modelsTitle": "Qué incluye",
|
||||
"workspace.lite.promo.footer":
|
||||
"El plan está diseñado principalmente para usuarios internacionales, con modelos alojados en EE. UU., la UE y Singapur para un acceso global estable. Los precios y los límites de uso pueden cambiar a medida que aprendemos del uso inicial y los comentarios.",
|
||||
"workspace.lite.promo.subscribe": "Suscribirse a Go",
|
||||
"workspace.lite.promo.subscribing": "Redirigiendo...",
|
||||
"workspace.lite.promo.otherMethods": "Otros métodos de pago",
|
||||
"workspace.lite.promo.selectMethod": "Seleccionar método de pago",
|
||||
|
||||
"download.title": "OpenCode | Descargar",
|
||||
"download.meta.description": "Descarga OpenCode para macOS, Windows y Linux",
|
||||
"download.hero.title": "Descargar OpenCode",
|
||||
"download.hero.subtitle": "Disponible en Beta para macOS, Windows y Linux",
|
||||
"download.hero.button": "Descargar para {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "Extensiones OpenCode",
|
||||
"download.section.integrations": "Integraciones OpenCode",
|
||||
"download.action.download": "Descargar",
|
||||
"download.action.install": "Instalar",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"No necesariamente, pero probablemente. Necesitarás una suscripción de IA si quieres conectar OpenCode a un proveedor de pago, aunque puedes trabajar con",
|
||||
"download.faq.a3.localLink": "modelos locales",
|
||||
"download.faq.a3.afterLocal.beforeZen": "gratis. Aunque animamos a los usuarios a usar",
|
||||
"download.faq.a3.afterZen":
|
||||
", OpenCode funciona con todos los proveedores populares como OpenAI, Anthropic, xAI, etc.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode es 100% gratuito de usar.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Cualquier costo adicional vendrá de tu suscripción a un proveedor de modelos. Aunque OpenCode funciona con cualquier proveedor de modelos, recomendamos usar",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1": "Tus datos e información solo se almacenan cuando creas enlaces compartibles en OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "Más información sobre",
|
||||
"download.faq.a6.shareLink": "páginas compartidas",
|
||||
|
||||
"enterprise.title": "OpenCode | Soluciones empresariales para tu organización",
|
||||
"enterprise.meta.description": "Contacta a OpenCode para soluciones empresariales",
|
||||
"enterprise.hero.title": "Tu código es tuyo",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode opera de forma segura dentro de tu organización sin almacenar datos ni contexto, y sin restricciones de licencia ni reclamaciones de propiedad. Inicia una prueba con tu equipo, luego despliégalo en toda tu organización integrándolo con tu SSO y pasarela de IA interna.",
|
||||
"enterprise.hero.body2": "Déjanos saber cómo podemos ayudar.",
|
||||
"enterprise.form.name.label": "Nombre completo",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Rol",
|
||||
"enterprise.form.role.placeholder": "Presidente Ejecutivo",
|
||||
"enterprise.form.company.label": "Empresa",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "Correo de empresa",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Teléfono",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "¿Qué problema estás intentando resolver?",
|
||||
"enterprise.form.message.placeholder": "Necesitamos ayuda con...",
|
||||
"enterprise.form.send": "Enviar",
|
||||
"enterprise.form.sending": "Enviando...",
|
||||
"enterprise.form.success": "Mensaje enviado, estaremos en contacto pronto.",
|
||||
"enterprise.form.success.submitted": "Formulario enviado con éxito.",
|
||||
"enterprise.form.error.allFieldsRequired": "Todos los campos son obligatorios.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Formato de correo inválido.",
|
||||
"enterprise.form.error.internalServer": "Error interno del servidor.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "¿Qué es OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise es para organizaciones que quieren asegurar que su código y datos nunca salgan de su infraestructura. Puede hacer esto usando una configuración centralizada que se integra con tu SSO y pasarela de IA interna.",
|
||||
"enterprise.faq.q2": "¿Cómo empiezo con OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Simplemente empieza con una prueba interna con tu equipo. OpenCode por defecto no almacena tu código ni datos de contexto, haciendo fácil empezar. Luego contáctanos para discutir precios y opciones de implementación.",
|
||||
"enterprise.faq.q3": "¿Cómo funciona el precio para empresas?",
|
||||
"enterprise.faq.a3":
|
||||
"Ofrecemos precios empresariales por asiento. Si tienes tu propia pasarela de LLM, no cobramos por los tokens usados. Para más detalles, contáctanos para una cotización personalizada basada en las necesidades de tu organización.",
|
||||
"enterprise.faq.q4": "¿Están mis datos seguros con OpenCode Enterprise?",
|
||||
"enterprise.faq.a4":
|
||||
"Sí. OpenCode no almacena tu código ni datos de contexto. Todo el procesamiento ocurre localmente o a través de llamadas directas a la API de tu proveedor de IA. Con configuración central y integración SSO, tus datos permanecen seguros dentro de la infraestructura de tu organización.",
|
||||
|
||||
"brand.title": "OpenCode | Marca",
|
||||
"brand.meta.description": "Guías de marca de OpenCode",
|
||||
"brand.heading": "Guías de marca",
|
||||
"brand.subtitle": "Recursos y activos para ayudarte a trabajar con la marca OpenCode.",
|
||||
"brand.downloadAll": "Descargar todos los activos",
|
||||
|
||||
"changelog.title": "OpenCode | Registro de cambios",
|
||||
"changelog.meta.description": "Notas de versión y registro de cambios de OpenCode",
|
||||
"changelog.hero.title": "Registro de cambios",
|
||||
"changelog.hero.subtitle": "Nuevas actualizaciones y mejoras para OpenCode",
|
||||
"changelog.empty": "No se encontraron entradas en el registro de cambios.",
|
||||
"changelog.viewJson": "Ver JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agente",
|
||||
"bench.list.table.model": "Modelo",
|
||||
"bench.list.table.score": "Puntuación",
|
||||
"bench.submission.error.allFieldsRequired": "Todos los campos son obligatorios.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Tarea no encontrada",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "Agente",
|
||||
"bench.detail.labels.model": "Modelo",
|
||||
"bench.detail.labels.task": "Tarea",
|
||||
"bench.detail.labels.repo": "Repo",
|
||||
"bench.detail.labels.from": "De",
|
||||
"bench.detail.labels.to": "A",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Duración Promedio",
|
||||
"bench.detail.labels.averageScore": "Puntuación Promedio",
|
||||
"bench.detail.labels.averageCost": "Costo Promedio",
|
||||
"bench.detail.labels.summary": "Resumen",
|
||||
"bench.detail.labels.runs": "Ejecuciones",
|
||||
"bench.detail.labels.score": "Puntuación",
|
||||
"bench.detail.labels.base": "Base",
|
||||
"bench.detail.labels.penalty": "Penalización",
|
||||
"bench.detail.labels.weight": "peso",
|
||||
"bench.detail.table.run": "Ejecución",
|
||||
"bench.detail.table.score": "Puntuación (Base - Penalización)",
|
||||
"bench.detail.table.cost": "Costo",
|
||||
"bench.detail.table.duration": "Duración",
|
||||
"bench.detail.run.title": "Ejecución {{n}}",
|
||||
"bench.detail.rawJson": "JSON Crudo",
|
||||
} as const satisfies Dict
|
||||
797
qimingcode/packages/console/app/src/i18n/fr.ts
Normal file
@@ -0,0 +1,797 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"app.meta.description": "OpenCode - L'agent de code open source.",
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Documentation",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Entreprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Se connecter",
|
||||
"nav.free": "Télécharger",
|
||||
"nav.home": "Accueil",
|
||||
"nav.openMenu": "Ouvrir le menu",
|
||||
"nav.getStartedFree": "Commencer gratuitement",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Copier le logo en SVG",
|
||||
"nav.context.copyWordmark": "Copier le logotype en SVG",
|
||||
"nav.context.brandAssets": "Ressources de marque",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Documentation",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Marque",
|
||||
"legal.privacy": "Confidentialité",
|
||||
"legal.terms": "Conditions",
|
||||
|
||||
"email.title": "Soyez le premier à être informé de nos nouveaux produits",
|
||||
"email.subtitle": "Inscrivez-vous à la liste d'attente pour un accès anticipé.",
|
||||
"email.placeholder": "Adresse e-mail",
|
||||
"email.subscribe": "S'abonner",
|
||||
"email.success": "Presque terminé - vérifiez votre boîte de réception et confirmez votre adresse e-mail",
|
||||
|
||||
"notFound.title": "Introuvable | OpenCode",
|
||||
"notFound.heading": "404 - Page introuvable",
|
||||
"notFound.home": "Accueil",
|
||||
"notFound.docs": "Documentation",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "opencode logo light",
|
||||
"notFound.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"user.logout": "Se déconnecter",
|
||||
|
||||
"workspace.select": "Sélectionner un espace de travail",
|
||||
"workspace.createNew": "+ Créer un nouvel espace",
|
||||
"workspace.modal.title": "Créer un nouvel espace",
|
||||
"workspace.modal.placeholder": "Saisir le nom de l'espace",
|
||||
|
||||
"common.cancel": "Annuler",
|
||||
"common.creating": "Création...",
|
||||
"common.create": "Créer",
|
||||
|
||||
"common.videoUnsupported": "Votre navigateur ne prend pas en charge la balise vidéo.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "En savoir plus",
|
||||
|
||||
"error.invalidPlan": "Forfait invalide",
|
||||
"error.workspaceRequired": "L'ID de l'espace de travail est requis",
|
||||
"error.alreadySubscribed": "Cet espace de travail a déjà un abonnement",
|
||||
"error.limitRequired": "La limite est requise.",
|
||||
"error.monthlyLimitInvalid": "Définissez une limite mensuelle valide.",
|
||||
"error.workspaceNameRequired": "Le nom de l'espace de travail est requis.",
|
||||
"error.nameTooLong": "Le nom doit comporter 255 caractères ou moins.",
|
||||
"error.emailRequired": "L'e-mail est requis",
|
||||
"error.roleRequired": "Le rôle est requis",
|
||||
"error.idRequired": "L'ID est requis",
|
||||
"error.nameRequired": "Le nom est requis",
|
||||
"error.providerRequired": "Le fournisseur est requis",
|
||||
"error.apiKeyRequired": "La clé API est requise",
|
||||
"error.modelRequired": "Le modèle est requis",
|
||||
"error.reloadAmountMin": "Le montant de recharge doit être d'au moins {{amount}} $",
|
||||
"error.reloadTriggerMin": "Le seuil de déclenchement doit être d'au moins {{amount}} $",
|
||||
"auth.callback.error.codeMissing": "Aucun code d'autorisation trouvé.",
|
||||
|
||||
"home.title": "OpenCode | L'agent de code IA open source",
|
||||
|
||||
"temp.title": "OpenCode | Agent de code IA conçu pour le terminal",
|
||||
"temp.hero.title": "L'agent de code IA conçu pour le terminal",
|
||||
"temp.zen": "OpenCode Zen",
|
||||
"temp.getStarted": "Commencer",
|
||||
"temp.feature.native.title": "TUI Native",
|
||||
"temp.feature.native.body": "Une interface terminal native, réactive et thémable",
|
||||
"temp.feature.zen.beforeLink": "Une",
|
||||
"temp.feature.zen.link": "liste organisée de modèles",
|
||||
"temp.feature.zen.afterLink": "fournie par OpenCode",
|
||||
"temp.feature.models.beforeLink": "Prend en charge plus de 75 fournisseurs LLM via",
|
||||
"temp.feature.models.afterLink": ", y compris les modèles locaux",
|
||||
"temp.screenshot.caption": "OpenCode TUI avec le thème tokyonight",
|
||||
"temp.screenshot.alt": "OpenCode TUI avec le thème tokyonight",
|
||||
"temp.logoLightAlt": "opencode logo light",
|
||||
"temp.logoDarkAlt": "opencode logo dark",
|
||||
|
||||
"home.banner.badge": "Nouveau",
|
||||
"home.banner.text": "Application desktop disponible en bêta",
|
||||
"home.banner.platforms": "sur macOS, Windows et Linux",
|
||||
"home.banner.downloadNow": "Télécharger maintenant",
|
||||
"home.banner.downloadBetaNow": "Télécharger la bêta desktop maintenant",
|
||||
|
||||
"home.hero.title": "L'agent de code IA open source",
|
||||
"home.hero.subtitle.a":
|
||||
"Modèles gratuits inclus ou connectez n'importe quel modèle depuis n'importe quel fournisseur,",
|
||||
"home.hero.subtitle.b": "dont Claude, GPT, Gemini et plus.",
|
||||
|
||||
"home.install.ariaLabel": "Options d'installation",
|
||||
|
||||
"home.what.title": "Qu'est-ce que OpenCode ?",
|
||||
"home.what.body":
|
||||
"OpenCode est un agent open source qui vous aide à écrire du code dans votre terminal, IDE ou desktop.",
|
||||
"home.what.lsp.title": "LSP activé",
|
||||
"home.what.lsp.body": "Charge automatiquement les bons LSP pour le LLM",
|
||||
"home.what.multiSession.title": "Multi-session",
|
||||
"home.what.multiSession.body": "Lancez plusieurs agents en parallèle sur le même projet",
|
||||
"home.what.shareLinks.title": "Liens de partage",
|
||||
"home.what.shareLinks.body": "Partagez un lien vers n'importe quelle session pour référence ou debug",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Connectez-vous avec GitHub pour utiliser votre compte Copilot",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Connectez-vous avec OpenAI pour utiliser votre compte ChatGPT Plus ou Pro",
|
||||
"home.what.anyModel.title": "N'importe quel modèle",
|
||||
"home.what.anyModel.body": "75+ fournisseurs de LLM via Models.dev, y compris des modèles locaux",
|
||||
"home.what.anyEditor.title": "N'importe quel éditeur",
|
||||
"home.what.anyEditor.body": "Disponible en interface terminal, application desktop et extension IDE",
|
||||
"home.what.readDocs": "Lire la doc",
|
||||
|
||||
"home.growth.title": "L'agent de code IA open source",
|
||||
"home.growth.body":
|
||||
"Avec plus de <strong>{{stars}}</strong> étoiles sur GitHub, <strong>{{contributors}}</strong> contributeurs et plus de <strong>{{commits}}</strong> commits, OpenCode est utilisé et approuvé par plus de <strong>{{monthlyUsers}}</strong> développeurs chaque mois.",
|
||||
"home.growth.githubStars": "Étoiles GitHub",
|
||||
"home.growth.contributors": "Contributeurs",
|
||||
"home.growth.monthlyDevs": "Devs mensuels",
|
||||
|
||||
"home.privacy.title": "Conçu pour la confidentialité",
|
||||
"home.privacy.body":
|
||||
"OpenCode ne stocke ni votre code ni vos données de contexte, afin de pouvoir fonctionner dans des environnements sensibles à la confidentialité.",
|
||||
"home.privacy.learnMore": "En savoir plus sur",
|
||||
"home.privacy.link": "la confidentialité",
|
||||
|
||||
"home.faq.q1": "Qu'est-ce que OpenCode ?",
|
||||
"home.faq.a1":
|
||||
"OpenCode est un agent open source qui vous aide à écrire et exécuter du code avec n'importe quel modèle d'IA. Il est disponible en interface terminal, application desktop ou extension IDE.",
|
||||
"home.faq.q2": "Comment utiliser OpenCode ?",
|
||||
"home.faq.a2.before": "Le moyen le plus simple de commencer est de lire l'",
|
||||
"home.faq.a2.link": "intro",
|
||||
"home.faq.q3": "Ai-je besoin d'abonnements IA supplémentaires pour utiliser OpenCode ?",
|
||||
"home.faq.a3.p1":
|
||||
"Pas forcément : OpenCode propose des modèles gratuits que vous pouvez utiliser sans créer de compte.",
|
||||
"home.faq.a3.p2.beforeZen": "En plus, vous pouvez utiliser des modèles populaires pour le code en créant un compte",
|
||||
"home.faq.a3.p2.afterZen": ".",
|
||||
"home.faq.a3.p3":
|
||||
"Nous encourageons l'utilisation de Zen, mais OpenCode fonctionne aussi avec les fournisseurs populaires comme OpenAI, Anthropic, xAI, etc.",
|
||||
"home.faq.a3.p4.beforeLocal": "Vous pouvez même connecter vos",
|
||||
"home.faq.a3.p4.localLink": "modèles locaux",
|
||||
"home.faq.q4": "Puis-je utiliser mes abonnements IA existants avec OpenCode ?",
|
||||
"home.faq.a4.p1":
|
||||
"Oui, OpenCode prend en charge les abonnements des principaux fournisseurs. Vous pouvez utiliser Claude Pro/Max, ChatGPT Plus/Pro ou GitHub Copilot.",
|
||||
"home.faq.q5": "Puis-je utiliser OpenCode uniquement dans le terminal ?",
|
||||
"home.faq.a5.beforeDesktop": "Plus maintenant ! OpenCode est désormais disponible en application pour",
|
||||
"home.faq.a5.desktop": "desktop",
|
||||
"home.faq.a5.and": "et",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "Combien coûte OpenCode ?",
|
||||
"home.faq.a6":
|
||||
"OpenCode est 100% gratuit. Il inclut aussi des modèles gratuits. Des coûts supplémentaires peuvent s'appliquer si vous connectez un autre fournisseur.",
|
||||
"home.faq.q7": "Qu'en est-il des données et de la confidentialité ?",
|
||||
"home.faq.a7.p1":
|
||||
"Vos données ne sont stockées que lorsque vous utilisez nos modèles gratuits ou créez des liens partageables.",
|
||||
"home.faq.a7.p2.beforeModels": "En savoir plus sur",
|
||||
"home.faq.a7.p2.modelsLink": "nos modèles",
|
||||
"home.faq.a7.p2.and": "et",
|
||||
"home.faq.a7.p2.shareLink": "les pages de partage",
|
||||
"home.faq.q8": "OpenCode est-il open source ?",
|
||||
"home.faq.a8.p1": "Oui, OpenCode est entièrement open source. Le code source est public sur",
|
||||
"home.faq.a8.p2": "sous la",
|
||||
"home.faq.a8.mitLicense": "Licence MIT",
|
||||
"home.faq.a8.p3":
|
||||
", ce qui signifie que tout le monde peut l'utiliser, le modifier ou contribuer à son développement. Toute personne de la communauté peut ouvrir des tickets, soumettre des pull requests et étendre les fonctionnalités.",
|
||||
|
||||
"home.zenCta.title": "Accédez à des modèles fiables et optimisés pour les agents de code",
|
||||
"home.zenCta.body":
|
||||
"Zen vous donne accès à un ensemble sélectionné de modèles d'IA que OpenCode a testés et benchmarkés spécifiquement pour les agents de code. Plus besoin de vous soucier des variations de performance et de qualité selon les fournisseurs : utilisez des modèles validés qui fonctionnent.",
|
||||
"home.zenCta.link": "En savoir plus sur Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | Un ensemble sélectionné de modèles fiables et optimisés pour les agents de code",
|
||||
"zen.hero.title": "Modèles fiables et optimisés pour les agents de code",
|
||||
"zen.hero.body":
|
||||
"Zen vous donne accès à un ensemble sélectionné de modèles d'IA que OpenCode a testés et benchmarkés spécifiquement pour les agents de code. Plus besoin de vous soucier des variations de performance et de qualité selon les fournisseurs : utilisez des modèles validés qui fonctionnent.",
|
||||
|
||||
"zen.faq.q1": "Qu'est-ce que OpenCode Zen ?",
|
||||
"zen.faq.a1":
|
||||
"Zen est un ensemble sélectionné de modèles d'IA testés et benchmarkés pour les agents de code, créé par l'équipe derrière OpenCode.",
|
||||
"zen.faq.q2": "Qu'est-ce qui rend Zen plus précis ?",
|
||||
"zen.faq.a2":
|
||||
"Zen ne propose que des modèles testés et benchmarkés spécifiquement pour les agents de code. Vous n'utiliseriez pas un couteau à beurre pour couper un steak ; n'utilisez pas de mauvais modèles pour coder.",
|
||||
"zen.faq.q3": "Zen est-il moins cher ?",
|
||||
"zen.faq.a3":
|
||||
"Zen n'est pas à but lucratif. Zen vous facture au prix coûtant des fournisseurs de modèles. Plus Zen est utilisé, plus OpenCode peut négocier de meilleurs tarifs et vous les répercuter.",
|
||||
"zen.faq.q4": "Combien coûte Zen ?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "facture par requête",
|
||||
"zen.faq.a4.p1.afterPricing": "sans marge, vous payez donc exactement ce que facture le fournisseur du modèle.",
|
||||
"zen.faq.a4.p2.beforeAccount":
|
||||
"Votre coût total dépend de l'usage, et vous pouvez définir des limites de dépense mensuelles dans votre",
|
||||
"zen.faq.a4.p2.accountLink": "compte",
|
||||
"zen.faq.a4.p3":
|
||||
"Pour couvrir les coûts, OpenCode ajoute uniquement de petits frais de traitement de paiement de 1,23 $ par recharge de 20 $.",
|
||||
"zen.faq.q5": "Et pour les données et la confidentialité ?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Tous les modèles Zen sont hébergés aux États-Unis. Les fournisseurs appliquent une politique de rétention zéro et n'utilisent pas vos données pour l'entraînement des modèles, avec les",
|
||||
"zen.faq.a5.exceptionsLink": "exceptions suivantes",
|
||||
"zen.faq.q6": "Puis-je définir des limites de dépense ?",
|
||||
"zen.faq.a6": "Oui, vous pouvez définir des limites de dépense mensuelles dans votre compte.",
|
||||
"zen.faq.q7": "Puis-je annuler ?",
|
||||
"zen.faq.a7": "Oui, vous pouvez désactiver la facturation à tout moment et utiliser votre solde restant.",
|
||||
"zen.faq.q8": "Puis-je utiliser Zen avec d'autres agents de code ?",
|
||||
"zen.faq.a8":
|
||||
"Zen fonctionne très bien avec OpenCode, mais vous pouvez utiliser Zen avec n'importe quel agent. Suivez les instructions de configuration dans votre agent préféré.",
|
||||
|
||||
"zen.cta.start": "Commencez avec Zen",
|
||||
"zen.pricing.title": "Ajoutez 20 $ de solde Pay as you go",
|
||||
"zen.pricing.fee": "(+1,23 $ de frais de traitement de carte)",
|
||||
"zen.pricing.body":
|
||||
"Utilisez avec n'importe quel agent. Fixez des limites de dépenses mensuelles. Annulez à tout moment.",
|
||||
"zen.problem.title": "Quel problème Zen résout-il ?",
|
||||
"zen.problem.body":
|
||||
"Il existe de nombreux modèles disponibles, mais seuls quelques-uns fonctionnent bien avec les agents de code. La plupart des fournisseurs les configurent différemment avec des résultats variables.",
|
||||
"zen.problem.subtitle":
|
||||
"Nous résolvons ce problème pour tout le monde, pas seulement pour les utilisateurs de OpenCode.",
|
||||
"zen.problem.item1": "Test des modèles sélectionnés et consultation de leurs équipes",
|
||||
"zen.problem.item2": "Collaboration avec les fournisseurs pour garantir une livraison correcte",
|
||||
"zen.problem.item3": "Benchmark de toutes les combinaisons modèle-fournisseur que nous recommandons",
|
||||
"zen.how.title": "Comment fonctionne Zen",
|
||||
"zen.how.body":
|
||||
"Bien que nous vous suggérions d'utiliser Zen avec OpenCode, vous pouvez utiliser Zen avec n'importe quel agent.",
|
||||
"zen.how.step1.title": "Inscrivez-vous et ajoutez un solde de 20 $",
|
||||
"zen.how.step1.beforeLink": "suivez les",
|
||||
"zen.how.step1.link": "instructions de configuration",
|
||||
"zen.how.step2.title": "Utilisez Zen avec une tarification transparente",
|
||||
"zen.how.step2.link": "payez par requête",
|
||||
"zen.how.step2.afterLink": "sans marge",
|
||||
"zen.how.step3.title": "Recharge automatique",
|
||||
"zen.how.step3.body": "lorsque votre solde atteint 5 $, nous ajouterons automatiquement 20 $",
|
||||
"zen.privacy.title": "Votre vie privée est importante pour nous",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Tous les modèles Zen sont hébergés aux États-Unis. Les fournisseurs suivent une politique de rétention zéro et n'utilisent pas vos données pour l'entraînement des modèles, avec les",
|
||||
"zen.privacy.exceptionsLink": "exceptions suivantes",
|
||||
|
||||
"go.title": "OpenCode Go | Modèles de code à faible coût pour tous",
|
||||
"go.meta.description":
|
||||
"Go commence à $5 pour le premier mois, puis 10 $/mois, avec des limites de requêtes généreuses sur 5 heures pour GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro et DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Modèles de code à faible coût pour tous",
|
||||
"go.hero.body":
|
||||
"Go apporte le codage agentique aux programmeurs du monde entier. Offrant des limites généreuses et un accès fiable aux modèles open source les plus capables, pour que vous puissiez construire avec des agents puissants sans vous soucier du coût ou de la disponibilité.",
|
||||
|
||||
"go.cta.start": "S'abonner à Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "S'abonner à Go",
|
||||
"go.cta.price": "10 $/mois",
|
||||
"go.cta.promo": "$5 le premier mois",
|
||||
"go.pricing.body":
|
||||
"Utilisez-le avec n'importe quel agent. $5 le premier mois, puis 10 $/mois. Rechargez du crédit si nécessaire. Annulez à tout moment.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6 : limites d’utilisation triplées jusqu’au 27 avril",
|
||||
"go.graph.free": "Gratuit",
|
||||
"go.graph.freePill": "Big Pickle et modèles gratuits",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Requêtes par tranche de 5 heures",
|
||||
"go.graph.usageLimits": "Limites d'utilisation",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Requêtes par 5h : {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-PDG, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "a changé ma vie, c'est vraiment une évidence.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Fondateur, SEED, PM, Melt, Pop, Dapt, Cadmus, et ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 personnes sur 5 dans notre équipe adorent utiliser",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "Je ne peux pas recommander",
|
||||
"go.testimonials.adam.quoteAfter": "assez. Sérieusement, c'est vraiment bien.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Directeur du Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Avec",
|
||||
"go.testimonials.david.quoteAfter": "je sais que tous les modèles sont testés et parfaits pour les agents de code.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Stagiaire, Nvidia (4 fois)",
|
||||
"go.testimonials.frank.quote": "J'aimerais être encore chez Nvidia.",
|
||||
"go.problem.title": "Quel problème Go résout-il ?",
|
||||
"go.problem.body":
|
||||
"Nous nous efforçons d'apporter l'expérience OpenCode au plus grand nombre. OpenCode Go est un abonnement à faible coût : $5 pour le premier mois, puis 10 $/mois. Il offre des limites généreuses et un accès fiable aux modèles open source les plus performants.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Prix d'abonnement bas",
|
||||
"go.problem.item2": "Limites généreuses et accès fiable",
|
||||
"go.problem.item3": "Conçu pour autant de programmeurs que possible",
|
||||
"go.problem.item4":
|
||||
"Inclut GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro et DeepSeek V4 Flash",
|
||||
"go.how.title": "Comment fonctionne Go",
|
||||
"go.how.body":
|
||||
"Go commence à $5 pour le premier mois, puis 10 $/mois. Vous pouvez l'utiliser avec OpenCode ou n'importe quel agent.",
|
||||
"go.how.step1.title": "Créez un compte",
|
||||
"go.how.step1.beforeLink": "suivez les",
|
||||
"go.how.step1.link": "instructions de configuration",
|
||||
"go.how.step2.title": "Abonnez-vous à Go",
|
||||
"go.how.step2.link": "$5 le premier mois",
|
||||
"go.how.step2.afterLink": "puis 10 $/mois avec des limites généreuses",
|
||||
"go.how.step3.title": "Commencez à coder",
|
||||
"go.how.step3.body": "avec un accès fiable aux modèles open source",
|
||||
"go.privacy.title": "Votre vie privée est importante pour nous",
|
||||
"go.privacy.body":
|
||||
"Le plan est conçu principalement pour les utilisateurs internationaux, avec des modèles hébergés aux États-Unis, dans l'UE et à Singapour pour un accès mondial stable.",
|
||||
"go.privacy.contactAfter": "si vous avez des questions.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Les modèles Go sont hébergés aux États-Unis. Les fournisseurs suivent une politique de rétention zéro et n'utilisent pas vos données pour l'entraînement des modèles, avec les",
|
||||
"go.privacy.exceptionsLink": "exceptions suivantes",
|
||||
"go.faq.q1": "Qu'est-ce que OpenCode Go ?",
|
||||
"go.faq.a1":
|
||||
"Go est un abonnement à faible coût qui vous donne un accès fiable à des modèles open source performants pour le codage agentique.",
|
||||
"go.faq.q2": "Quels modèles Go inclut-il ?",
|
||||
"go.faq.a2": "Go inclut les modèles ci-dessous, avec des limites généreuses et un accès fiable.",
|
||||
"go.faq.q3": "Est-ce que Go est la même chose que Zen ?",
|
||||
"go.faq.a3":
|
||||
"Non. Zen est un paiement à l'utilisation, tandis que Go commence à $5 pour le premier mois, puis 10 $/mois, avec des limites généreuses et un accès fiable aux modèles open source GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro et DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "Combien coûte Go ?",
|
||||
"go.faq.a4.p1.beforePricing": "Go coûte",
|
||||
"go.faq.a4.p1.pricingLink": "$5 le premier mois",
|
||||
"go.faq.a4.p1.afterPricing": "puis 10 $/mois avec des limites généreuses.",
|
||||
"go.faq.a4.p2.beforeAccount": "Vous pouvez gérer votre abonnement dans votre",
|
||||
"go.faq.a4.p2.accountLink": "compte",
|
||||
"go.faq.a4.p3": "Annulez à tout moment.",
|
||||
"go.faq.q5": "Et pour les données et la confidentialité ?",
|
||||
"go.faq.a5.body":
|
||||
"Le plan est conçu principalement pour les utilisateurs internationaux, avec des modèles hébergés aux États-Unis, dans l'UE et à Singapour pour un accès mondial stable. Nos fournisseurs suivent une politique de rétention zéro et n'utilisent pas vos données pour l'entraînement des modèles.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Les modèles Go sont hébergés aux États-Unis. Les fournisseurs suivent une politique de rétention zéro et n'utilisent pas vos données pour l'entraînement des modèles, avec les",
|
||||
"go.faq.a5.exceptionsLink": "exceptions suivantes",
|
||||
"go.faq.q6": "Puis-je recharger mon crédit ?",
|
||||
"go.faq.a6": "Si vous avez besoin de plus d'utilisation, vous pouvez recharger du crédit dans votre compte.",
|
||||
"go.faq.q7": "Puis-je annuler ?",
|
||||
"go.faq.a7": "Oui, vous pouvez annuler à tout moment.",
|
||||
"go.faq.q8": "Puis-je utiliser Go avec d'autres agents de code ?",
|
||||
"go.faq.a8":
|
||||
"Oui, vous pouvez utiliser Go avec n'importe quel agent. Suivez les instructions de configuration dans votre agent de code préféré.",
|
||||
"go.faq.q9": "Quelle est la différence entre les modèles gratuits et Go ?",
|
||||
"go.faq.a9":
|
||||
"Les modèles gratuits incluent Big Pickle ainsi que des modèles promotionnels disponibles à ce moment-là, avec un quota de 200 requêtes/jour. Go inclut GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro et DeepSeek V4 Flash avec des quotas de requêtes plus élevés appliqués sur des fenêtres glissantes (5 heures, hebdomadaire et mensuelle), à peu près équivalent à 12 $ par 5 heures, 30 $ par semaine et 60 $ par mois (le nombre réel de requêtes varie selon le modèle et l'utilisation).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Limite de débit dépassée. Veuillez réessayer plus tard.",
|
||||
"zen.api.error.modelNotSupported": "Modèle {{model}} non pris en charge",
|
||||
"zen.api.error.modelFormatNotSupported": "Modèle {{model}} non pris en charge pour le format {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "Aucun fournisseur disponible",
|
||||
"zen.api.error.providerNotSupported": "Fournisseur {{provider}} non pris en charge",
|
||||
"zen.api.error.missingApiKey": "Clé API manquante.",
|
||||
"zen.api.error.invalidApiKey": "Clé API invalide.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Quota d'abonnement dépassé. Réessayez dans {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Quota d'abonnement dépassé. Vous pouvez continuer à utiliser les modèles gratuits.",
|
||||
"zen.api.error.noPaymentMethod": "Aucune méthode de paiement. Ajoutez une méthode de paiement ici : {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Solde insuffisant. Gérez votre facturation ici : {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"Votre espace de travail a atteint sa limite de dépense mensuelle de {{amount}} $. Gérez vos limites ici : {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Vous avez atteint votre limite de dépense mensuelle de {{amount}} $. Gérez vos limites ici : {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "Le modèle est désactivé",
|
||||
"zen.api.error.trialEnded":
|
||||
"La promotion gratuite de {{model}} est terminée. Vous pouvez continuer à utiliser le modèle en vous abonnant à OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Accédez aux meilleurs modèles de code au monde",
|
||||
"black.meta.description": "Accédez à Claude, GPT, Gemini et plus avec les forfaits d'abonnement OpenCode Black.",
|
||||
"black.hero.title": "Accédez aux meilleurs modèles de code au monde",
|
||||
"black.hero.subtitle": "Y compris Claude, GPT, Gemini et plus",
|
||||
"black.title": "OpenCode Black | Tarification",
|
||||
"black.paused": "L'inscription au plan Black est temporairement suspendue.",
|
||||
"black.plan.icon20": "Forfait Black 20",
|
||||
"black.plan.icon100": "Forfait Black 100",
|
||||
"black.plan.icon200": "Forfait Black 200",
|
||||
"black.plan.multiplier100": "5x plus d'utilisation que Black 20",
|
||||
"black.plan.multiplier200": "20x plus d'utilisation que Black 20",
|
||||
"black.price.perMonth": "par mois",
|
||||
"black.price.perPersonBilledMonthly": "par personne facturé mensuellement",
|
||||
"black.terms.1": "Votre abonnement ne commencera pas immédiatement",
|
||||
"black.terms.2": "Vous serez ajouté à la liste d'attente et activé bientôt",
|
||||
"black.terms.3": "Votre carte ne sera débitée que lorsque votre abonnement sera activé",
|
||||
"black.terms.4":
|
||||
"Des limites d'utilisation s'appliquent, une utilisation fortement automatisée peut atteindre les limites plus tôt",
|
||||
"black.terms.5": "Les abonnements sont pour les individus, contactez Enterprise pour les équipes",
|
||||
"black.terms.6": "Les limites peuvent être ajustées et les forfaits peuvent être interrompus à l'avenir",
|
||||
"black.terms.7": "Annulez votre abonnement à tout moment",
|
||||
"black.action.continue": "Continuer",
|
||||
"black.finePrint.beforeTerms": "Les prix affichés n'incluent pas les taxes applicables",
|
||||
"black.finePrint.terms": "Conditions d'utilisation",
|
||||
"black.workspace.title": "OpenCode Black | Sélectionner un espace de travail",
|
||||
"black.workspace.selectPlan": "Sélectionnez un espace de travail pour ce forfait",
|
||||
"black.workspace.name": "Espace de travail {{n}}",
|
||||
"black.subscribe.title": "S'abonner à OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Méthode de paiement",
|
||||
"black.subscribe.loadingPaymentForm": "Chargement du formulaire de paiement...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Sélectionnez un espace de travail pour continuer",
|
||||
"black.subscribe.failurePrefix": "Oh oh !",
|
||||
"black.subscribe.error.generic": "Une erreur est survenue",
|
||||
"black.subscribe.error.invalidPlan": "Forfait invalide",
|
||||
"black.subscribe.error.workspaceRequired": "L'ID de l'espace de travail est requis",
|
||||
"black.subscribe.error.alreadySubscribed": "Cet espace de travail a déjà un abonnement",
|
||||
"black.subscribe.processing": "Traitement...",
|
||||
"black.subscribe.submit": "S'abonner ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Vous ne serez débité que lorsque votre abonnement sera activé",
|
||||
"black.subscribe.success.title": "Vous êtes sur la liste d'attente OpenCode Black",
|
||||
"black.subscribe.success.subscriptionPlan": "Forfait d'abonnement",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Montant",
|
||||
"black.subscribe.success.amountValue": "{{plan}} $ par mois",
|
||||
"black.subscribe.success.paymentMethod": "Méthode de paiement",
|
||||
"black.subscribe.success.dateJoined": "Date d'inscription",
|
||||
"black.subscribe.success.chargeNotice": "Votre carte sera débitée lorsque votre abonnement sera activé",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Utilisation",
|
||||
"workspace.nav.apiKeys": "Clés API",
|
||||
"workspace.nav.members": "Membres",
|
||||
"workspace.nav.billing": "Facturation",
|
||||
"workspace.nav.settings": "Paramètres",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Modèles optimisés fiables pour les agents de code.",
|
||||
"workspace.lite.banner.beforeLink": "Modèles de code à faible coût pour tous.",
|
||||
"workspace.home.billing.loading": "Chargement...",
|
||||
"workspace.home.billing.enable": "Activer la facturation",
|
||||
"workspace.home.billing.currentBalance": "Solde actuel",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Modèles testés et vérifiés",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Nous avons benchmarké et testé des modèles spécifiquement pour les agents de code afin de garantir les meilleures performances.",
|
||||
"workspace.newUser.feature.quality.title": "La plus haute qualité",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Accédez à des modèles configurés pour des performances optimales - pas de rétrogradation ni de routage vers des fournisseurs moins chers.",
|
||||
"workspace.newUser.feature.lockin.title": "Pas de verrouillage",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Utilisez Zen avec n'importe quel agent de code et continuez à utiliser d'autres fournisseurs avec OpenCode quand vous le souhaitez.",
|
||||
"workspace.newUser.copyApiKey": "Copier la clé API",
|
||||
"workspace.newUser.copyKey": "Copier la clé",
|
||||
"workspace.newUser.copied": "Copié !",
|
||||
"workspace.newUser.step.enableBilling": "Activer la facturation",
|
||||
"workspace.newUser.step.login.before": "Exécuter",
|
||||
"workspace.newUser.step.login.after": "et sélectionnez OpenCode",
|
||||
"workspace.newUser.step.pasteKey": "Collez votre clé API",
|
||||
"workspace.newUser.step.models.before": "Démarrez OpenCode et exécutez",
|
||||
"workspace.newUser.step.models.after": "pour sélectionner un modèle",
|
||||
|
||||
"workspace.models.title": "Modèles",
|
||||
"workspace.models.subtitle.beforeLink":
|
||||
"Gérez les modèles auxquels les membres de l'espace de travail peuvent accéder.",
|
||||
"workspace.models.table.model": "Modèle",
|
||||
"workspace.models.table.enabled": "Activé",
|
||||
|
||||
"workspace.providers.title": "Apportez votre propre clé",
|
||||
"workspace.providers.subtitle": "Configurez vos propres clés API auprès des fournisseurs d'IA.",
|
||||
"workspace.providers.placeholder": "Entrez la clé API {{provider}} ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Configurer",
|
||||
"workspace.providers.edit": "Modifier",
|
||||
"workspace.providers.delete": "Supprimer",
|
||||
"workspace.providers.saving": "Enregistrement...",
|
||||
"workspace.providers.save": "Enregistrer",
|
||||
"workspace.providers.table.provider": "Fournisseur",
|
||||
"workspace.providers.table.apiKey": "Clé API",
|
||||
|
||||
"workspace.usage.title": "Historique d'utilisation",
|
||||
"workspace.usage.subtitle": "Utilisation récente de l'API et coûts.",
|
||||
"workspace.usage.empty": "Faites votre premier appel API pour commencer.",
|
||||
"workspace.usage.table.date": "Date",
|
||||
"workspace.usage.table.model": "Modèle",
|
||||
"workspace.usage.table.input": "Entrée",
|
||||
"workspace.usage.table.output": "Sortie",
|
||||
"workspace.usage.table.cost": "Coût",
|
||||
"workspace.usage.table.session": "Session",
|
||||
"workspace.usage.breakdown.input": "Entrée",
|
||||
"workspace.usage.breakdown.cacheRead": "Lecture cache",
|
||||
"workspace.usage.breakdown.cacheWrite": "Écriture cache",
|
||||
"workspace.usage.breakdown.output": "Sortie",
|
||||
"workspace.usage.breakdown.reasoning": "Raisonnement",
|
||||
"workspace.usage.subscription": "Black ({{amount}} $)",
|
||||
"workspace.usage.lite": "Go ({{amount}} $)",
|
||||
"workspace.usage.byok": "BYOK ({{amount}} $)",
|
||||
|
||||
"workspace.cost.title": "Coût",
|
||||
"workspace.cost.subtitle": "Coûts d'utilisation répartis par modèle.",
|
||||
"workspace.cost.allModels": "Tous les modèles",
|
||||
"workspace.cost.allKeys": "Toutes les clés",
|
||||
"workspace.cost.deletedSuffix": "(supprimé)",
|
||||
"workspace.cost.empty": "Aucune donnée d'utilisation disponible pour la période sélectionnée.",
|
||||
"workspace.cost.subscriptionShort": "abo",
|
||||
|
||||
"workspace.keys.title": "Clés API",
|
||||
"workspace.keys.subtitle": "Gérez vos clés API pour accéder aux services OpenCode.",
|
||||
"workspace.keys.create": "Créer une clé API",
|
||||
"workspace.keys.placeholder": "Entrez le nom de la clé",
|
||||
"workspace.keys.empty": "Créer une clé API OpenCode Gateway",
|
||||
"workspace.keys.table.name": "Nom",
|
||||
"workspace.keys.table.key": "Clé",
|
||||
"workspace.keys.table.createdBy": "Créé par",
|
||||
"workspace.keys.table.lastUsed": "Dernière utilisation",
|
||||
"workspace.keys.copyApiKey": "Copier la clé API",
|
||||
"workspace.keys.delete": "Supprimer",
|
||||
|
||||
"workspace.members.title": "Membres",
|
||||
"workspace.members.subtitle": "Gérez les membres de l'espace de travail et leurs autorisations.",
|
||||
"workspace.members.invite": "Inviter un membre",
|
||||
"workspace.members.inviting": "Invitation en cours...",
|
||||
"workspace.members.beta.beforeLink": "Les espaces de travail sont gratuits pour les équipes pendant la version bêta.",
|
||||
"workspace.members.form.invitee": "Invité",
|
||||
"workspace.members.form.emailPlaceholder": "Entrez l'e-mail",
|
||||
"workspace.members.form.role": "Rôle",
|
||||
"workspace.members.form.monthlyLimit": "Limite de dépense mensuelle",
|
||||
"workspace.members.noLimit": "Aucune limite",
|
||||
"workspace.members.noLimitLowercase": "pas de limite",
|
||||
"workspace.members.invited": "invité",
|
||||
"workspace.members.edit": "Modifier",
|
||||
"workspace.members.delete": "Supprimer",
|
||||
"workspace.members.saving": "Enregistrement...",
|
||||
"workspace.members.save": "Enregistrer",
|
||||
"workspace.members.table.email": "E-mail",
|
||||
"workspace.members.table.role": "Rôle",
|
||||
"workspace.members.table.monthLimit": "Limite mensuelle",
|
||||
"workspace.members.role.admin": "Administrateur",
|
||||
"workspace.members.role.adminDescription": "Peut gérer les modèles, les membres et la facturation",
|
||||
"workspace.members.role.member": "Membre",
|
||||
"workspace.members.role.memberDescription": "Ne peut générer que des clés API pour lui-même",
|
||||
|
||||
"workspace.settings.title": "Paramètres",
|
||||
"workspace.settings.subtitle": "Mettez à jour le nom et les préférences de votre espace de travail.",
|
||||
"workspace.settings.workspaceName": "Nom de l'espace de travail",
|
||||
"workspace.settings.defaultName": "Défaut",
|
||||
"workspace.settings.updating": "Mise à jour...",
|
||||
"workspace.settings.save": "Enregistrer",
|
||||
"workspace.settings.edit": "Modifier",
|
||||
|
||||
"workspace.billing.title": "Facturation",
|
||||
"workspace.billing.subtitle.beforeLink": "Gérer les méthodes de paiement.",
|
||||
"workspace.billing.contactUs": "Contactez-nous",
|
||||
"workspace.billing.subtitle.afterLink": "si vous avez des questions.",
|
||||
"workspace.billing.currentBalance": "Solde actuel",
|
||||
"workspace.billing.add": "Ajouter $",
|
||||
"workspace.billing.enterAmount": "Saisir le montant",
|
||||
"workspace.billing.loading": "Chargement...",
|
||||
"workspace.billing.addAction": "Ajouter",
|
||||
"workspace.billing.addBalance": "Ajouter un solde",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Lié à Stripe",
|
||||
"workspace.billing.manage": "Gérer",
|
||||
"workspace.billing.enable": "Activer la facturation",
|
||||
|
||||
"workspace.monthlyLimit.title": "Limite mensuelle",
|
||||
"workspace.monthlyLimit.subtitle": "Définissez une limite d'utilisation mensuelle pour votre compte.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Définition...",
|
||||
"workspace.monthlyLimit.set": "Défini",
|
||||
"workspace.monthlyLimit.edit": "Modifier la limite",
|
||||
"workspace.monthlyLimit.noLimit": "Aucune limite d'utilisation définie.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "L'utilisation actuelle pour",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "est de",
|
||||
|
||||
"workspace.redeem.title": "Utiliser un coupon",
|
||||
"workspace.redeem.subtitle": "Utilisez un code promo pour obtenir du crédit ou des avantages.",
|
||||
"workspace.redeem.placeholder": "Saisissez le code promo",
|
||||
"workspace.redeem.redeem": "Utiliser",
|
||||
"workspace.redeem.redeeming": "Utilisation...",
|
||||
"workspace.redeem.success": "Coupon utilisé avec succès.",
|
||||
|
||||
"workspace.reload.title": "Rechargement automatique",
|
||||
"workspace.reload.disabled.before": "Le rechargement automatique est",
|
||||
"workspace.reload.disabled.state": "désactivé",
|
||||
"workspace.reload.disabled.after": "Activer le rechargement automatique lorsque le solde est faible.",
|
||||
"workspace.reload.enabled.before": "Le rechargement automatique est",
|
||||
"workspace.reload.enabled.state": "activé",
|
||||
"workspace.reload.enabled.middle": "Nous rechargerons",
|
||||
"workspace.reload.processingFee": "frais de traitement",
|
||||
"workspace.reload.enabled.after": "quand le solde atteint",
|
||||
"workspace.reload.edit": "Modifier",
|
||||
"workspace.reload.enable": "Activer",
|
||||
"workspace.reload.enableAutoReload": "Activer le rechargement automatique",
|
||||
"workspace.reload.reloadAmount": "Recharger $",
|
||||
"workspace.reload.whenBalanceReaches": "Lorsque le solde atteint $",
|
||||
"workspace.reload.saving": "Enregistrement...",
|
||||
"workspace.reload.save": "Enregistrer",
|
||||
"workspace.reload.failedAt": "Le rechargement a échoué à",
|
||||
"workspace.reload.reason": "Raison :",
|
||||
"workspace.reload.updatePaymentMethod": "Veuillez mettre à jour votre méthode de paiement et réessayer.",
|
||||
"workspace.reload.retrying": "Nouvelle tentative...",
|
||||
"workspace.reload.retry": "Réessayer",
|
||||
"workspace.reload.error.paymentFailed": "Échec du paiement.",
|
||||
|
||||
"workspace.payments.title": "Historique des paiements",
|
||||
"workspace.payments.subtitle": "Transactions de paiement récentes.",
|
||||
"workspace.payments.table.date": "Date",
|
||||
"workspace.payments.table.paymentId": "ID de paiement",
|
||||
"workspace.payments.table.amount": "Montant",
|
||||
"workspace.payments.table.receipt": "Reçu",
|
||||
"workspace.payments.type.credit": "crédit",
|
||||
"workspace.payments.type.subscription": "abonnement",
|
||||
"workspace.payments.view": "Voir",
|
||||
|
||||
"workspace.black.loading": "Chargement...",
|
||||
"workspace.black.time.day": "jour",
|
||||
"workspace.black.time.days": "jours",
|
||||
"workspace.black.time.hour": "heure",
|
||||
"workspace.black.time.hours": "heures",
|
||||
"workspace.black.time.minute": "minute",
|
||||
"workspace.black.time.minutes": "minutes",
|
||||
"workspace.black.time.fewSeconds": "quelques secondes",
|
||||
"workspace.black.subscription.title": "Abonnement",
|
||||
"workspace.black.subscription.message": "Vous êtes abonné à OpenCode Black pour {{plan}} $ par mois.",
|
||||
"workspace.black.subscription.manage": "Gérer l'abonnement",
|
||||
"workspace.black.subscription.rollingUsage": "Utilisation 5 heures",
|
||||
"workspace.black.subscription.weeklyUsage": "Utilisation hebdomadaire",
|
||||
"workspace.black.subscription.resetsIn": "Réinitialisation dans",
|
||||
"workspace.black.subscription.useBalance":
|
||||
"Utilisez votre solde disponible après avoir atteint les limites d'utilisation",
|
||||
"workspace.black.waitlist.title": "Liste d'attente",
|
||||
"workspace.black.waitlist.joined":
|
||||
"Vous êtes sur la liste d'attente pour le forfait OpenCode Black à {{plan}} $ par mois.",
|
||||
"workspace.black.waitlist.ready":
|
||||
"Nous sommes prêts à vous inscrire au forfait OpenCode Black à {{plan}} $ par mois.",
|
||||
"workspace.black.waitlist.leave": "Quitter la liste d'attente",
|
||||
"workspace.black.waitlist.leaving": "Sortie...",
|
||||
"workspace.black.waitlist.left": "Quitté",
|
||||
"workspace.black.waitlist.enroll": "S'inscrire",
|
||||
"workspace.black.waitlist.enrolling": "Inscription...",
|
||||
"workspace.black.waitlist.enrolled": "Inscrit",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Lorsque vous cliquez sur S'inscrire, votre abonnement démarre immédiatement et votre carte sera débitée.",
|
||||
|
||||
"workspace.lite.loading": "Chargement...",
|
||||
"workspace.lite.time.day": "jour",
|
||||
"workspace.lite.time.days": "jours",
|
||||
"workspace.lite.time.hour": "heure",
|
||||
"workspace.lite.time.hours": "heures",
|
||||
"workspace.lite.time.minute": "minute",
|
||||
"workspace.lite.time.minutes": "minutes",
|
||||
"workspace.lite.time.fewSeconds": "quelques secondes",
|
||||
"workspace.lite.subscription.message": "Vous êtes abonné à OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Gérer l'abonnement",
|
||||
"workspace.lite.subscription.rollingUsage": "Utilisation glissante",
|
||||
"workspace.lite.subscription.weeklyUsage": "Utilisation hebdomadaire",
|
||||
"workspace.lite.subscription.monthlyUsage": "Utilisation mensuelle",
|
||||
"workspace.lite.subscription.resetsIn": "Réinitialisation dans",
|
||||
"workspace.lite.subscription.useBalance":
|
||||
"Utilisez votre solde disponible après avoir atteint les limites d'utilisation",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Sélectionnez "OpenCode Go" comme fournisseur dans votre configuration opencode pour utiliser les modèles Go.',
|
||||
"workspace.lite.black.message":
|
||||
"Vous êtes actuellement abonné à OpenCode Black ou sur liste d'attente. Veuillez d'abord vous désabonner si vous souhaitez passer à Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Un autre membre de cet espace de travail est déjà abonné à OpenCode Go. Un seul membre par espace de travail peut s'abonner.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go commence à {{price}}, puis 10 $/mois, et offre un accès fiable aux modèles de code ouverts populaires avec des limites d'utilisation généreuses.",
|
||||
"workspace.lite.promo.price": "$5 le premier mois",
|
||||
"workspace.lite.promo.modelsTitle": "Ce qui est inclus",
|
||||
"workspace.lite.promo.footer":
|
||||
"Le plan est conçu principalement pour les utilisateurs internationaux, avec des modèles hébergés aux États-Unis, dans l'UE et à Singapour pour un accès mondial stable. Les tarifs et les limites d'utilisation peuvent changer à mesure que nous apprenons des premières utilisations et des commentaires.",
|
||||
"workspace.lite.promo.subscribe": "S'abonner à Go",
|
||||
"workspace.lite.promo.subscribing": "Redirection...",
|
||||
"workspace.lite.promo.otherMethods": "Autres méthodes de paiement",
|
||||
"workspace.lite.promo.selectMethod": "Sélectionner la méthode de paiement",
|
||||
|
||||
"download.title": "OpenCode | Téléchargement",
|
||||
"download.meta.description": "Téléchargez OpenCode pour macOS, Windows et Linux",
|
||||
"download.hero.title": "Télécharger OpenCode",
|
||||
"download.hero.subtitle": "Disponible en bêta pour macOS, Windows et Linux",
|
||||
"download.hero.button": "Télécharger pour {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Bêta)",
|
||||
"download.section.extensions": "Extensions OpenCode",
|
||||
"download.section.integrations": "Intégrations OpenCode",
|
||||
"download.action.download": "Télécharger",
|
||||
"download.action.install": "Installer",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Pas forcément, mais probablement. Vous aurez besoin d'un abonnement IA si vous voulez connecter OpenCode à un fournisseur payant, mais vous pouvez travailler avec des",
|
||||
"download.faq.a3.localLink": "modèles locaux",
|
||||
"download.faq.a3.afterLocal.beforeZen": "gratuitement. Même si nous encourageons les utilisateurs à utiliser",
|
||||
"download.faq.a3.afterZen":
|
||||
", OpenCode fonctionne avec tous les fournisseurs populaires comme OpenAI, Anthropic, xAI, etc.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode est 100% gratuit à utiliser.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Les coûts supplémentaires viendront de votre abonnement à un fournisseur de modèle. Même si OpenCode fonctionne avec n'importe quel fournisseur, nous recommandons d'utiliser",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1":
|
||||
"Vos données et informations ne sont stockées que lorsque vous créez des liens partageables dans OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "En savoir plus sur",
|
||||
"download.faq.a6.shareLink": "les pages de partage",
|
||||
|
||||
"enterprise.title": "OpenCode | Solutions entreprise pour votre organisation",
|
||||
"enterprise.meta.description": "Contactez OpenCode pour des solutions entreprise",
|
||||
"enterprise.hero.title": "Votre code vous appartient",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode fonctionne de manière sécurisée au sein de votre organisation, sans stocker de données ni de contexte, et sans restrictions de licence ni revendications de propriété. Démarrez un essai avec votre équipe, puis déployez-le dans votre organisation en l'intégrant à votre SSO et à votre passerelle IA interne.",
|
||||
"enterprise.hero.body2": "Dites-nous comment nous pouvons vous aider.",
|
||||
"enterprise.form.name.label": "Nom complet",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Poste",
|
||||
"enterprise.form.role.placeholder": "Président exécutif",
|
||||
"enterprise.form.company.label": "Entreprise",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "E-mail professionnel",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Téléphone",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "Quel problème essayez-vous de résoudre ?",
|
||||
"enterprise.form.message.placeholder": "Nous avons besoin d'aide pour...",
|
||||
"enterprise.form.send": "Envoyer",
|
||||
"enterprise.form.sending": "Envoi...",
|
||||
"enterprise.form.success": "Message envoyé, nous vous contacterons bientôt.",
|
||||
"enterprise.form.success.submitted": "Formulaire soumis avec succès.",
|
||||
"enterprise.form.error.allFieldsRequired": "Tous les champs sont requis.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Format d'e-mail invalide.",
|
||||
"enterprise.form.error.internalServer": "Erreur interne du serveur.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "Qu'est-ce que OpenCode Enterprise ?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise s'adresse aux organisations qui veulent s'assurer que leur code et leurs données ne quittent jamais leur infrastructure. Cela est possible grâce à une configuration centralisée qui s'intègre à votre SSO et à votre passerelle IA interne.",
|
||||
"enterprise.faq.q2": "Comment démarrer avec OpenCode Enterprise ?",
|
||||
"enterprise.faq.a2":
|
||||
"Commencez simplement par un essai interne avec votre équipe. Par défaut, OpenCode ne stocke pas votre code ni vos données de contexte, ce qui facilite la prise en main. Ensuite, contactez-nous pour discuter des tarifs et des options de mise en œuvre.",
|
||||
"enterprise.faq.q3": "Comment fonctionne la tarification entreprise ?",
|
||||
"enterprise.faq.a3":
|
||||
"Nous proposons une tarification entreprise par siège. Si vous avez votre propre passerelle LLM, nous ne facturons pas les tokens utilisés. Pour plus de détails, contactez-nous pour un devis sur mesure en fonction des besoins de votre organisation.",
|
||||
"enterprise.faq.q4": "Mes données sont-elles sécurisées avec OpenCode Enterprise ?",
|
||||
"enterprise.faq.a4":
|
||||
"Oui. OpenCode ne stocke pas votre code ni vos données de contexte. Tout le traitement se fait localement ou via des appels API directs vers votre fournisseur d'IA. Avec une configuration centralisée et une intégration SSO, vos données restent sécurisées au sein de l'infrastructure de votre organisation.",
|
||||
|
||||
"brand.title": "OpenCode | Marque",
|
||||
"brand.meta.description": "Guide de marque OpenCode",
|
||||
"brand.heading": "Guide de marque",
|
||||
"brand.subtitle": "Ressources et éléments pour vous aider à travailler avec la marque OpenCode.",
|
||||
"brand.downloadAll": "Télécharger tous les assets",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "Notes de version et changelog d'OpenCode",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "Nouvelles mises à jour et améliorations pour OpenCode",
|
||||
"changelog.empty": "Aucune entrée de changelog trouvée.",
|
||||
"changelog.viewJson": "Voir le JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmarks",
|
||||
"bench.list.table.agent": "Agent",
|
||||
"bench.list.table.model": "Modèle",
|
||||
"bench.list.table.score": "Score",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Tâche introuvable",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "Agent",
|
||||
"bench.detail.labels.model": "Modèle",
|
||||
"bench.detail.labels.task": "Tâche",
|
||||
"bench.detail.labels.repo": "Dépôt",
|
||||
"bench.detail.labels.from": "De",
|
||||
"bench.detail.labels.to": "À",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Durée moyenne",
|
||||
"bench.detail.labels.averageScore": "Score moyen",
|
||||
"bench.detail.labels.averageCost": "Coût moyen",
|
||||
"bench.detail.labels.summary": "Résumé",
|
||||
"bench.detail.labels.runs": "Exécutions",
|
||||
"bench.detail.labels.score": "Score",
|
||||
"bench.detail.labels.base": "Base",
|
||||
"bench.detail.labels.penalty": "Pénalité",
|
||||
"bench.detail.labels.weight": "poids",
|
||||
"bench.detail.table.run": "Exécution",
|
||||
"bench.detail.table.score": "Score (Base - Pénalité)",
|
||||
"bench.detail.table.cost": "Coût",
|
||||
"bench.detail.table.duration": "Durée",
|
||||
"bench.detail.run.title": "Exécution {{n}}",
|
||||
"bench.detail.rawJson": "JSON brut",
|
||||
"bench.submission.error.allFieldsRequired": "Tous les champs sont requis.",
|
||||
} satisfies Dict
|
||||
43
qimingcode/packages/console/app/src/i18n/index.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import type { Locale } from "~/lib/language"
|
||||
import { dict as en } from "~/i18n/en"
|
||||
import { dict as zh } from "~/i18n/zh"
|
||||
import { dict as zht } from "~/i18n/zht"
|
||||
import { dict as ko } from "~/i18n/ko"
|
||||
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 da } from "~/i18n/da"
|
||||
import { dict as ja } from "~/i18n/ja"
|
||||
import { dict as pl } from "~/i18n/pl"
|
||||
import { dict as ru } from "~/i18n/ru"
|
||||
import { dict as ar } from "~/i18n/ar"
|
||||
import { dict as no } from "~/i18n/no"
|
||||
import { dict as br } from "~/i18n/br"
|
||||
import { dict as th } from "~/i18n/th"
|
||||
import { dict as tr } from "~/i18n/tr"
|
||||
|
||||
export type Key = keyof typeof en
|
||||
export type Dict = Record<Key, string>
|
||||
|
||||
const base = en satisfies Dict
|
||||
|
||||
export function i18n(locale: Locale): Dict {
|
||||
if (locale === "en") return base
|
||||
if (locale === "zh") return { ...base, ...zh }
|
||||
if (locale === "zht") return { ...base, ...zht }
|
||||
if (locale === "ko") return { ...base, ...ko }
|
||||
if (locale === "de") return { ...base, ...de }
|
||||
if (locale === "es") return { ...base, ...es }
|
||||
if (locale === "fr") return { ...base, ...fr }
|
||||
if (locale === "it") return { ...base, ...it }
|
||||
if (locale === "da") return { ...base, ...da }
|
||||
if (locale === "ja") return { ...base, ...ja }
|
||||
if (locale === "pl") return { ...base, ...pl }
|
||||
if (locale === "ru") return { ...base, ...ru }
|
||||
if (locale === "ar") return { ...base, ...ar }
|
||||
if (locale === "no") return { ...base, ...no }
|
||||
if (locale === "br") return { ...base, ...br }
|
||||
if (locale === "th") return { ...base, ...th }
|
||||
return { ...base, ...tr }
|
||||
}
|
||||
787
qimingcode/packages/console/app/src/i18n/it.ts
Normal file
@@ -0,0 +1,787 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "Documentazione",
|
||||
"nav.changelog": "Changelog",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "Enterprise",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "Accedi",
|
||||
"nav.free": "Scarica",
|
||||
"nav.home": "Home",
|
||||
"nav.openMenu": "Apri menu",
|
||||
"nav.getStartedFree": "Inizia gratis",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "Copia il logo come SVG",
|
||||
"nav.context.copyWordmark": "Copia il wordmark come SVG",
|
||||
"nav.context.brandAssets": "Asset del brand",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "Documentazione",
|
||||
"footer.changelog": "Changelog",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "Brand",
|
||||
"legal.privacy": "Privacy",
|
||||
"legal.terms": "Termini",
|
||||
|
||||
"email.title": "Sii il primo a sapere quando rilasciamo nuovi prodotti",
|
||||
"email.subtitle": "Iscriviti alla waitlist per l'accesso anticipato.",
|
||||
"email.placeholder": "Indirizzo email",
|
||||
"email.subscribe": "Iscriviti",
|
||||
"email.success": "Quasi fatto, controlla la posta in arrivo e conferma il tuo indirizzo email",
|
||||
|
||||
"notFound.title": "Non trovato | opencode",
|
||||
"notFound.heading": "404 - Pagina non trovata",
|
||||
"notFound.home": "Home",
|
||||
"notFound.docs": "Documentazione",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "logo chiaro di opencode",
|
||||
"notFound.logoDarkAlt": "logo scuro di opencode",
|
||||
|
||||
"user.logout": "Esci",
|
||||
|
||||
"auth.callback.error.codeMissing": "Nessun codice di autorizzazione trovato.",
|
||||
|
||||
"workspace.select": "Seleziona workspace",
|
||||
"workspace.createNew": "+ Crea nuovo workspace",
|
||||
"workspace.modal.title": "Crea nuovo workspace",
|
||||
"workspace.modal.placeholder": "Inserisci il nome del workspace",
|
||||
|
||||
"common.cancel": "Annulla",
|
||||
"common.creating": "Creazione...",
|
||||
"common.create": "Crea",
|
||||
|
||||
"common.videoUnsupported": "Il tuo browser non supporta il tag video.",
|
||||
"common.figure": "Fig {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "Scopri di più",
|
||||
|
||||
"error.invalidPlan": "Piano non valido",
|
||||
"error.workspaceRequired": "ID Workspace richiesto",
|
||||
"error.alreadySubscribed": "Questo workspace ha già un abbonamento",
|
||||
"error.limitRequired": "Il limite è richiesto.",
|
||||
"error.monthlyLimitInvalid": "Imposta un limite mensile valido.",
|
||||
"error.workspaceNameRequired": "Il nome del workspace è richiesto.",
|
||||
"error.nameTooLong": "Il nome deve essere di 255 caratteri o meno.",
|
||||
"error.emailRequired": "L'email è richiesta",
|
||||
"error.roleRequired": "Il ruolo è richiesto",
|
||||
"error.idRequired": "L'ID è richiesto",
|
||||
"error.nameRequired": "Il nome è richiesto",
|
||||
"error.providerRequired": "Il provider è richiesto",
|
||||
"error.apiKeyRequired": "La chiave API è richiesta",
|
||||
"error.modelRequired": "Il modello è richiesto",
|
||||
"error.reloadAmountMin": "L'importo della ricarica deve essere almeno ${{amount}}",
|
||||
"error.reloadTriggerMin": "La soglia del saldo deve essere almeno ${{amount}}",
|
||||
|
||||
"app.meta.description": "OpenCode - L'agente di programmazione open source.",
|
||||
|
||||
"home.title": "OpenCode | L'agente di coding IA open source",
|
||||
|
||||
"temp.title": "opencode | Agente di coding IA costruito per il terminale",
|
||||
"temp.hero.title": "L'agente di coding IA costruito per il terminale",
|
||||
"temp.zen": "opencode zen",
|
||||
"temp.getStarted": "Inizia",
|
||||
"temp.feature.native.title": "TUI Nativa",
|
||||
"temp.feature.native.body": "Un'interfaccia terminale reattiva, nativa e personalizzabile",
|
||||
"temp.feature.zen.beforeLink": "Una",
|
||||
"temp.feature.zen.link": "lista curata di modelli",
|
||||
"temp.feature.zen.afterLink": "fornita da opencode",
|
||||
"temp.feature.models.beforeLink": "Supporta 75+ provider LLM tramite",
|
||||
"temp.feature.models.afterLink": ", inclusi modelli locali",
|
||||
"temp.screenshot.caption": "OpenCode TUI con il tema tokyonight",
|
||||
"temp.screenshot.alt": "OpenCode TUI con tema tokyonight",
|
||||
"temp.logoLightAlt": "logo chiaro di opencode",
|
||||
"temp.logoDarkAlt": "logo scuro di opencode",
|
||||
|
||||
"home.banner.badge": "Nuovo",
|
||||
"home.banner.text": "App desktop disponibile in beta",
|
||||
"home.banner.platforms": "su macOS, Windows e Linux",
|
||||
"home.banner.downloadNow": "Scarica ora",
|
||||
"home.banner.downloadBetaNow": "Scarica ora la beta desktop",
|
||||
|
||||
"home.hero.title": "L'agente di coding IA open source",
|
||||
"home.hero.subtitle.a": "Modelli gratuiti inclusi o collega qualsiasi modello da qualsiasi provider,",
|
||||
"home.hero.subtitle.b": "inclusi Claude, GPT, Gemini e altri.",
|
||||
|
||||
"home.install.ariaLabel": "Opzioni di installazione",
|
||||
|
||||
"home.what.title": "Che cos'è OpenCode?",
|
||||
"home.what.body": "OpenCode è un agente open source che ti aiuta a scrivere codice nel terminale, IDE o desktop.",
|
||||
"home.what.lsp.title": "LSP abilitato",
|
||||
"home.what.lsp.body": "Carica automaticamente gli LSP giusti per il LLM",
|
||||
"home.what.multiSession.title": "Multi-session",
|
||||
"home.what.multiSession.body": "Avvia più agenti in parallelo sullo stesso progetto",
|
||||
"home.what.shareLinks.title": "Link condivisi",
|
||||
"home.what.shareLinks.body": "Condividi un link a qualsiasi sessione per riferimento o debug",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "Accedi con GitHub per usare il tuo account Copilot",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "Accedi con OpenAI per usare il tuo account ChatGPT Plus o Pro",
|
||||
"home.what.anyModel.title": "Qualsiasi modello",
|
||||
"home.what.anyModel.body": "75+ provider LLM tramite Models.dev, inclusi modelli locali",
|
||||
"home.what.anyEditor.title": "Qualsiasi editor",
|
||||
"home.what.anyEditor.body": "Disponibile come interfaccia terminale, app desktop ed estensione IDE",
|
||||
"home.what.readDocs": "Leggi la doc",
|
||||
|
||||
"home.growth.title": "L'agente di coding IA open source",
|
||||
"home.growth.body":
|
||||
"Con oltre <strong>{{stars}}</strong> stelle su GitHub, <strong>{{contributors}}</strong> contributori e oltre <strong>{{commits}}</strong> commit, OpenCode è usato e apprezzato da oltre <strong>{{monthlyUsers}}</strong> sviluppatori ogni mese.",
|
||||
"home.growth.githubStars": "Stelle GitHub",
|
||||
"home.growth.contributors": "Contributori",
|
||||
"home.growth.monthlyDevs": "Devs mensili",
|
||||
|
||||
"home.privacy.title": "Progettato per la privacy",
|
||||
"home.privacy.body":
|
||||
"OpenCode non archivia il tuo codice né i dati di contesto, così può operare in ambienti sensibili alla privacy.",
|
||||
"home.privacy.learnMore": "Scopri di più su",
|
||||
"home.privacy.link": "privacy",
|
||||
|
||||
"home.faq.q1": "Che cos'è OpenCode?",
|
||||
"home.faq.a1":
|
||||
"OpenCode è un agente open source che ti aiuta a scrivere ed eseguire codice con qualsiasi modello di IA. È disponibile come interfaccia terminale, app desktop o estensione IDE.",
|
||||
"home.faq.q2": "Come uso OpenCode?",
|
||||
"home.faq.a2.before": "Il modo più semplice per iniziare è leggere l'",
|
||||
"home.faq.a2.link": "introduzione",
|
||||
"home.faq.q3": "Mi servono abbonamenti IA extra per usare OpenCode?",
|
||||
"home.faq.a3.p1":
|
||||
"Non necessariamente: OpenCode include un set di modelli gratuiti che puoi usare senza creare un account.",
|
||||
"home.faq.a3.p2.beforeZen": "Inoltre, puoi usare modelli popolari per il coding creando un account",
|
||||
"home.faq.a3.p2.afterZen": ".",
|
||||
"home.faq.a3.p3":
|
||||
"Anche se incoraggiamo gli utenti a usare Zen, OpenCode funziona anche con i provider più diffusi come OpenAI, Anthropic, xAI, ecc.",
|
||||
"home.faq.a3.p4.beforeLocal": "Puoi anche collegare i tuoi",
|
||||
"home.faq.a3.p4.localLink": "modelli locali",
|
||||
"home.faq.q4": "Posso usare i miei abbonamenti IA esistenti con OpenCode?",
|
||||
"home.faq.a4.p1":
|
||||
"Sì, OpenCode supporta gli abbonamenti dei principali provider. Puoi usare Claude Pro/Max, ChatGPT Plus/Pro o GitHub Copilot.",
|
||||
"home.faq.q5": "Posso usare OpenCode solo nel terminale?",
|
||||
"home.faq.a5.beforeDesktop": "Non più! OpenCode ora è disponibile come app per",
|
||||
"home.faq.a5.desktop": "desktop",
|
||||
"home.faq.a5.and": "e",
|
||||
"home.faq.a5.web": "web",
|
||||
"home.faq.q6": "Quanto costa OpenCode?",
|
||||
"home.faq.a6":
|
||||
"OpenCode è gratuito al 100%. Include anche un set di modelli gratuiti. Potrebbero esserci costi aggiuntivi se colleghi altri provider.",
|
||||
"home.faq.q7": "E per quanto riguarda dati e privacy?",
|
||||
"home.faq.a7.p1":
|
||||
"I tuoi dati vengono archiviati solo quando usi i nostri modelli gratuiti o crei link condivisibili.",
|
||||
"home.faq.a7.p2.beforeModels": "Scopri di più su",
|
||||
"home.faq.a7.p2.modelsLink": "i nostri modelli",
|
||||
"home.faq.a7.p2.and": "e",
|
||||
"home.faq.a7.p2.shareLink": "le pagine di condivisione",
|
||||
"home.faq.q8": "OpenCode è open source?",
|
||||
"home.faq.a8.p1": "Sì, OpenCode è completamente open source. Il codice sorgente è pubblico su",
|
||||
"home.faq.a8.p2": "sotto la",
|
||||
"home.faq.a8.mitLicense": "Licenza MIT",
|
||||
"home.faq.a8.p3":
|
||||
", il che significa che chiunque può usarlo, modificarlo o contribuire al suo sviluppo. Chiunque nella comunità può aprire issue, inviare pull request ed estendere le funzionalità.",
|
||||
|
||||
"home.zenCta.title": "Accedi a modelli affidabili e ottimizzati per agenti di coding",
|
||||
"home.zenCta.body":
|
||||
"Zen ti dà accesso a una selezione di modelli di IA che OpenCode ha testato e benchmarkato specificamente per agenti di coding. Niente più preoccupazioni per prestazioni e qualità incoerenti tra provider: usa modelli validati che funzionano.",
|
||||
"home.zenCta.link": "Scopri Zen",
|
||||
|
||||
"zen.title": "OpenCode Zen | Una selezione curata di modelli affidabili e ottimizzati per agenti di coding",
|
||||
"zen.hero.title": "Accedi a modelli affidabili e ottimizzati per agenti di coding",
|
||||
"zen.hero.body":
|
||||
"Zen ti dà accesso a una selezione di modelli di IA che OpenCode ha testato e benchmarkato specificamente per agenti di coding. Niente più preoccupazioni per prestazioni e qualità incoerenti tra provider: usa modelli validati che funzionano.",
|
||||
|
||||
"zen.faq.q1": "Cos'è OpenCode Zen?",
|
||||
"zen.faq.a1":
|
||||
"Zen è un set curato di modelli di IA testati e benchmarkati per agenti di coding, creato dal team dietro OpenCode.",
|
||||
"zen.faq.q2": "Cosa rende Zen più accurato?",
|
||||
"zen.faq.a2":
|
||||
"Zen offre solo modelli testati e benchmarkati specificamente per agenti di coding. Non useresti un coltello da burro per tagliare una bistecca; non usare modelli scarsi per programmare.",
|
||||
"zen.faq.q3": "Zen è più economico?",
|
||||
"zen.faq.a3":
|
||||
"Zen non è a scopo di lucro. Zen ribalta i costi dei provider di modelli direttamente su di te. Più Zen viene usato, più OpenCode può negoziare tariffe migliori e passarle a te.",
|
||||
"zen.faq.q4": "Quanto costa Zen?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zen",
|
||||
"zen.faq.a4.p1.pricingLink": "addebita per richiesta",
|
||||
"zen.faq.a4.p1.afterPricing": "senza ricarichi, quindi paghi esattamente ciò che addebita il provider del modello.",
|
||||
"zen.faq.a4.p2.beforeAccount": "Il costo totale dipende dall'uso e puoi impostare limiti di spesa mensili nel tuo",
|
||||
"zen.faq.a4.p2.accountLink": "account",
|
||||
"zen.faq.a4.p3":
|
||||
"Per coprire i costi, OpenCode aggiunge solo una piccola commissione di elaborazione del pagamento di $1.23 per ogni ricarica di saldo da $20.",
|
||||
"zen.faq.q5": "E per quanto riguarda dati e privacy?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Tutti i modelli Zen sono ospitati negli Stati Uniti. I provider seguono una policy di zero-retention e non usano i tuoi dati per l'addestramento dei modelli, con le",
|
||||
"zen.faq.a5.exceptionsLink": "seguenti eccezioni",
|
||||
"zen.faq.q6": "Posso impostare limiti di spesa?",
|
||||
"zen.faq.a6": "Sì, puoi impostare limiti di spesa mensuali nel tuo account.",
|
||||
"zen.faq.q7": "Posso annullare?",
|
||||
"zen.faq.a7": "Sì, puoi disattivare la fatturazione in qualsiasi momento e usare il saldo rimanente.",
|
||||
"zen.faq.q8": "Posso usare Zen con altri agenti di coding?",
|
||||
"zen.faq.a8":
|
||||
"Anche se Zen funziona alla grande con OpenCode, puoi usare Zen con qualsiasi agente. Segui le istruzioni di configurazione nel tuo agente di coding preferito.",
|
||||
|
||||
"zen.cta.start": "Inizia con Zen",
|
||||
"zen.pricing.title": "Aggiungi $20 di saldo a consumo",
|
||||
"zen.pricing.fee": "(+$1.23 commissione di elaborazione carta)",
|
||||
"zen.pricing.body": "Usa con qualsiasi agente. Imposta limiti di spesa mensili. Annulla in qualsiasi momento.",
|
||||
"zen.problem.title": "Quale problema risolve Zen?",
|
||||
"zen.problem.body":
|
||||
"Sono disponibili numerosi modelli, ma solo pochi funzionano bene con gli agenti di coding. La maggior parte dei provider li configura in modo diverso con risultati variabili.",
|
||||
"zen.problem.subtitle": "Stiamo risolvendo questo problema per tutti, non solo per gli utenti OpenCode.",
|
||||
"zen.problem.item1": "Testare modelli selezionati e consultare i loro team",
|
||||
"zen.problem.item2": "Collaborare con i provider per garantire che vengano consegnati correttamente",
|
||||
"zen.problem.item3": "Benchmark di tutte le combinazioni modello-provider che raccomandiamo",
|
||||
"zen.how.title": "Come funziona Zen",
|
||||
"zen.how.body": "Anche se ti consigliamo di utilizzare Zen con OpenCode, puoi utilizzare Zen con qualsiasi agente.",
|
||||
"zen.how.step1.title": "Iscriviti e aggiungi un saldo di $20",
|
||||
"zen.how.step1.beforeLink": "segui le",
|
||||
"zen.how.step1.link": "istruzioni di configurazione",
|
||||
"zen.how.step2.title": "Usa Zen con prezzi trasparenti",
|
||||
"zen.how.step2.link": "paga per richiesta",
|
||||
"zen.how.step2.afterLink": "senza ricarichi",
|
||||
"zen.how.step3.title": "Ricarica automatica",
|
||||
"zen.how.step3.body": "quando il tuo saldo raggiunge $5, aggiungeremo automaticamente $20",
|
||||
"zen.privacy.title": "La tua privacy è importante per noi",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"Tutti i modelli Zen sono ospitati negli Stati Uniti. I provider seguono una policy di zero-retention e non usano i tuoi dati per l'addestramento dei modelli, con le",
|
||||
"zen.privacy.exceptionsLink": "seguenti eccezioni",
|
||||
|
||||
"go.title": "OpenCode Go | Modelli di coding a basso costo per tutti",
|
||||
"go.meta.description":
|
||||
"Go inizia a $5 per il primo mese, poi $10/mese, con generosi limiti di richiesta di 5 ore per GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash.",
|
||||
"go.hero.title": "Modelli di coding a basso costo per tutti",
|
||||
"go.hero.body":
|
||||
"Go porta il coding agentico ai programmatori di tutto il mondo. Offrendo limiti generosi e un accesso affidabile ai modelli open source più capaci, in modo da poter costruire con agenti potenti senza preoccuparsi dei costi o della disponibilità.",
|
||||
|
||||
"go.cta.start": "Abbonati a Go",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Abbonati a Go",
|
||||
"go.cta.price": "$10/mese",
|
||||
"go.cta.promo": "$5 il primo mese",
|
||||
"go.pricing.body":
|
||||
"Usalo con qualsiasi agente. $5 il primo mese, poi $10/mese. Ricarica il credito se necessario. Annulla in qualsiasi momento.",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6: limite d'uso triplicato fino al 27 aprile",
|
||||
"go.graph.free": "Gratis",
|
||||
"go.graph.freePill": "Big Pickle e modelli gratuiti",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Richieste ogni 5 ore",
|
||||
"go.graph.usageLimits": "Limiti di utilizzo",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Richieste ogni 5h: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "ha cambiato la vita, è davvero una scelta ovvia.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, e ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 persone su 5 nel nostro team amano usare",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "Non posso raccomandare",
|
||||
"go.testimonials.adam.quoteAfter": "abbastanza. Seriamente, è davvero buono.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "Con",
|
||||
"go.testimonials.david.quoteAfter": "so che tutti i modelli sono testati e perfetti per gli agenti di coding.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 volte)",
|
||||
"go.testimonials.frank.quote": "Vorrei essere ancora a Nvidia.",
|
||||
"go.problem.title": "Quale problema risolve Go?",
|
||||
"go.problem.body":
|
||||
"Ci concentriamo nel portare l'esperienza OpenCode a quante più persone possibile. OpenCode Go è un abbonamento a basso costo: $5 il primo mese, poi $10/mese. Offre limiti generosi e accesso affidabile ai modelli open source più capaci.",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "Prezzo di abbonamento a basso costo",
|
||||
"go.problem.item2": "Limiti generosi e accesso affidabile",
|
||||
"go.problem.item3": "Costruito per il maggior numero possibile di programmatori",
|
||||
"go.problem.item4":
|
||||
"Include GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash",
|
||||
"go.how.title": "Come funziona Go",
|
||||
"go.how.body": "Go inizia a $5 per il primo mese, poi $10/mese. Puoi usarlo con OpenCode o qualsiasi agente.",
|
||||
"go.how.step1.title": "Crea un account",
|
||||
"go.how.step1.beforeLink": "segui le",
|
||||
"go.how.step1.link": "istruzioni di configurazione",
|
||||
"go.how.step2.title": "Abbonati a Go",
|
||||
"go.how.step2.link": "$5 il primo mese",
|
||||
"go.how.step2.afterLink": "poi $10/mese con limiti generosi",
|
||||
"go.how.step3.title": "Inizia a programmare",
|
||||
"go.how.step3.body": "con accesso affidabile ai modelli open source",
|
||||
"go.privacy.title": "La tua privacy è importante per noi",
|
||||
"go.privacy.body":
|
||||
"Il piano è progettato principalmente per gli utenti internazionali, con modelli ospitati negli Stati Uniti, UE e Singapore per un accesso globale stabile.",
|
||||
"go.privacy.contactAfter": "se hai domande.",
|
||||
"go.privacy.beforeExceptions":
|
||||
"I modelli Go sono ospitati negli Stati Uniti. I provider seguono una policy di zero-retention e non usano i tuoi dati per l'addestramento dei modelli, con le",
|
||||
"go.privacy.exceptionsLink": "seguenti eccezioni",
|
||||
"go.faq.q1": "Che cos'è OpenCode Go?",
|
||||
"go.faq.a1":
|
||||
"Go è un abbonamento a basso costo che ti dà un accesso affidabile a modelli open source capaci per il coding agentico.",
|
||||
"go.faq.q2": "Quali modelli include Go?",
|
||||
"go.faq.a2": "Go include i modelli elencati di seguito, con limiti generosi e accesso affidabile.",
|
||||
"go.faq.q3": "Go è lo stesso di Zen?",
|
||||
"go.faq.a3":
|
||||
"No. Zen è a consumo, mentre Go inizia a $5 per il primo mese, poi $10/mese, con limiti generosi e accesso affidabile ai modelli open source GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash.",
|
||||
"go.faq.q4": "Quanto costa Go?",
|
||||
"go.faq.a4.p1.beforePricing": "Go costa",
|
||||
"go.faq.a4.p1.pricingLink": "$5 il primo mese",
|
||||
"go.faq.a4.p1.afterPricing": "poi $10/mese con limiti generosi.",
|
||||
"go.faq.a4.p2.beforeAccount": "Puoi gestire il tuo abbonamento nel tuo",
|
||||
"go.faq.a4.p2.accountLink": "account",
|
||||
"go.faq.a4.p3": "Annulla in qualsiasi momento.",
|
||||
"go.faq.q5": "E per quanto riguarda dati e privacy?",
|
||||
"go.faq.a5.body":
|
||||
"Il piano è progettato principalmente per gli utenti internazionali, con modelli ospitati negli Stati Uniti, UE e Singapore per un accesso globale stabile. I nostri provider seguono una policy di zero-retention e non usano i tuoi dati per l'addestramento dei modelli.",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"I modelli Go sono ospitati negli Stati Uniti. I provider seguono una policy di zero-retention e non usano i tuoi dati per l'addestramento dei modelli, con le",
|
||||
"go.faq.a5.exceptionsLink": "seguenti eccezioni",
|
||||
"go.faq.q6": "Posso ricaricare il credito?",
|
||||
"go.faq.a6": "Se hai bisogno di più utilizzo, puoi ricaricare il credito nel tuo account.",
|
||||
"go.faq.q7": "Posso annullare?",
|
||||
"go.faq.a7": "Sì, puoi annullare in qualsiasi momento.",
|
||||
"go.faq.q8": "Posso usare Go con altri agenti di coding?",
|
||||
"go.faq.a8":
|
||||
"Sì, puoi usare Go con qualsiasi agente. Segui le istruzioni di configurazione nel tuo agente di coding preferito.",
|
||||
|
||||
"go.faq.q9": "Qual è la differenza tra i modelli gratuiti e Go?",
|
||||
"go.faq.a9":
|
||||
"I modelli gratuiti includono Big Pickle più modelli promozionali disponibili al momento, con una quota di 200 richieste/giorno. Go include GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro e DeepSeek V4 Flash con quote di richiesta più elevate applicate su finestre mobili (5 ore, settimanale e mensile), approssimativamente equivalenti a $12 ogni 5 ore, $30 a settimana e $60 al mese (il conteggio effettivo delle richieste varia in base al modello e all'utilizzo).",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "Limite di richieste superato. Riprova più tardi.",
|
||||
"zen.api.error.modelNotSupported": "Modello {{model}} non supportato",
|
||||
"zen.api.error.modelFormatNotSupported": "Modello {{model}} non supportato per il formato {{format}}",
|
||||
"zen.api.error.noProviderAvailable": "Nessun provider disponibile",
|
||||
"zen.api.error.providerNotSupported": "Provider {{provider}} non supportato",
|
||||
"zen.api.error.missingApiKey": "Chiave API mancante.",
|
||||
"zen.api.error.invalidApiKey": "Chiave API non valida.",
|
||||
"zen.api.error.subscriptionQuotaExceeded": "Quota dell'abbonamento superata. Riprova tra {{retryIn}}.",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"Quota dell'abbonamento superata. Puoi continuare a utilizzare modelli gratuiti.",
|
||||
"zen.api.error.noPaymentMethod": "Nessun metodo di pagamento. Aggiungi un metodo di pagamento qui: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "Saldo insufficiente. Gestisci la tua fatturazione qui: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"La tua area di lavoro ha raggiunto il limite di spesa mensile di ${{amount}}. Gestisci i tuoi limiti qui: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"Hai raggiunto il tuo limite di spesa mensile di ${{amount}}. Gestisci i tuoi limiti qui: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "Il modello è disabilitato",
|
||||
"zen.api.error.trialEnded":
|
||||
"La promozione gratuita di {{model}} è terminata. Puoi continuare a usare il modello abbonandoti a OpenCode Go - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | Accedi ai migliori modelli di coding al mondo",
|
||||
"black.meta.description":
|
||||
"Ottieni l'accesso a Claude, GPT, Gemini e altri con i piani di abbonamento OpenCode Black.",
|
||||
"black.hero.title": "Accedi ai migliori modelli di coding al mondo",
|
||||
"black.hero.subtitle": "Inclusi Claude, GPT, Gemini e altri",
|
||||
"black.title": "OpenCode Black | Prezzi",
|
||||
"black.paused": "L'iscrizione al piano Black è temporaneamente sospesa.",
|
||||
"black.plan.icon20": "Piano Black 20",
|
||||
"black.plan.icon100": "Piano Black 100",
|
||||
"black.plan.icon200": "Piano Black 200",
|
||||
"black.plan.multiplier100": "5x più utilizzo rispetto a Black 20",
|
||||
"black.plan.multiplier200": "20x più utilizzo rispetto a Black 20",
|
||||
"black.price.perMonth": "al mese",
|
||||
"black.price.perPersonBilledMonthly": "per persona fatturato mensilmente",
|
||||
"black.terms.1": "Il tuo abbonamento non inizierà immediatamente",
|
||||
"black.terms.2": "Verrai aggiunto alla lista d'attesa e attivato presto",
|
||||
"black.terms.3": "La tua carta verrà addebitata solo quando il tuo abbonamento sarà attivato",
|
||||
"black.terms.4":
|
||||
"Si applicano limiti di utilizzo, un uso fortemente automatizzato potrebbe raggiungere i limiti prima",
|
||||
"black.terms.5": "Gli abbonamenti sono per individui, contatta Enterprise per i team",
|
||||
"black.terms.6": "I limiti potrebbero essere modificati e i piani potrebbero essere interrotti in futuro",
|
||||
"black.terms.7": "Annulla il tuo abbonamento in qualsiasi momento",
|
||||
"black.action.continue": "Continua",
|
||||
"black.finePrint.beforeTerms": "I prezzi mostrati non includono le tasse applicabili",
|
||||
"black.finePrint.terms": "Termini di servizio",
|
||||
"black.workspace.title": "OpenCode Black | Seleziona Workspace",
|
||||
"black.workspace.selectPlan": "Seleziona un workspace per questo piano",
|
||||
"black.workspace.name": "Workspace {{n}}",
|
||||
"black.subscribe.title": "Abbonati a OpenCode Black",
|
||||
"black.subscribe.paymentMethod": "Metodo di pagamento",
|
||||
"black.subscribe.loadingPaymentForm": "Caricamento modulo di pagamento...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "Seleziona un workspace per continuare",
|
||||
"black.subscribe.failurePrefix": "Oh no!",
|
||||
"black.subscribe.error.generic": "Si è verificato un errore",
|
||||
"black.subscribe.error.invalidPlan": "Piano non valido",
|
||||
"black.subscribe.error.workspaceRequired": "ID Workspace richiesto",
|
||||
"black.subscribe.error.alreadySubscribed": "Questo workspace ha già un abbonamento",
|
||||
"black.subscribe.processing": "Elaborazione...",
|
||||
"black.subscribe.submit": "Abbonati ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "Ti verrà addebitato solo quando il tuo abbonamento sarà attivato",
|
||||
"black.subscribe.success.title": "Sei nella lista d'attesa di OpenCode Black",
|
||||
"black.subscribe.success.subscriptionPlan": "Piano di abbonamento",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "Importo",
|
||||
"black.subscribe.success.amountValue": "${{plan}} al mese",
|
||||
"black.subscribe.success.paymentMethod": "Metodo di pagamento",
|
||||
"black.subscribe.success.dateJoined": "Data di adesione",
|
||||
"black.subscribe.success.chargeNotice": "La tua carta verrà addebitata quando il tuo abbonamento sarà attivato",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "Utilizzo",
|
||||
"workspace.nav.apiKeys": "Chiavi API",
|
||||
"workspace.nav.members": "Membri",
|
||||
"workspace.nav.billing": "Fatturazione",
|
||||
"workspace.nav.settings": "Impostazioni",
|
||||
|
||||
"workspace.home.banner.beforeLink": "Modelli ottimizzati e affidabili per agenti di coding.",
|
||||
"workspace.lite.banner.beforeLink": "Modelli di coding a basso costo per tutti.",
|
||||
"workspace.home.billing.loading": "Caricamento...",
|
||||
"workspace.home.billing.enable": "Abilita fatturazione",
|
||||
"workspace.home.billing.currentBalance": "Saldo attuale",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "Modelli testati e verificati",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"Abbiamo benchmarkato e testato modelli specificamente per agenti di coding per garantire le migliori prestazioni.",
|
||||
"workspace.newUser.feature.quality.title": "Massima qualità",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"Accedi a modelli configurati per prestazioni ottimali - nessun downgrade o instradamento verso provider più economici.",
|
||||
"workspace.newUser.feature.lockin.title": "Nessun lock-in",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"Usa Zen con qualsiasi agente di coding, e continua a usare altri provider con opencode quando vuoi.",
|
||||
"workspace.newUser.copyApiKey": "Copia chiave API",
|
||||
"workspace.newUser.copyKey": "Copia Chiave",
|
||||
"workspace.newUser.copied": "Copiato!",
|
||||
"workspace.newUser.step.enableBilling": "Abilita fatturazione",
|
||||
"workspace.newUser.step.login.before": "Esegui",
|
||||
"workspace.newUser.step.login.after": "e seleziona opencode",
|
||||
"workspace.newUser.step.pasteKey": "Incolla la tua chiave API",
|
||||
"workspace.newUser.step.models.before": "Avvia opencode ed esegui",
|
||||
"workspace.newUser.step.models.after": "per selezionare un modello",
|
||||
|
||||
"workspace.models.title": "Modelli",
|
||||
"workspace.models.subtitle.beforeLink": "Gestisci i modelli a cui possono accedere i membri del workspace.",
|
||||
"workspace.models.table.model": "Modello",
|
||||
"workspace.models.table.enabled": "Abilitato",
|
||||
|
||||
"workspace.providers.title": "Bring Your Own Key",
|
||||
"workspace.providers.subtitle": "Configura le tue chiavi API dai provider di IA.",
|
||||
"workspace.providers.placeholder": "Inserisci chiave API {{provider}} ({{prefix}}...)",
|
||||
"workspace.providers.configure": "Configura",
|
||||
"workspace.providers.edit": "Modifica",
|
||||
"workspace.providers.delete": "Elimina",
|
||||
"workspace.providers.saving": "Salvataggio...",
|
||||
"workspace.providers.save": "Salva",
|
||||
"workspace.providers.table.provider": "Provider",
|
||||
"workspace.providers.table.apiKey": "Chiave API",
|
||||
|
||||
"workspace.usage.title": "Cronologia Utilizzo",
|
||||
"workspace.usage.subtitle": "Utilizzo API recente e costi.",
|
||||
"workspace.usage.empty": "Effettua la tua prima chiamata API per iniziare.",
|
||||
"workspace.usage.table.date": "Data",
|
||||
"workspace.usage.table.model": "Modello",
|
||||
"workspace.usage.table.input": "Input",
|
||||
"workspace.usage.table.output": "Output",
|
||||
"workspace.usage.table.cost": "Costo",
|
||||
"workspace.usage.table.session": "Sessione",
|
||||
"workspace.usage.breakdown.input": "Input",
|
||||
"workspace.usage.breakdown.cacheRead": "Lettura Cache",
|
||||
"workspace.usage.breakdown.cacheWrite": "Scrittura Cache",
|
||||
"workspace.usage.breakdown.output": "Output",
|
||||
"workspace.usage.breakdown.reasoning": "Reasoning",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "Costo",
|
||||
"workspace.cost.subtitle": "Costi di utilizzo suddivisi per modello.",
|
||||
"workspace.cost.allModels": "Tutti i Modelli",
|
||||
"workspace.cost.allKeys": "Tutte le Chiavi",
|
||||
"workspace.cost.deletedSuffix": "(eliminato)",
|
||||
"workspace.cost.empty": "Nessun dato di utilizzo disponibile per il periodo selezionato.",
|
||||
"workspace.cost.subscriptionShort": "sub",
|
||||
|
||||
"workspace.keys.title": "Chiavi API",
|
||||
"workspace.keys.subtitle": "Gestisci le tue chiavi API per accedere ai servizi opencode.",
|
||||
"workspace.keys.create": "Crea Chiave API",
|
||||
"workspace.keys.placeholder": "Inserisci nome chiave",
|
||||
"workspace.keys.empty": "Crea una chiave API opencode Gateway",
|
||||
"workspace.keys.table.name": "Nome",
|
||||
"workspace.keys.table.key": "Chiave",
|
||||
"workspace.keys.table.createdBy": "Creato da",
|
||||
"workspace.keys.table.lastUsed": "Ultimo Utilizzo",
|
||||
"workspace.keys.copyApiKey": "Copia chiave API",
|
||||
"workspace.keys.delete": "Elimina",
|
||||
|
||||
"workspace.members.title": "Membri",
|
||||
"workspace.members.subtitle": "Gestisci i membri del workspace e le loro autorizzazioni.",
|
||||
"workspace.members.invite": "Invita Membro",
|
||||
"workspace.members.inviting": "Invito in corso...",
|
||||
"workspace.members.beta.beforeLink": "I workspace sono gratuiti per i team durante la beta.",
|
||||
"workspace.members.form.invitee": "Invitato",
|
||||
"workspace.members.form.emailPlaceholder": "Inserisci email",
|
||||
"workspace.members.form.role": "Ruolo",
|
||||
"workspace.members.form.monthlyLimit": "Limite di spesa mensile",
|
||||
"workspace.members.noLimit": "Nessun limite",
|
||||
"workspace.members.noLimitLowercase": "nessun limite",
|
||||
"workspace.members.invited": "invitato",
|
||||
"workspace.members.edit": "Modifica",
|
||||
"workspace.members.delete": "Elimina",
|
||||
"workspace.members.saving": "Salvataggio...",
|
||||
"workspace.members.save": "Salva",
|
||||
"workspace.members.table.email": "Email",
|
||||
"workspace.members.table.role": "Ruolo",
|
||||
"workspace.members.table.monthLimit": "Limite mensile",
|
||||
"workspace.members.role.admin": "Admin",
|
||||
"workspace.members.role.adminDescription": "Può gestire modelli, membri e fatturazione",
|
||||
"workspace.members.role.member": "Membro",
|
||||
"workspace.members.role.memberDescription": "Può generare chiavi API solo per sé",
|
||||
|
||||
"workspace.settings.title": "Impostazioni",
|
||||
"workspace.settings.subtitle": "Aggiorna il nome e le preferenze del workspace.",
|
||||
"workspace.settings.workspaceName": "Nome Workspace",
|
||||
"workspace.settings.defaultName": "Predefinito",
|
||||
"workspace.settings.updating": "Aggiornamento...",
|
||||
"workspace.settings.save": "Salva",
|
||||
"workspace.settings.edit": "Modifica",
|
||||
|
||||
"workspace.billing.title": "Fatturazione",
|
||||
"workspace.billing.subtitle.beforeLink": "Gestisci i metodi di pagamento.",
|
||||
"workspace.billing.contactUs": "Contattaci",
|
||||
"workspace.billing.subtitle.afterLink": "se hai domande.",
|
||||
"workspace.billing.currentBalance": "Saldo Attuale",
|
||||
"workspace.billing.add": "Aggiungi $",
|
||||
"workspace.billing.enterAmount": "Inserisci importo",
|
||||
"workspace.billing.loading": "Caricamento...",
|
||||
"workspace.billing.addAction": "Aggiungi",
|
||||
"workspace.billing.addBalance": "Aggiungi Saldo",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Collegato a Stripe",
|
||||
"workspace.billing.manage": "Gestisci",
|
||||
"workspace.billing.enable": "Abilita Fatturazione",
|
||||
|
||||
"workspace.monthlyLimit.title": "Limite Mensile",
|
||||
"workspace.monthlyLimit.subtitle": "Imposta un limite di utilizzo mensile per il tuo account.",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "Impostazione...",
|
||||
"workspace.monthlyLimit.set": "Impostato",
|
||||
"workspace.monthlyLimit.edit": "Modifica Limite",
|
||||
"workspace.monthlyLimit.noLimit": "Nessun limite di utilizzo impostato.",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "Utilizzo attuale per",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": "è $",
|
||||
|
||||
"workspace.redeem.title": "Riscatta Coupon",
|
||||
"workspace.redeem.subtitle": "Riscatta un codice coupon per ottenere credito o vantaggi.",
|
||||
"workspace.redeem.placeholder": "Inserisci il codice coupon",
|
||||
"workspace.redeem.redeem": "Riscatta",
|
||||
"workspace.redeem.redeeming": "Riscatto in corso...",
|
||||
"workspace.redeem.success": "Coupon riscattato con successo.",
|
||||
|
||||
"workspace.reload.title": "Ricarica Auto",
|
||||
"workspace.reload.disabled.before": "La ricarica auto è",
|
||||
"workspace.reload.disabled.state": "disabilitata",
|
||||
"workspace.reload.disabled.after": "Abilita per ricaricare automaticamente quando il saldo è basso.",
|
||||
"workspace.reload.enabled.before": "La ricarica auto è",
|
||||
"workspace.reload.enabled.state": "abilitata",
|
||||
"workspace.reload.enabled.middle": "Ricaricheremo",
|
||||
"workspace.reload.processingFee": "commissione",
|
||||
"workspace.reload.enabled.after": "quando il saldo raggiunge",
|
||||
"workspace.reload.edit": "Modifica",
|
||||
"workspace.reload.enable": "Abilita",
|
||||
"workspace.reload.enableAutoReload": "Abilita Ricarica Auto",
|
||||
"workspace.reload.reloadAmount": "Ricarica $",
|
||||
"workspace.reload.whenBalanceReaches": "Quando il saldo raggiunge $",
|
||||
"workspace.reload.saving": "Salvataggio...",
|
||||
"workspace.reload.save": "Salva",
|
||||
"workspace.reload.failedAt": "Ricarica fallita il",
|
||||
"workspace.reload.reason": "Motivo:",
|
||||
"workspace.reload.updatePaymentMethod": "Aggiorna il tuo metodo di pagamento e riprova.",
|
||||
"workspace.reload.retrying": "Riprovo...",
|
||||
"workspace.reload.retry": "Riprova",
|
||||
"workspace.reload.error.paymentFailed": "Pagamento fallito.",
|
||||
|
||||
"workspace.payments.title": "Cronologia Pagamenti",
|
||||
"workspace.payments.subtitle": "Transazioni di pagamento recenti.",
|
||||
"workspace.payments.table.date": "Data",
|
||||
"workspace.payments.table.paymentId": "ID Pagamento",
|
||||
"workspace.payments.table.amount": "Importo",
|
||||
"workspace.payments.table.receipt": "Ricevuta",
|
||||
"workspace.payments.type.credit": "credito",
|
||||
"workspace.payments.type.subscription": "abbonamento",
|
||||
"workspace.payments.view": "Visualizza",
|
||||
|
||||
"workspace.black.loading": "Caricamento...",
|
||||
"workspace.black.time.day": "giorno",
|
||||
"workspace.black.time.days": "giorni",
|
||||
"workspace.black.time.hour": "ora",
|
||||
"workspace.black.time.hours": "ore",
|
||||
"workspace.black.time.minute": "minuto",
|
||||
"workspace.black.time.minutes": "minuti",
|
||||
"workspace.black.time.fewSeconds": "pochi secondi",
|
||||
"workspace.black.subscription.title": "Abbonamento",
|
||||
"workspace.black.subscription.message": "Sei abbonato a OpenCode Black per ${{plan}} al mese.",
|
||||
"workspace.black.subscription.manage": "Gestisci Abbonamento",
|
||||
"workspace.black.subscription.rollingUsage": "Utilizzo 5-ore",
|
||||
"workspace.black.subscription.weeklyUsage": "Utilizzo Settimanale",
|
||||
"workspace.black.subscription.resetsIn": "Si resetta tra",
|
||||
"workspace.black.subscription.useBalance": "Usa il tuo saldo disponibile dopo aver raggiunto i limiti di utilizzo",
|
||||
"workspace.black.waitlist.title": "Waitlist",
|
||||
"workspace.black.waitlist.joined": "Sei nella waitlist per il piano OpenCode Black da ${{plan}} al mese.",
|
||||
"workspace.black.waitlist.ready": "Siamo pronti per iscriverti al piano OpenCode Black da ${{plan}} al mese.",
|
||||
"workspace.black.waitlist.leave": "Lascia Waitlist",
|
||||
"workspace.black.waitlist.leaving": "Uscita...",
|
||||
"workspace.black.waitlist.left": "Uscito",
|
||||
"workspace.black.waitlist.enroll": "Iscriviti",
|
||||
"workspace.black.waitlist.enrolling": "Iscrizione...",
|
||||
"workspace.black.waitlist.enrolled": "Iscritto",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"Quando clicchi su Iscriviti, il tuo abbonamento inizia immediatamente e la tua carta verrà addebitata.",
|
||||
|
||||
"workspace.lite.loading": "Caricamento...",
|
||||
"workspace.lite.time.day": "giorno",
|
||||
"workspace.lite.time.days": "giorni",
|
||||
"workspace.lite.time.hour": "ora",
|
||||
"workspace.lite.time.hours": "ore",
|
||||
"workspace.lite.time.minute": "minuto",
|
||||
"workspace.lite.time.minutes": "minuti",
|
||||
"workspace.lite.time.fewSeconds": "pochi secondi",
|
||||
"workspace.lite.subscription.message": "Sei abbonato a OpenCode Go.",
|
||||
"workspace.lite.subscription.manage": "Gestisci Abbonamento",
|
||||
"workspace.lite.subscription.rollingUsage": "Utilizzo Continuativo",
|
||||
"workspace.lite.subscription.weeklyUsage": "Utilizzo Settimanale",
|
||||
"workspace.lite.subscription.monthlyUsage": "Utilizzo Mensile",
|
||||
"workspace.lite.subscription.resetsIn": "Si resetta tra",
|
||||
"workspace.lite.subscription.useBalance": "Usa il tuo saldo disponibile dopo aver raggiunto i limiti di utilizzo",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
'Seleziona "OpenCode Go" come provider nella tua configurazione opencode per utilizzare i modelli Go.',
|
||||
"workspace.lite.black.message":
|
||||
"Attualmente sei abbonato a OpenCode Black o sei in lista d'attesa. Annulla l'iscrizione prima se desideri passare a Go.",
|
||||
"workspace.lite.other.message":
|
||||
"Un altro membro in questo workspace è già abbonato a OpenCode Go. Solo un membro per workspace può abbonarsi.",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Go parte da {{price}}, poi $10/mese, e offre un accesso affidabile a popolari modelli di coding aperti con generosi limiti di utilizzo.",
|
||||
"workspace.lite.promo.price": "$5 il primo mese",
|
||||
"workspace.lite.promo.modelsTitle": "Cosa è incluso",
|
||||
"workspace.lite.promo.footer":
|
||||
"Il piano è progettato principalmente per gli utenti internazionali, con modelli ospitati in US, EU e Singapore per un accesso globale stabile. I prezzi e i limiti di utilizzo potrebbero cambiare man mano che impariamo dall'utilizzo iniziale e dal feedback.",
|
||||
"workspace.lite.promo.subscribe": "Abbonati a Go",
|
||||
"workspace.lite.promo.subscribing": "Reindirizzamento...",
|
||||
"workspace.lite.promo.otherMethods": "Altri metodi di pagamento",
|
||||
"workspace.lite.promo.selectMethod": "Seleziona metodo di pagamento",
|
||||
|
||||
"download.title": "OpenCode | Download",
|
||||
"download.meta.description": "Scarica OpenCode per macOS, Windows e Linux",
|
||||
"download.hero.title": "Scarica OpenCode",
|
||||
"download.hero.subtitle": "Disponibile in Beta per macOS, Windows e Linux",
|
||||
"download.hero.button": "Scarica per {{os}}",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "OpenCode Extensions",
|
||||
"download.section.integrations": "OpenCode Integrations",
|
||||
"download.action.download": "Scarica",
|
||||
"download.action.install": "Installa",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"Non necessariamente, ma probabilmente. Avrai bisogno di un abbonamento IA se vuoi collegare OpenCode a un provider a pagamento, sebbene tu possa lavorare con",
|
||||
"download.faq.a3.localLink": "modelli locali",
|
||||
"download.faq.a3.afterLocal.beforeZen": "gratuitamente. Mentre incoraggiamo gli utenti a usare",
|
||||
"download.faq.a3.afterZen": ", OpenCode funziona con tutti i provider popolari come OpenAI, Anthropic, xAI ecc.",
|
||||
|
||||
"download.faq.a5.p1": "OpenCode è gratuito al 100%.",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"Eventuali costi aggiuntivi proverranno dal tuo abbonamento a un provider di modelli. Mentre OpenCode funziona con qualsiasi provider di modelli, raccomandiamo di usare",
|
||||
"download.faq.a5.p2.afterZen": ".",
|
||||
|
||||
"download.faq.a6.p1": "I tuoi dati e informazioni sono archiviati solo quando crei link condivisibili in OpenCode.",
|
||||
"download.faq.a6.p2.beforeShare": "Scopri di più sulle",
|
||||
"download.faq.a6.shareLink": "pagine condivise",
|
||||
|
||||
"enterprise.title": "OpenCode | Soluzioni Enterprise per la tua organizzazione",
|
||||
"enterprise.meta.description": "Contatta OpenCode per soluzioni enterprise",
|
||||
"enterprise.hero.title": "Il tuo codice è tuo",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCode opera in modo sicuro all'interno della tua organizzazione senza dati o contesto archiviati e senza restrizioni di licenza o rivendicazioni di proprietà. Inizia una prova con il tuo team, poi distribuisci attraverso la tua organizzazione integrandolo con il tuo SSO e gateway IA interno.",
|
||||
"enterprise.hero.body2": "Facci sapere come possiamo aiutare.",
|
||||
"enterprise.form.name.label": "Nome completo",
|
||||
"enterprise.form.name.placeholder": "Jeff Bezos",
|
||||
"enterprise.form.role.label": "Ruolo",
|
||||
"enterprise.form.role.placeholder": "Presidente Esecutivo",
|
||||
"enterprise.form.company.label": "Azienda",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "Email aziendale",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "Numero di telefono",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "Quale problema stai cercando di risolvere?",
|
||||
"enterprise.form.message.placeholder": "Abbiamo bisogno di aiuto con...",
|
||||
"enterprise.form.send": "Invia",
|
||||
"enterprise.form.sending": "Invio...",
|
||||
"enterprise.form.success": "Messaggio inviato, ti contatteremo presto.",
|
||||
"enterprise.form.success.submitted": "Modulo inviato con successo.",
|
||||
"enterprise.form.error.allFieldsRequired": "Tutti i campi sono obbligatori.",
|
||||
"enterprise.form.error.invalidEmailFormat": "Formato email non valido.",
|
||||
"enterprise.form.error.internalServer": "Errore interno del server.",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "Cos'è OpenCode Enterprise?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterprise è per le organizzazioni che vogliono garantire che il loro codice e dati non lascino mai la loro infrastruttura. Può farlo usando una configurazione centralizzata che si integra con il tuo SSO e gateway IA interno.",
|
||||
"enterprise.faq.q2": "Come inizio con OpenCode Enterprise?",
|
||||
"enterprise.faq.a2":
|
||||
"Inizia semplicemente con una prova interna con il tuo team. OpenCode per impostazione predefinita non archivia il tuo codice o dati di contesto, rendendo facile iniziare. Poi contattaci per discutere prezzi e opzioni di implementazione.",
|
||||
"enterprise.faq.q3": "Come funziona il prezzo enterprise?",
|
||||
"enterprise.faq.a3":
|
||||
"Offriamo prezzi enterprise per postazione. Se hai il tuo gateway LLM, non addebitiamo per i token usati. Per ulteriori dettagli, contattaci per un preventivo personalizzato basato sulle esigenze della tua organizzazione.",
|
||||
"enterprise.faq.q4": "I miei dati sono sicuri con OpenCode Enterprise?",
|
||||
"enterprise.faq.a4":
|
||||
"Sì. OpenCode non archivia il tuo codice o dati di contesto. Tutto il trattamento avviene localmente o attraverso chiamate API dirette al tuo provider IA. Con configurazione centrale e integrazione SSO, i tuoi dati rimangono sicuri all'interno dell'infrastruttura della tua organizzazione.",
|
||||
|
||||
"brand.title": "OpenCode | Brand",
|
||||
"brand.meta.description": "Linee guida del brand OpenCode",
|
||||
"brand.heading": "Linee guida del brand",
|
||||
"brand.subtitle": "Risorse e asset per aiutarti a lavorare con il brand OpenCode.",
|
||||
"brand.downloadAll": "Scarica tutti gli asset",
|
||||
|
||||
"changelog.title": "OpenCode | Changelog",
|
||||
"changelog.meta.description": "Note di rilascio e changelog OpenCode",
|
||||
"changelog.hero.title": "Changelog",
|
||||
"changelog.hero.subtitle": "Nuovi aggiornamenti e miglioramenti a OpenCode",
|
||||
"changelog.empty": "Nessuna voce del changelog trovata.",
|
||||
"changelog.viewJson": "Vedi JSON",
|
||||
|
||||
"bench.list.title": "Benchmark",
|
||||
"bench.list.heading": "Benchmark",
|
||||
"bench.list.table.agent": "Agente",
|
||||
"bench.list.table.model": "Modello",
|
||||
"bench.list.table.score": "Punteggio",
|
||||
"bench.submission.error.allFieldsRequired": "Tutti i campi sono obbligatori.",
|
||||
|
||||
"bench.detail.title": "Benchmark - {{task}}",
|
||||
"bench.detail.notFound": "Task non trovato",
|
||||
"bench.detail.na": "N/D",
|
||||
"bench.detail.labels.agent": "Agente",
|
||||
"bench.detail.labels.model": "Modello",
|
||||
"bench.detail.labels.task": "Task",
|
||||
"bench.detail.labels.repo": "Repo",
|
||||
"bench.detail.labels.from": "Da",
|
||||
"bench.detail.labels.to": "A",
|
||||
"bench.detail.labels.prompt": "Prompt",
|
||||
"bench.detail.labels.commit": "Commit",
|
||||
"bench.detail.labels.averageDuration": "Durata Media",
|
||||
"bench.detail.labels.averageScore": "Punteggio Medio",
|
||||
"bench.detail.labels.averageCost": "Costo Medio",
|
||||
"bench.detail.labels.summary": "Riepilogo",
|
||||
"bench.detail.labels.runs": "Esecuzioni",
|
||||
"bench.detail.labels.score": "Punteggio",
|
||||
"bench.detail.labels.base": "Base",
|
||||
"bench.detail.labels.penalty": "Penalità",
|
||||
"bench.detail.labels.weight": "peso",
|
||||
"bench.detail.table.run": "Esecuzione",
|
||||
"bench.detail.table.score": "Punteggio (Base - Penalità)",
|
||||
"bench.detail.table.cost": "Costo",
|
||||
"bench.detail.table.duration": "Durata",
|
||||
"bench.detail.run.title": "Esecuzione {{n}}",
|
||||
"bench.detail.rawJson": "Raw JSON",
|
||||
} satisfies Dict
|
||||
788
qimingcode/packages/console/app/src/i18n/ja.ts
Normal file
@@ -0,0 +1,788 @@
|
||||
import type { Dict } from "./en"
|
||||
import { dict as en } from "./en"
|
||||
|
||||
export const dict = {
|
||||
...en,
|
||||
"nav.github": "GitHub",
|
||||
"nav.docs": "ドキュメント",
|
||||
"nav.changelog": "変更履歴",
|
||||
"nav.discord": "Discord",
|
||||
"nav.x": "X",
|
||||
"nav.enterprise": "エンタープライズ",
|
||||
"nav.zen": "Zen",
|
||||
"nav.login": "ログイン",
|
||||
"nav.free": "ダウンロード",
|
||||
"nav.home": "ホーム",
|
||||
"nav.openMenu": "メニューを開く",
|
||||
"nav.getStartedFree": "無料ではじめる",
|
||||
"nav.logoAlt": "OpenCode",
|
||||
|
||||
"nav.context.copyLogo": "ロゴをSVGでコピー",
|
||||
"nav.context.copyWordmark": "ワードマークをSVGでコピー",
|
||||
"nav.context.brandAssets": "ブランド素材",
|
||||
|
||||
"footer.github": "GitHub",
|
||||
"footer.docs": "ドキュメント",
|
||||
"footer.changelog": "変更履歴",
|
||||
"footer.discord": "Discord",
|
||||
"footer.x": "X",
|
||||
|
||||
"legal.brand": "ブランド",
|
||||
"legal.privacy": "プライバシー",
|
||||
"legal.terms": "利用規約",
|
||||
|
||||
"email.title": "新製品リリースの情報をいち早く受け取る",
|
||||
"email.subtitle": "早期アクセスのためにウェイトリストに登録してください。",
|
||||
"email.placeholder": "メールアドレス",
|
||||
"email.subscribe": "登録",
|
||||
"email.success": "ほぼ完了です。受信トレイを確認してメールアドレスを認証してください",
|
||||
|
||||
"notFound.title": "見つかりません | OpenCode",
|
||||
"notFound.heading": "404 - ページが見つかりません",
|
||||
"notFound.home": "ホーム",
|
||||
"notFound.docs": "ドキュメント",
|
||||
"notFound.github": "GitHub",
|
||||
"notFound.discord": "Discord",
|
||||
"notFound.logoLightAlt": "opencodeのロゴ(ライト)",
|
||||
"notFound.logoDarkAlt": "opencodeのロゴ(ダーク)",
|
||||
|
||||
"user.logout": "ログアウト",
|
||||
|
||||
"auth.callback.error.codeMissing": "認証コードが見つかりません。",
|
||||
|
||||
"workspace.select": "ワークスペースを選択",
|
||||
"workspace.createNew": "+ 新しいワークスペースを作成",
|
||||
"workspace.modal.title": "新しいワークスペースを作成",
|
||||
"workspace.modal.placeholder": "ワークスペース名を入力",
|
||||
|
||||
"common.cancel": "キャンセル",
|
||||
"common.creating": "作成中...",
|
||||
"common.create": "作成",
|
||||
|
||||
"common.videoUnsupported": "お使いのブラウザは video タグをサポートしていません。",
|
||||
"common.figure": "図 {{n}}.",
|
||||
"common.faq": "FAQ",
|
||||
"common.learnMore": "詳しく見る",
|
||||
|
||||
"error.invalidPlan": "無効なプラン",
|
||||
"error.workspaceRequired": "ワークスペースIDが必要です",
|
||||
"error.alreadySubscribed": "このワークスペースは既にサブスクリプションを持っています",
|
||||
"error.limitRequired": "制限値が必要です。",
|
||||
"error.monthlyLimitInvalid": "有効な月間制限を設定してください。",
|
||||
"error.workspaceNameRequired": "ワークスペース名が必要です。",
|
||||
"error.nameTooLong": "名前は255文字以下である必要があります。",
|
||||
"error.emailRequired": "メールアドレスが必要です",
|
||||
"error.roleRequired": "ロールが必要です",
|
||||
"error.idRequired": "IDが必要です",
|
||||
"error.nameRequired": "名前が必要です",
|
||||
"error.providerRequired": "プロバイダーが必要です",
|
||||
"error.apiKeyRequired": "APIキーが必要です",
|
||||
"error.modelRequired": "モデルが必要です",
|
||||
"error.reloadAmountMin": "リロード額は少なくとも ${{amount}} である必要があります",
|
||||
"error.reloadTriggerMin": "残高トリガーは少なくとも ${{amount}} である必要があります",
|
||||
|
||||
"app.meta.description": "OpenCode - オープンソースのコーディングエージェント。",
|
||||
|
||||
"home.title": "OpenCode | オープンソースのAIコーディングエージェント",
|
||||
|
||||
"temp.title": "OpenCode | ターミナル向けに構築されたAIコーディングエージェント",
|
||||
"temp.hero.title": "ターミナル向けに構築されたAIコーディングエージェント",
|
||||
"temp.zen": "OpenCode Zen",
|
||||
"temp.getStarted": "はじめる",
|
||||
"temp.feature.native.title": "ネイティブ TUI",
|
||||
"temp.feature.native.body": "レスポンシブでネイティブ、テーマ変更可能なターミナルUI",
|
||||
"temp.feature.zen.beforeLink": "OpenCodeが提供する",
|
||||
"temp.feature.zen.link": "厳選されたモデルリスト",
|
||||
"temp.feature.zen.afterLink": "",
|
||||
"temp.feature.models.beforeLink": "ローカルモデルを含む、",
|
||||
"temp.feature.models.afterLink": "を通じて75以上のLLMプロバイダーをサポート",
|
||||
"temp.screenshot.caption": "tokyonight テーマを使用した OpenCode TUI",
|
||||
"temp.screenshot.alt": "tokyonight テーマの OpenCode TUI",
|
||||
"temp.logoLightAlt": "opencodeのロゴ(ライト)",
|
||||
"temp.logoDarkAlt": "opencodeのロゴ(ダーク)",
|
||||
|
||||
"home.banner.badge": "新着",
|
||||
"home.banner.text": "デスクトップアプリのベータ版が利用可能",
|
||||
"home.banner.platforms": "macOS、Windows、Linux で",
|
||||
"home.banner.downloadNow": "今すぐダウンロード",
|
||||
"home.banner.downloadBetaNow": "デスクトップベータ版を今すぐダウンロード",
|
||||
|
||||
"home.hero.title": "オープンソースのAIコーディングエージェント",
|
||||
"home.hero.subtitle.a": "無料モデルが含まれています。また、任意のプロバイダーの任意のモデルに接続でき、",
|
||||
"home.hero.subtitle.b": "Claude、GPT、Gemini などにも対応します。",
|
||||
|
||||
"home.install.ariaLabel": "インストールオプション",
|
||||
|
||||
"home.what.title": "OpenCodeとは?",
|
||||
"home.what.body":
|
||||
"OpenCodeは、ターミナル、IDE、またはデスクトップでのコード作成を支援するオープンソースのエージェントです。",
|
||||
"home.what.lsp.title": "LSP対応",
|
||||
"home.what.lsp.body": "LLMに適したLSPを自動的に読み込みます",
|
||||
"home.what.multiSession.title": "マルチセッション",
|
||||
"home.what.multiSession.body": "同じプロジェクトで複数のエージェントを並行実行できます",
|
||||
"home.what.shareLinks.title": "共有リンク",
|
||||
"home.what.shareLinks.body": "参照やデバッグのために、任意のセッションへのリンクを共有できます",
|
||||
"home.what.copilot.title": "GitHub Copilot",
|
||||
"home.what.copilot.body": "GitHubでログインしてCopilotアカウントを利用できます",
|
||||
"home.what.chatgptPlus.title": "ChatGPT Plus/Pro",
|
||||
"home.what.chatgptPlus.body": "OpenAIでログインしてChatGPT PlusまたはProアカウントを利用できます",
|
||||
"home.what.anyModel.title": "あらゆるモデル",
|
||||
"home.what.anyModel.body": "Models.dev経由で75以上のLLMプロバイダーに対応(ローカルモデル含む)",
|
||||
"home.what.anyEditor.title": "あらゆるエディタ",
|
||||
"home.what.anyEditor.body": "ターミナルインターフェース、デスクトップアプリ、IDE拡張機能として利用できます",
|
||||
"home.what.readDocs": "ドキュメントを読む",
|
||||
|
||||
"home.growth.title": "オープンソースのAIコーディングエージェント",
|
||||
"home.growth.body":
|
||||
"GitHubスター<strong>{{stars}}</strong>以上、コントリビューター<strong>{{contributors}}</strong>人、コミット<strong>{{commits}}</strong>件以上。毎月<strong>{{monthlyUsers}}</strong>人以上の開発者に利用・信頼されています。",
|
||||
"home.growth.githubStars": "GitHubスター",
|
||||
"home.growth.contributors": "コントリビューター",
|
||||
"home.growth.monthlyDevs": "月間開発者数",
|
||||
|
||||
"home.privacy.title": "プライバシーを最優先に設計",
|
||||
"home.privacy.body":
|
||||
"OpenCodeはコードやコンテキストデータを一切保存しないため、プライバシーが重視される環境でも利用できます。",
|
||||
"home.privacy.learnMore": "詳しくは",
|
||||
"home.privacy.link": "プライバシー",
|
||||
|
||||
"home.faq.q1": "OpenCodeとは?",
|
||||
"home.faq.a1":
|
||||
"OpenCodeは、任意のAIモデルでコードの作成・実行を支援するオープンソースのエージェントです。ターミナルベースのインターフェース、デスクトップアプリ、IDE拡張として利用できます。",
|
||||
"home.faq.q2": "OpenCodeの使い方は?",
|
||||
"home.faq.a2.before": "最も簡単な始め方は",
|
||||
"home.faq.a2.link": "イントロを読む",
|
||||
"home.faq.q3": "OpenCodeには追加のAIサブスクリプションが必要ですか?",
|
||||
"home.faq.a3.p1": "必ずしも必要ではありません。OpenCodeには、アカウント不要で使える無料モデルが含まれています。",
|
||||
"home.faq.a3.p2.beforeZen": "これらに加えて、",
|
||||
"home.faq.a3.p2.afterZen": " アカウントを作成することで、人気のコーディングモデルを利用できます。",
|
||||
"home.faq.a3.p3":
|
||||
"Zenの利用を推奨していますが、OpenCodeはOpenAI、Anthropic、xAIなどの主要プロバイダーにも対応しています。",
|
||||
"home.faq.a3.p4.beforeLocal": "さらに、",
|
||||
"home.faq.a3.p4.localLink": "ローカルモデル",
|
||||
"home.faq.q4": "既存のAIサブスクリプションをOpenCodeで使えますか?",
|
||||
"home.faq.a4.p1":
|
||||
"はい、OpenCodeは主要プロバイダーのサブスクリプションプランに対応しています。Claude Pro/Max、ChatGPT Plus/Pro、GitHub Copilotのサブスクリプションを利用できます。",
|
||||
"home.faq.q5": "ターミナルだけで使えますか?",
|
||||
"home.faq.a5.beforeDesktop": "もう違います!OpenCodeは今は",
|
||||
"home.faq.a5.desktop": "デスクトップ",
|
||||
"home.faq.a5.and": "と",
|
||||
"home.faq.a5.web": "ウェブ",
|
||||
"home.faq.q6": "OpenCodeの価格は?",
|
||||
"home.faq.a6":
|
||||
"OpenCodeは100%無料で使えます。無料モデルも含まれています。他のプロバイダーに接続する場合は追加費用が発生することがあります。",
|
||||
"home.faq.q7": "データとプライバシーは?",
|
||||
"home.faq.a7.p1": "無料モデルを使う場合や共有リンクを作成する場合にのみ、データが保存されます。",
|
||||
"home.faq.a7.p2.beforeModels": "詳しくは",
|
||||
"home.faq.a7.p2.modelsLink": "モデルのプライバシー",
|
||||
"home.faq.a7.p2.and": "と",
|
||||
"home.faq.a7.p2.shareLink": "共有ページのプライバシー",
|
||||
"home.faq.q8": "OpenCodeはオープンソースですか?",
|
||||
"home.faq.a8.p1": "はい、OpenCodeは完全にオープンソースです。ソースコードは",
|
||||
"home.faq.a8.p2": "の",
|
||||
"home.faq.a8.mitLicense": "MITライセンス",
|
||||
"home.faq.a8.p3":
|
||||
"のもとで公開されており、誰でも使用、変更、開発への参加ができます。コミュニティの誰でもissueを起こしたり、pull requestを送ったり、機能を拡張できます。",
|
||||
|
||||
"home.zenCta.title": "コーディングエージェント向けの信頼できる最適化モデル",
|
||||
"home.zenCta.body":
|
||||
"Zenは、OpenCodeがコーディングエージェント向けにテスト・ベンチマーク済みのAIモデルを厳選して提供します。プロバイダー間の性能・品質のブレを気にせず、検証済みのモデルを利用できます。",
|
||||
"home.zenCta.link": "Zenについて知る",
|
||||
|
||||
"zen.title": "OpenCode Zen | コーディングエージェント向けの信頼できる最適化モデル",
|
||||
"zen.hero.title": "コーディングエージェント向けの信頼できる最適化モデル",
|
||||
"zen.hero.body":
|
||||
"Zenは、OpenCodeがコーディングエージェント向けにテスト・ベンチマーク済みのAIモデルを厳選して提供します。プロバイダー間の性能・品質のブレを気にせず、検証済みのモデルを利用できます。",
|
||||
|
||||
"zen.faq.q1": "OpenCode Zenとは?",
|
||||
"zen.faq.a1":
|
||||
"Zenは、OpenCodeのチームが作成した、コーディングエージェント向けにテスト・ベンチマークされたAIモデルの厳選セットです。",
|
||||
"zen.faq.q2": "Zenはなぜ精度が高いのですか?",
|
||||
"zen.faq.a2":
|
||||
"Zenはコーディングエージェント向けにテスト・ベンチマークされたモデルだけを提供します。ステーキを切るのにバターナイフを使わないように、コーディングには品質の低いモデルを使わないでください。",
|
||||
"zen.faq.q3": "Zenは安いですか?",
|
||||
"zen.faq.a3":
|
||||
"Zenは営利目的ではありません。Zenはモデル提供元のコストをそのままあなたに渡します。Zenの利用が増えるほど、OpenCodeはより良いレートを交渉し、その分をあなたに還元できます。",
|
||||
"zen.faq.q4": "Zenの料金は?",
|
||||
"zen.faq.a4.p1.beforePricing": "Zenは",
|
||||
"zen.faq.a4.p1.pricingLink": "リクエスト単位で課金",
|
||||
"zen.faq.a4.p1.afterPricing": "し、マークアップはありません。つまり、モデル提供元の請求額をそのまま支払います。",
|
||||
"zen.faq.a4.p2.beforeAccount": "総コストは利用量に依存し、月次の支出上限を",
|
||||
"zen.faq.a4.p2.accountLink": "アカウント",
|
||||
"zen.faq.a4.p3": "コストを賄うために、OpenCodeは$20の残高チャージあたり$1.23の小さな決済手数料のみを追加します。",
|
||||
"zen.faq.q5": "データとプライバシーは?",
|
||||
"zen.faq.a5.beforeExceptions":
|
||||
"Zenのモデルはすべて米国でホストされています。プロバイダーはゼロ保持ポリシーを守り、データをモデル学習に使用しません(",
|
||||
"zen.faq.a5.exceptionsLink": "以下の例外",
|
||||
"zen.faq.q6": "支出上限を設定できますか?",
|
||||
"zen.faq.a6": "はい、アカウントで月次の支出上限を設定できます。",
|
||||
"zen.faq.q7": "キャンセルできますか?",
|
||||
"zen.faq.a7": "はい、いつでも請求を無効化し、残りの残高を利用できます。",
|
||||
"zen.faq.q8": "他のコーディングエージェントでもZenを使えますか?",
|
||||
"zen.faq.a8":
|
||||
"ZenはOpenCodeとの相性が良いですが、どのエージェントでもZenを利用できます。お使いのコーディングエージェントのセットアップ手順に従ってください。",
|
||||
|
||||
"zen.cta.start": "Zenをはじめる",
|
||||
"zen.pricing.title": "$20の従量課金制残高を追加",
|
||||
"zen.pricing.fee": "(+$1.23 カード処理手数料)",
|
||||
"zen.pricing.body":
|
||||
"任意のエージェントと一緒に使用できます。毎月の支出制限を設定できます。いつでもキャンセルできます。",
|
||||
"zen.problem.title": "Zenはどのような問題を解決していますか?",
|
||||
"zen.problem.body":
|
||||
"利用可能なモデルは非常に多くありますが、コーディングエージェントで適切に機能するモデルはほんのわずかです。ほとんどのプロバイダーは、それらを異なる設定で提供し、結果も異なります。",
|
||||
"zen.problem.subtitle": "OpenCodeユーザーだけでなく、すべての人を対象にこの問題を修正しています。",
|
||||
"zen.problem.item1": "選択したモデルをテストし、チームに相談する",
|
||||
"zen.problem.item2": "プロバイダーと連携して適切に提供されるようにする",
|
||||
"zen.problem.item3": "私たちが推奨するすべてのモデルとプロバイダーの組み合わせをベンチマークする",
|
||||
"zen.how.title": "Zenの仕組み",
|
||||
"zen.how.body": "ZenをOpenCodeとともに使用することをお勧めしますが、Zenはどのエージェントでも使用できます。",
|
||||
"zen.how.step1.title": "サインアップして$20の残高を追加",
|
||||
"zen.how.step1.beforeLink": "",
|
||||
"zen.how.step1.link": "セットアップ手順",
|
||||
"zen.how.step2.title": "透明性のある価格設定でZenを使用する",
|
||||
"zen.how.step2.link": "リクエストごとに支払う",
|
||||
"zen.how.step2.afterLink": "(マークアップなし)",
|
||||
"zen.how.step3.title": "自動チャージ",
|
||||
"zen.how.step3.body": "残高が$5に達すると、自動的に$20が追加されます",
|
||||
"zen.privacy.title": "あなたのプライバシーは私たちにとって重要です",
|
||||
"zen.privacy.beforeExceptions":
|
||||
"すべてのZenモデルは米国でホストされています。プロバイダーはゼロ保持ポリシーに従い、モデルのトレーニングにデータを使用しません(",
|
||||
"zen.privacy.exceptionsLink": "以下の例外",
|
||||
|
||||
"go.title": "OpenCode Go | すべての人のための低価格なコーディングモデル",
|
||||
"go.meta.description":
|
||||
"Goは最初の月$5、その後$10/月で、GLM-5.1、GLM-5、Kimi K2.5、Kimi K2.6、MiMo-V2-Pro、MiMo-V2-Omni、MiMo-V2.5-Pro、MiMo-V2.5、Qwen3.5 Plus、Qwen3.6 Plus、MiniMax M2.5、MiniMax M2.7、DeepSeek V4 Pro、DeepSeek V4 Flashに対して5時間のゆとりあるリクエスト上限があります。",
|
||||
"go.hero.title": "すべての人のための低価格なコーディングモデル",
|
||||
"go.hero.body":
|
||||
"Goは、世界中のプログラマーにエージェント型コーディングをもたらします。最も高性能なオープンソースモデルへの十分な制限と安定したアクセスを提供し、コストや可用性を気にすることなく強力なエージェントで構築できます。",
|
||||
|
||||
"go.cta.start": "Goを購読する",
|
||||
"go.cta.template": "{{text}} {{price}}",
|
||||
"go.cta.text": "Goを購読する",
|
||||
"go.cta.price": "$10/月",
|
||||
"go.cta.promo": "初月 $5",
|
||||
"go.pricing.body":
|
||||
"どのエージェントでも使えます。最初の月$5、その後$10/月。必要に応じてクレジットを追加。いつでもキャンセルできます。",
|
||||
"go.banner.badge": "3x",
|
||||
"go.banner.text": "Kimi K2.6、4月27日まで利用上限が3倍に",
|
||||
"go.graph.free": "無料",
|
||||
"go.graph.freePill": "Big Pickleと無料モデル",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "5時間あたりのリクエスト数",
|
||||
"go.graph.usageLimits": "利用制限",
|
||||
"go.graph.tick": "{{n}}倍",
|
||||
"go.graph.aria": "5時間あたりのリクエスト数: {{free}} 対 {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "元CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "は人生を変えるものでした。本当に迷う必要はありません。",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "元創業者, SEED, PM, Melt, Pop, Dapt, Cadmus, ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "チームの5人中4人が",
|
||||
"go.testimonials.jay.quoteAfter": "の使用を気に入っています。",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "元Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "私は",
|
||||
"go.testimonials.adam.quoteAfter": "をどれだけ推薦してもしきれません。真剣に、本当に良いです。",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "元デザイン責任者, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "",
|
||||
"go.testimonials.david.quoteAfter":
|
||||
"を使えば、すべてのモデルがテスト済みでコーディングエージェントに最適だと確信できます。",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "元インターン, Nvidia (4回)",
|
||||
"go.testimonials.frank.quote": "まだNvidiaにいられたらよかったのに。",
|
||||
"go.problem.title": "Goはどのような問題を解決していますか?",
|
||||
"go.problem.body":
|
||||
"私たちはOpenCodeの体験をできるだけ多くの人に届けることに注力しています。OpenCode Goは低価格のサブスクリプションで、最初の月は$5、その後は$10/月です。ゆとりある上限と、最も高性能なオープンソースモデルへの信頼できるアクセスを提供します。",
|
||||
"go.problem.subtitle": " ",
|
||||
"go.problem.item1": "低価格なサブスクリプション料金",
|
||||
"go.problem.item2": "十分な制限と安定したアクセス",
|
||||
"go.problem.item3": "できるだけ多くのプログラマーのために構築",
|
||||
"go.problem.item4":
|
||||
"GLM-5.1、GLM-5、Kimi K2.5、Kimi K2.6、MiMo-V2-Pro、MiMo-V2-Omni、MiMo-V2.5-Pro、MiMo-V2.5、Qwen3.5 Plus、Qwen3.6 Plus、MiniMax M2.5、MiniMax M2.7、DeepSeek V4 Pro、DeepSeek V4 Flashを含む",
|
||||
"go.how.title": "Goの仕組み",
|
||||
"go.how.body": "Goは最初の月$5、その後$10/月で始まります。OpenCodeまたは任意のエージェントで使えます。",
|
||||
"go.how.step1.title": "アカウントを作成",
|
||||
"go.how.step1.beforeLink": "",
|
||||
"go.how.step1.link": "セットアップ手順はこちら",
|
||||
"go.how.step2.title": "Goを購読する",
|
||||
"go.how.step2.link": "最初の月$5",
|
||||
"go.how.step2.afterLink": "その後$10/月、ゆとりある上限付き",
|
||||
"go.how.step3.title": "コーディングを開始",
|
||||
"go.how.step3.body": "オープンソースモデルへの安定したアクセスで",
|
||||
"go.privacy.title": "あなたのプライバシーは私たちにとって重要です",
|
||||
"go.privacy.body":
|
||||
"このプランは主に海外ユーザー向けに設計されており、米国、EU、シンガポールでホストされたモデルにより安定したグローバルアクセスを提供します。",
|
||||
"go.privacy.contactAfter": "ご質問がございましたら。",
|
||||
"go.privacy.beforeExceptions":
|
||||
"Goのモデルは米国でホストされています。プロバイダーはゼロ保持ポリシーに従い、モデルのトレーニングにデータを使用しません(",
|
||||
"go.privacy.exceptionsLink": "以下の例外",
|
||||
"go.faq.q1": "OpenCode Goとは?",
|
||||
"go.faq.a1":
|
||||
"Goは、エージェント型コーディングのための有能なオープンソースモデルへの安定したアクセスを提供する低価格なサブスクリプションです。",
|
||||
"go.faq.q2": "Goにはどのモデルが含まれますか?",
|
||||
"go.faq.a2": "Go には、十分な利用上限と安定したアクセスを備えた、以下のモデルが含まれます。",
|
||||
"go.faq.q3": "GoはZenと同じですか?",
|
||||
"go.faq.a3":
|
||||
"いいえ。Zenは従量課金制ですが、Goは最初の月$5、その後$10/月で始まり、GLM-5.1、GLM-5、Kimi K2.5、Kimi K2.6、MiMo-V2-Pro、MiMo-V2-Omni、MiMo-V2.5-Pro、MiMo-V2.5、Qwen3.5 Plus、Qwen3.6 Plus、MiniMax M2.5、MiniMax M2.7、DeepSeek V4 Pro、DeepSeek V4 Flashのオープンソースモデルに対して、ゆとりある上限と信頼できるアクセスを提供します。",
|
||||
"go.faq.q4": "Goの料金は?",
|
||||
"go.faq.a4.p1.beforePricing": "Goは",
|
||||
"go.faq.a4.p1.pricingLink": "最初の月$5",
|
||||
"go.faq.a4.p1.afterPricing": "その後$10/月、ゆとりある上限付き。",
|
||||
"go.faq.a4.p2.beforeAccount": "管理画面:",
|
||||
"go.faq.a4.p2.accountLink": "アカウント",
|
||||
"go.faq.a4.p3": "いつでもキャンセル可能です。",
|
||||
"go.faq.q5": "データとプライバシーは?",
|
||||
"go.faq.a5.body":
|
||||
"このプランは主に海外ユーザー向けに設計されており、米国、EU、シンガポールでホストされたモデルにより安定したグローバルアクセスを提供します。プロバイダーはゼロ保持ポリシーに従い、お客様のデータをモデルのトレーニングに使用しません。",
|
||||
"go.faq.a5.beforeExceptions":
|
||||
"Goのモデルは米国でホストされています。プロバイダーはゼロ保持ポリシーに従い、モデルのトレーニングにデータを使用しません(",
|
||||
"go.faq.a5.exceptionsLink": "以下の例外",
|
||||
"go.faq.q6": "クレジットをチャージできますか?",
|
||||
"go.faq.a6": "利用枠を追加したい場合は、アカウントでクレジットをチャージできます。",
|
||||
"go.faq.q7": "キャンセルできますか?",
|
||||
"go.faq.a7": "はい、いつでもキャンセル可能です。",
|
||||
"go.faq.q8": "他のコーディングエージェントでGoを使えますか?",
|
||||
"go.faq.a8":
|
||||
"はい、Goは任意のエージェントで使用できます。お使いのコーディングエージェントのセットアップ手順に従ってください。",
|
||||
|
||||
"go.faq.q9": "無料モデルとGoの違いは何ですか?",
|
||||
"go.faq.a9":
|
||||
"無料モデルにはBig Pickleと、その時点で利用可能なプロモーションモデルが含まれ、1日200リクエストの制限があります。GoにはGLM-5.1、GLM-5、Kimi K2.5、Kimi K2.6、MiMo-V2-Pro、MiMo-V2-Omni、MiMo-V2.5-Pro、MiMo-V2.5、Qwen3.5 Plus、Qwen3.6 Plus、MiniMax M2.5、MiniMax M2.7、DeepSeek V4 Pro、DeepSeek V4 Flashが含まれ、ローリングウィンドウ(5時間、週間、月間)全体でより高いリクエスト制限が適用されます。これは概算で5時間あたり$12、週間$30、月間$60相当です(実際のリクエスト数はモデルと使用状況により異なります)。",
|
||||
|
||||
"zen.api.error.rateLimitExceeded": "レート制限を超えました。後でもう一度お試しください。",
|
||||
"zen.api.error.modelNotSupported": "モデル {{model}} はサポートされていません",
|
||||
"zen.api.error.modelFormatNotSupported": "フォーマット {{format}} ではモデル {{model}} はサポートされていません",
|
||||
"zen.api.error.noProviderAvailable": "利用可能なプロバイダーがありません",
|
||||
"zen.api.error.providerNotSupported": "プロバイダー {{provider}} はサポートされていません",
|
||||
"zen.api.error.missingApiKey": "APIキーがありません。",
|
||||
"zen.api.error.invalidApiKey": "無効なAPIキーです。",
|
||||
"zen.api.error.subscriptionQuotaExceeded":
|
||||
"サブスクリプションの制限を超えました。{{retryIn}} 後に再試行してください。",
|
||||
"zen.api.error.subscriptionQuotaExceededUseFreeModels":
|
||||
"サブスクリプションの制限を超えました。無料モデルは引き続きご利用いただけます。",
|
||||
"zen.api.error.noPaymentMethod": "お支払い方法がありません。こちらからお支払い方法を追加してください: {{billingUrl}}",
|
||||
"zen.api.error.insufficientBalance": "残高が不足しています。こちらから請求を管理してください: {{billingUrl}}",
|
||||
"zen.api.error.workspaceMonthlyLimitReached":
|
||||
"ワークスペースが月額の利用上限 ${{amount}} に達しました。こちらから上限を管理してください: {{billingUrl}}",
|
||||
"zen.api.error.userMonthlyLimitReached":
|
||||
"月額の利用上限 ${{amount}} に達しました。こちらから上限を管理してください: {{membersUrl}}",
|
||||
"zen.api.error.modelDisabled": "モデルが無効です",
|
||||
"zen.api.error.trialEnded":
|
||||
"{{model}} の無料プロモーションは終了しました。OpenCode Go を購読するとモデルを引き続き使用できます - {{link}}",
|
||||
|
||||
"black.meta.title": "OpenCode Black | 世界最高峰のコーディングモデルすべてにアクセス",
|
||||
"black.meta.description": "OpenCode Black サブスクリプションプランで、Claude、GPT、Gemini などにアクセス。",
|
||||
"black.hero.title": "世界最高峰のコーディングモデルすべてにアクセス",
|
||||
"black.hero.subtitle": "Claude、GPT、Gemini などを含む",
|
||||
"black.title": "OpenCode Black | 料金",
|
||||
"black.paused": "Blackプランの登録は一時的に停止しています。",
|
||||
"black.plan.icon20": "Black 20 プラン",
|
||||
"black.plan.icon100": "Black 100 プラン",
|
||||
"black.plan.icon200": "Black 200 プラン",
|
||||
"black.plan.multiplier100": "Black 20 の5倍の利用量",
|
||||
"black.plan.multiplier200": "Black 20 の20倍の利用量",
|
||||
"black.price.perMonth": "/月",
|
||||
"black.price.perPersonBilledMonthly": "1人あたり / 月額請求",
|
||||
"black.terms.1": "サブスクリプションはすぐには開始されません",
|
||||
"black.terms.2": "ウェイトリストに追加され、まもなく有効化されます",
|
||||
"black.terms.3": "サブスクリプションが有効化された時点でのみカードに請求されます",
|
||||
"black.terms.4": "利用制限が適用されます。過度な自動化利用は早く制限に達する可能性があります",
|
||||
"black.terms.5": "サブスクリプションは個人向けです。チーム利用はエンタープライズにお問い合わせください",
|
||||
"black.terms.6": "将来的に制限が調整されたり、プランが廃止される可能性があります",
|
||||
"black.terms.7": "サブスクリプションはいつでもキャンセル可能です",
|
||||
"black.action.continue": "続ける",
|
||||
"black.finePrint.beforeTerms": "表示価格には適用される税金は含まれていません",
|
||||
"black.finePrint.terms": "利用規約",
|
||||
"black.workspace.title": "OpenCode Black | ワークスペースの選択",
|
||||
"black.workspace.selectPlan": "このプランのワークスペースを選択してください",
|
||||
"black.workspace.name": "ワークスペース {{n}}",
|
||||
"black.subscribe.title": "OpenCode Black を購読する",
|
||||
"black.subscribe.paymentMethod": "支払い方法",
|
||||
"black.subscribe.loadingPaymentForm": "支払いフォームを読み込み中...",
|
||||
"black.subscribe.selectWorkspaceToContinue": "続けるにはワークスペースを選択してください",
|
||||
"black.subscribe.failurePrefix": "おっと!",
|
||||
"black.subscribe.error.generic": "エラーが発生しました",
|
||||
"black.subscribe.error.invalidPlan": "無効なプランです",
|
||||
"black.subscribe.error.workspaceRequired": "ワークスペースIDが必要です",
|
||||
"black.subscribe.error.alreadySubscribed": "このワークスペースは既にサブスクリプションを持っています",
|
||||
"black.subscribe.processing": "処理中...",
|
||||
"black.subscribe.submit": "購読する ${{plan}}",
|
||||
"black.subscribe.form.chargeNotice": "サブスクリプションが有効化された時点でのみ請求されます",
|
||||
"black.subscribe.success.title": "OpenCode Black ウェイトリストに登録されました",
|
||||
"black.subscribe.success.subscriptionPlan": "サブスクリプションプラン",
|
||||
"black.subscribe.success.planName": "OpenCode Black {{plan}}",
|
||||
"black.subscribe.success.amount": "金額",
|
||||
"black.subscribe.success.amountValue": "${{plan}} / 月",
|
||||
"black.subscribe.success.paymentMethod": "支払い方法",
|
||||
"black.subscribe.success.dateJoined": "登録日",
|
||||
"black.subscribe.success.chargeNotice": "サブスクリプションが有効化された時点でカードに請求されます",
|
||||
|
||||
"workspace.nav.zen": "Zen",
|
||||
"workspace.nav.go": "Go",
|
||||
"workspace.nav.usage": "利用",
|
||||
"workspace.nav.apiKeys": "APIキー",
|
||||
"workspace.nav.members": "メンバー",
|
||||
"workspace.nav.billing": "請求",
|
||||
"workspace.nav.settings": "設定",
|
||||
|
||||
"workspace.home.banner.beforeLink": "コーディングエージェント向けに信頼性の高い最適化されたモデル。",
|
||||
"workspace.lite.banner.beforeLink": "誰でも使える低コストコーディングモデル。",
|
||||
"workspace.home.billing.loading": "読み込み中...",
|
||||
"workspace.home.billing.enable": "課金を有効にする",
|
||||
"workspace.home.billing.currentBalance": "現在の残高",
|
||||
|
||||
"workspace.newUser.feature.tested.title": "テスト・検証済みモデル",
|
||||
"workspace.newUser.feature.tested.body":
|
||||
"最高のパフォーマンスを保証するために、コーディングエージェントに特化したモデルのベンチマークとテストを行いました。",
|
||||
"workspace.newUser.feature.quality.title": "最高品質",
|
||||
"workspace.newUser.feature.quality.body":
|
||||
"最適なパフォーマンスを実現するように構成されたモデルにアクセスします。ダウングレードや安価なプロバイダーへのルーティングはありません。",
|
||||
"workspace.newUser.feature.lockin.title": "ロックインなし",
|
||||
"workspace.newUser.feature.lockin.body":
|
||||
"任意のコーディングエージェントでZenを使用でき、必要に応じていつでもOpenCodeを備えた他のプロバイダーを使用し続けることができます。",
|
||||
"workspace.newUser.copyApiKey": "APIキーをコピー",
|
||||
"workspace.newUser.copyKey": "キーをコピー",
|
||||
"workspace.newUser.copied": "コピーしました!",
|
||||
"workspace.newUser.step.enableBilling": "課金を有効にする",
|
||||
"workspace.newUser.step.login.before": "実行",
|
||||
"workspace.newUser.step.login.after": "してOpenCodeを選択",
|
||||
"workspace.newUser.step.pasteKey": "APIキーを貼り付け",
|
||||
"workspace.newUser.step.models.before": "OpenCodeを起動し実行",
|
||||
"workspace.newUser.step.models.after": "してモデルを選択",
|
||||
|
||||
"workspace.models.title": "モデル",
|
||||
"workspace.models.subtitle.beforeLink": "ワークスペースのメンバーがアクセスできるモデルを管理します。",
|
||||
"workspace.models.table.model": "モデル",
|
||||
"workspace.models.table.enabled": "有効",
|
||||
|
||||
"workspace.providers.title": "APIキーの設定",
|
||||
"workspace.providers.subtitle": "AIプロバイダーの独自のAPIキーを設定します。",
|
||||
"workspace.providers.placeholder": "{{provider}} APIキーを入力 ({{prefix}}...)",
|
||||
"workspace.providers.configure": "設定",
|
||||
"workspace.providers.edit": "編集",
|
||||
"workspace.providers.delete": "削除",
|
||||
"workspace.providers.saving": "保存中...",
|
||||
"workspace.providers.save": "保存",
|
||||
"workspace.providers.table.provider": "プロバイダー",
|
||||
"workspace.providers.table.apiKey": "APIキー",
|
||||
|
||||
"workspace.usage.title": "利用履歴",
|
||||
"workspace.usage.subtitle": "最近のAPIの使用状況とコスト。",
|
||||
"workspace.usage.empty": "開始するには、最初のAPI呼び出しを行ってください。",
|
||||
"workspace.usage.table.date": "日付",
|
||||
"workspace.usage.table.model": "モデル",
|
||||
"workspace.usage.table.input": "入力",
|
||||
"workspace.usage.table.output": "出力",
|
||||
"workspace.usage.table.cost": "コスト",
|
||||
"workspace.usage.table.session": "セッション",
|
||||
"workspace.usage.breakdown.input": "入力",
|
||||
"workspace.usage.breakdown.cacheRead": "キャッシュ読み取り",
|
||||
"workspace.usage.breakdown.cacheWrite": "キャッシュ書き込み",
|
||||
"workspace.usage.breakdown.output": "出力",
|
||||
"workspace.usage.breakdown.reasoning": "推論",
|
||||
"workspace.usage.subscription": "Black (${{amount}})",
|
||||
"workspace.usage.lite": "Go (${{amount}})",
|
||||
"workspace.usage.byok": "BYOK (${{amount}})",
|
||||
|
||||
"workspace.cost.title": "コスト",
|
||||
"workspace.cost.subtitle": "モデルごとの使用料金の内訳。",
|
||||
"workspace.cost.allModels": "全モデル",
|
||||
"workspace.cost.allKeys": "すべてのキー",
|
||||
"workspace.cost.deletedSuffix": "(削除済み)",
|
||||
"workspace.cost.empty": "選択した期間の使用状況データはありません。",
|
||||
"workspace.cost.subscriptionShort": "サブ",
|
||||
|
||||
"workspace.keys.title": "APIキー",
|
||||
"workspace.keys.subtitle": "OpenCodeサービスにアクセスするためのAPIキーを管理します。",
|
||||
"workspace.keys.create": "APIキーの作成",
|
||||
"workspace.keys.placeholder": "キー名を入力してください",
|
||||
"workspace.keys.empty": "OpenCodeゲートウェイAPIキーを作成する",
|
||||
"workspace.keys.table.name": "名前",
|
||||
"workspace.keys.table.key": "キー",
|
||||
"workspace.keys.table.createdBy": "作成者",
|
||||
"workspace.keys.table.lastUsed": "最終利用",
|
||||
"workspace.keys.copyApiKey": "APIキーをコピー",
|
||||
"workspace.keys.delete": "削除",
|
||||
|
||||
"workspace.members.title": "メンバー",
|
||||
"workspace.members.subtitle": "ワークスペースのメンバーとその権限を管理します。",
|
||||
"workspace.members.invite": "メンバーを招待",
|
||||
"workspace.members.inviting": "招待中...",
|
||||
"workspace.members.beta.beforeLink": "ベータ期間中、チームはワークスペースを無料で利用できます。",
|
||||
"workspace.members.form.invitee": "招待する人",
|
||||
"workspace.members.form.emailPlaceholder": "メールアドレスを入力",
|
||||
"workspace.members.form.role": "ロール",
|
||||
"workspace.members.form.monthlyLimit": "月間支出上限",
|
||||
"workspace.members.noLimit": "制限なし",
|
||||
"workspace.members.noLimitLowercase": "制限なし",
|
||||
"workspace.members.invited": "招待済み",
|
||||
"workspace.members.edit": "編集",
|
||||
"workspace.members.delete": "削除",
|
||||
"workspace.members.saving": "保存中...",
|
||||
"workspace.members.save": "保存",
|
||||
"workspace.members.table.email": "メールアドレス",
|
||||
"workspace.members.table.role": "ロール",
|
||||
"workspace.members.table.monthLimit": "月間上限",
|
||||
"workspace.members.role.admin": "管理者",
|
||||
"workspace.members.role.adminDescription": "モデル、メンバー、請求を管理できます",
|
||||
"workspace.members.role.member": "メンバー",
|
||||
"workspace.members.role.memberDescription": "自分自身のAPIキーのみを生成できます",
|
||||
|
||||
"workspace.settings.title": "設定",
|
||||
"workspace.settings.subtitle": "ワークスペース名と設定を更新します。",
|
||||
"workspace.settings.workspaceName": "ワークスペース名",
|
||||
"workspace.settings.defaultName": "デフォルト",
|
||||
"workspace.settings.updating": "更新中...",
|
||||
"workspace.settings.save": "保存",
|
||||
"workspace.settings.edit": "編集",
|
||||
|
||||
"workspace.billing.title": "請求",
|
||||
"workspace.billing.subtitle.beforeLink": "支払い方法を管理します。",
|
||||
"workspace.billing.contactUs": "お問い合わせ",
|
||||
"workspace.billing.subtitle.afterLink": "ご質問がございましたら。",
|
||||
"workspace.billing.currentBalance": "現在の残高",
|
||||
"workspace.billing.add": "$を追加",
|
||||
"workspace.billing.enterAmount": "金額を入力",
|
||||
"workspace.billing.loading": "読み込み中...",
|
||||
"workspace.billing.addAction": "追加",
|
||||
"workspace.billing.addBalance": "残高を追加",
|
||||
"workspace.billing.alipay": "Alipay",
|
||||
"workspace.billing.wechat": "WeChat Pay",
|
||||
"workspace.billing.linkedToStripe": "Stripeと連携済み",
|
||||
"workspace.billing.manage": "管理",
|
||||
"workspace.billing.enable": "課金を有効にする",
|
||||
|
||||
"workspace.monthlyLimit.title": "月間上限",
|
||||
"workspace.monthlyLimit.subtitle": "アカウントの月間使用制限を設定します。",
|
||||
"workspace.monthlyLimit.placeholder": "50",
|
||||
"workspace.monthlyLimit.setting": "設定中...",
|
||||
"workspace.monthlyLimit.set": "設定",
|
||||
"workspace.monthlyLimit.edit": "上限を編集",
|
||||
"workspace.monthlyLimit.noLimit": "使用制限は設定されていません。",
|
||||
"workspace.monthlyLimit.currentUsage.beforeMonth": "現在の使用状況(",
|
||||
"workspace.monthlyLimit.currentUsage.beforeAmount": ")は $",
|
||||
|
||||
"workspace.redeem.title": "クーポンを利用",
|
||||
"workspace.redeem.subtitle": "クーポンコードを利用して、クレジットや特典を受け取ります。",
|
||||
"workspace.redeem.placeholder": "クーポンコードを入力",
|
||||
"workspace.redeem.redeem": "利用する",
|
||||
"workspace.redeem.redeeming": "利用中...",
|
||||
"workspace.redeem.success": "クーポンを利用しました。",
|
||||
|
||||
"workspace.reload.title": "自動チャージ",
|
||||
"workspace.reload.disabled.before": "自動チャージは",
|
||||
"workspace.reload.disabled.state": "無効",
|
||||
"workspace.reload.disabled.after": "です。残高が少なくなったときに自動的にチャージするには有効にしてください。",
|
||||
"workspace.reload.enabled.before": "自動チャージは",
|
||||
"workspace.reload.enabled.state": "有効",
|
||||
"workspace.reload.enabled.middle": "チャージします(",
|
||||
"workspace.reload.processingFee": "手数料",
|
||||
"workspace.reload.enabled.after": ")。残高が以下に達したとき:",
|
||||
"workspace.reload.edit": "編集",
|
||||
"workspace.reload.enable": "有効にする",
|
||||
"workspace.reload.enableAutoReload": "自動チャージを有効にする",
|
||||
"workspace.reload.reloadAmount": "チャージ額 $",
|
||||
"workspace.reload.whenBalanceReaches": "残高が $ に達したとき",
|
||||
"workspace.reload.saving": "保存中...",
|
||||
"workspace.reload.save": "保存",
|
||||
"workspace.reload.failedAt": "チャージ失敗:",
|
||||
"workspace.reload.reason": "理由:",
|
||||
"workspace.reload.updatePaymentMethod": "支払い方法を更新して、もう一度お試しください。",
|
||||
"workspace.reload.retrying": "再試行中...",
|
||||
"workspace.reload.retry": "再試行",
|
||||
"workspace.reload.error.paymentFailed": "支払いに失敗しました。",
|
||||
|
||||
"workspace.payments.title": "支払い履歴",
|
||||
"workspace.payments.subtitle": "最近の支払い取引。",
|
||||
"workspace.payments.table.date": "日付",
|
||||
"workspace.payments.table.paymentId": "支払いID",
|
||||
"workspace.payments.table.amount": "金額",
|
||||
"workspace.payments.table.receipt": "領収書",
|
||||
"workspace.payments.type.credit": "クレジット",
|
||||
"workspace.payments.type.subscription": "サブスクリプション",
|
||||
"workspace.payments.view": "表示",
|
||||
|
||||
"workspace.black.loading": "読み込み中...",
|
||||
"workspace.black.time.day": "日",
|
||||
"workspace.black.time.days": "日",
|
||||
"workspace.black.time.hour": "時間",
|
||||
"workspace.black.time.hours": "時間",
|
||||
"workspace.black.time.minute": "分",
|
||||
"workspace.black.time.minutes": "分",
|
||||
"workspace.black.time.fewSeconds": "数秒",
|
||||
"workspace.black.subscription.title": "サブスクリプション",
|
||||
"workspace.black.subscription.message": "あなたは OpenCode Black を月額 ${{plan}} で購読しています。",
|
||||
"workspace.black.subscription.manage": "サブスクリプションの管理",
|
||||
"workspace.black.subscription.rollingUsage": "5時間利用",
|
||||
"workspace.black.subscription.weeklyUsage": "週間利用量",
|
||||
"workspace.black.subscription.resetsIn": "リセットまで",
|
||||
"workspace.black.subscription.useBalance": "利用限度額に達したら利用可能な残高を使用する",
|
||||
"workspace.black.waitlist.title": "ウェイトリスト",
|
||||
"workspace.black.waitlist.joined":
|
||||
"あなたは月額 ${{plan}} の OpenCode Black プランのウェイトリストに登録されています。",
|
||||
"workspace.black.waitlist.ready": "月額 ${{plan}} の OpenCode Black プランに登録する準備ができました。",
|
||||
"workspace.black.waitlist.leave": "ウェイトリストから抜ける",
|
||||
"workspace.black.waitlist.leaving": "処理中...",
|
||||
"workspace.black.waitlist.left": "退会済み",
|
||||
"workspace.black.waitlist.enroll": "登録する",
|
||||
"workspace.black.waitlist.enrolling": "登録中...",
|
||||
"workspace.black.waitlist.enrolled": "登録済み",
|
||||
"workspace.black.waitlist.enrollNote":
|
||||
"「登録する」をクリックすると、サブスクリプションがすぐに開始され、カードに請求されます。",
|
||||
|
||||
"workspace.lite.loading": "読み込み中...",
|
||||
"workspace.lite.time.day": "日",
|
||||
"workspace.lite.time.days": "日",
|
||||
"workspace.lite.time.hour": "時間",
|
||||
"workspace.lite.time.hours": "時間",
|
||||
"workspace.lite.time.minute": "分",
|
||||
"workspace.lite.time.minutes": "分",
|
||||
"workspace.lite.time.fewSeconds": "数秒",
|
||||
"workspace.lite.subscription.message": "あなたは OpenCode Go を購読しています。",
|
||||
"workspace.lite.subscription.manage": "サブスクリプションの管理",
|
||||
"workspace.lite.subscription.rollingUsage": "ローリング利用量",
|
||||
"workspace.lite.subscription.weeklyUsage": "週間利用量",
|
||||
"workspace.lite.subscription.monthlyUsage": "月間利用量",
|
||||
"workspace.lite.subscription.resetsIn": "リセットまで",
|
||||
"workspace.lite.subscription.useBalance": "利用限度額に達したら利用可能な残高を使用する",
|
||||
"workspace.lite.subscription.selectProvider":
|
||||
"Go モデルを使用するには、opencode の設定で「OpenCode Go」をプロバイダーとして選択してください。",
|
||||
"workspace.lite.black.message":
|
||||
"現在 OpenCode Black を購読中、またはウェイティングリストに登録されています。Go に切り替える場合は、先に登録を解除してください。",
|
||||
"workspace.lite.other.message":
|
||||
"このワークスペースの別のメンバーが既に OpenCode Go を購読しています。ワークスペースにつき1人のメンバーのみが購読できます。",
|
||||
"workspace.lite.promo.description":
|
||||
"OpenCode Goは{{price}}で始まり、その後は$10/月で、人気の高いオープンコーディングモデルへの安定したアクセスと余裕のある利用枠を提供します。",
|
||||
"workspace.lite.promo.price": "初月$5",
|
||||
"workspace.lite.promo.modelsTitle": "含まれるもの",
|
||||
"workspace.lite.promo.footer":
|
||||
"このプランは主にグローバルユーザー向けに設計されており、米国、EU、シンガポールでホストされたモデルにより安定したグローバルアクセスを提供します。料金と利用制限は、初期の利用状況やフィードバックに基づいて変更される可能性があります。",
|
||||
"workspace.lite.promo.subscribe": "Goを購読する",
|
||||
"workspace.lite.promo.subscribing": "リダイレクト中...",
|
||||
"workspace.lite.promo.otherMethods": "その他の支払い方法",
|
||||
"workspace.lite.promo.selectMethod": "支払い方法を選択",
|
||||
|
||||
"download.title": "OpenCode | ダウンロード",
|
||||
"download.meta.description": "OpenCode を macOS、Windows、Linux 向けにダウンロード",
|
||||
"download.hero.title": "OpenCode をダウンロード",
|
||||
"download.hero.subtitle": "macOS、Windows、Linux 向けベータ版を利用可能",
|
||||
"download.hero.button": "{{os}} 向けダウンロード",
|
||||
"download.section.terminal": "OpenCode Terminal",
|
||||
"download.section.desktop": "OpenCode Desktop (Beta)",
|
||||
"download.section.extensions": "OpenCode Extensions",
|
||||
"download.section.integrations": "OpenCode Integrations",
|
||||
"download.action.download": "ダウンロード",
|
||||
"download.action.install": "インストール",
|
||||
|
||||
"download.platform.macosAppleSilicon": "macOS (Apple Silicon)",
|
||||
"download.platform.macosIntel": "macOS (Intel)",
|
||||
"download.platform.windowsX64": "Windows (x64)",
|
||||
"download.platform.linuxDeb": "Linux (.deb)",
|
||||
"download.platform.linuxRpm": "Linux (.rpm)",
|
||||
|
||||
"download.faq.a3.beforeLocal":
|
||||
"必ずしもそうではありませんが、おそらく必要です。OpenCodeを有料プロバイダーに接続したい場合はAIサブスクリプションが必要ですが、",
|
||||
"download.faq.a3.localLink": "ローカルモデル",
|
||||
"download.faq.a3.afterLocal.beforeZen": "であれば無料で利用できます。ユーザーには",
|
||||
"download.faq.a3.afterZen":
|
||||
"の利用をお勧めしていますが、OpenCodeはOpenAI、Anthropic、xAIなどの主要なプロバイダーに対応しています。",
|
||||
|
||||
"download.faq.a5.p1": "OpenCodeは100%無料で利用できます。",
|
||||
"download.faq.a5.p2.beforeZen":
|
||||
"追加コストはモデルプロバイダーのサブスクリプションから発生します。OpenCodeはどのモデルプロバイダーでも利用できますが、",
|
||||
"download.faq.a5.p2.afterZen": "の利用をおすすめします。",
|
||||
|
||||
"download.faq.a6.p1": "あなたのデータと情報は、OpenCodeで共有リンクを作成したときにのみ保存されます。",
|
||||
"download.faq.a6.p2.beforeShare": "詳しくは",
|
||||
"download.faq.a6.shareLink": "共有ページ",
|
||||
|
||||
"enterprise.title": "OpenCode | 組織向けエンタープライズソリューション",
|
||||
"enterprise.meta.description": "エンタープライズソリューションについてOpenCodeに問い合わせる",
|
||||
"enterprise.hero.title": "あなたのコードはあなたのもの",
|
||||
"enterprise.hero.body1":
|
||||
"OpenCodeは、データやコンテキストを一切保存せず、ライセンス制限や所有権の主張もなく、組織内で安全に動作します。チームでのトライアルから始め、SSOや社内AIゲートウェイと統合して組織全体に展開できます。",
|
||||
"enterprise.hero.body2": "どのような支援ができるか、お聞かせください。",
|
||||
"enterprise.form.name.label": "氏名",
|
||||
"enterprise.form.name.placeholder": "ジェフ・ベゾス",
|
||||
"enterprise.form.role.label": "役職",
|
||||
"enterprise.form.role.placeholder": "会長",
|
||||
"enterprise.form.company.label": "会社名",
|
||||
"enterprise.form.company.placeholder": "Acme Inc",
|
||||
"enterprise.form.email.label": "会社メールアドレス",
|
||||
"enterprise.form.email.placeholder": "jeff@amazon.com",
|
||||
"enterprise.form.phone.label": "電話番号",
|
||||
"enterprise.form.phone.placeholder": "+1 234 567 8900",
|
||||
"enterprise.form.message.label": "どのような課題を解決したいですか?",
|
||||
"enterprise.form.message.placeholder": "これについて支援が必要です...",
|
||||
"enterprise.form.send": "送信",
|
||||
"enterprise.form.sending": "送信中...",
|
||||
"enterprise.form.success": "送信しました。まもなくご連絡いたします。",
|
||||
"enterprise.form.success.submitted": "フォームが正常に送信されました。",
|
||||
"enterprise.form.error.allFieldsRequired": "すべての項目は必須です。",
|
||||
"enterprise.form.error.invalidEmailFormat": "無効なメール形式です。",
|
||||
"enterprise.form.error.internalServer": "内部サーバーエラー。",
|
||||
"enterprise.faq.title": "FAQ",
|
||||
"enterprise.faq.q1": "OpenCode Enterpriseとは?",
|
||||
"enterprise.faq.a1":
|
||||
"OpenCode Enterpriseは、コードとデータが決してインフラの外に出ないことを保証したい組織向けです。SSOや社内AIゲートウェイと統合する集中設定を使用することでこれを実現します。",
|
||||
"enterprise.faq.q2": "OpenCode Enterpriseを始めるには?",
|
||||
"enterprise.faq.a2":
|
||||
"まずはチームでの社内トライアルから始めてください。OpenCodeはデフォルトでコードやコンテキストデータを保存しないため、簡単に始められます。その後、価格や導入オプションについてお問い合わせください。",
|
||||
"enterprise.faq.q3": "エンタープライズ価格の仕組みは?",
|
||||
"enterprise.faq.a3":
|
||||
"シート単位(ユーザー数)でのエンタープライズ価格を提供します。独自のLLMゲートウェイをお持ちの場合、使用トークンに対する課金はありません。詳細は、組織の要件に基づいた見積もりのためにお問い合わせください。",
|
||||
"enterprise.faq.q4": "OpenCode Enterpriseでデータは安全ですか?",
|
||||
"enterprise.faq.a4":
|
||||
"はい。OpenCodeはコードやコンテキストデータを保存しません。すべての処理はローカル、またはAIプロバイダーへの直接API呼び出しを通じて行われます。集中設定とSSO統合により、データは組織のインフラ内で安全に保たれます。",
|
||||
|
||||
"brand.title": "OpenCode | ブランド",
|
||||
"brand.meta.description": "OpenCode ブランドガイドライン",
|
||||
"brand.heading": "ブランドガイドライン",
|
||||
"brand.subtitle": "OpenCodeブランドを扱うためのリソースと素材です。",
|
||||
"brand.downloadAll": "すべての素材をダウンロード",
|
||||
|
||||
"changelog.title": "OpenCode | 変更履歴",
|
||||
"changelog.meta.description": "OpenCode リリースノートと変更履歴",
|
||||
"changelog.hero.title": "変更履歴",
|
||||
"changelog.hero.subtitle": "OpenCodeの新しいアップデートと改善",
|
||||
"changelog.empty": "変更履歴が見つかりませんでした。",
|
||||
"changelog.viewJson": "JSONを表示",
|
||||
|
||||
"bench.list.title": "ベンチマーク",
|
||||
"bench.list.heading": "ベンチマーク",
|
||||
"bench.list.table.agent": "エージェント",
|
||||
"bench.list.table.model": "モデル",
|
||||
"bench.list.table.score": "スコア",
|
||||
"bench.submission.error.allFieldsRequired": "すべての項目は必須です。",
|
||||
|
||||
"bench.detail.title": "ベンチマーク - {{task}}",
|
||||
"bench.detail.notFound": "タスクが見つかりません",
|
||||
"bench.detail.na": "N/A",
|
||||
"bench.detail.labels.agent": "エージェント",
|
||||
"bench.detail.labels.model": "モデル",
|
||||
"bench.detail.labels.task": "タスク",
|
||||
"bench.detail.labels.repo": "リポジトリ",
|
||||
"bench.detail.labels.from": "From",
|
||||
"bench.detail.labels.to": "To",
|
||||
"bench.detail.labels.prompt": "プロンプト",
|
||||
"bench.detail.labels.commit": "コミット",
|
||||
"bench.detail.labels.averageDuration": "平均所要時間",
|
||||
"bench.detail.labels.averageScore": "平均スコア",
|
||||
"bench.detail.labels.averageCost": "平均コスト",
|
||||
"bench.detail.labels.summary": "概要",
|
||||
"bench.detail.labels.runs": "実行回数",
|
||||
"bench.detail.labels.score": "スコア",
|
||||
"bench.detail.labels.base": "ベース",
|
||||
"bench.detail.labels.penalty": "ペナルティ",
|
||||
"bench.detail.labels.weight": "重み",
|
||||
"bench.detail.table.run": "実行",
|
||||
"bench.detail.table.score": "スコア (ベース - ペナルティ)",
|
||||
"bench.detail.table.cost": "コスト",
|
||||
"bench.detail.table.duration": "所要時間",
|
||||
"bench.detail.run.title": "実行 {{n}}",
|
||||
"bench.detail.rawJson": "Raw JSON",
|
||||
} satisfies Dict
|
||||