bitpull 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/bitpull.cjs +203 -87
  3. package/package.json +1 -1
package/bitpull.cjs CHANGED
@@ -38,7 +38,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
38
38
  var define_BITPULL_UI_I18N_default;
39
39
  var init_define_BITPULL_UI_I18N = __esm({
40
40
  "<define:__BITPULL_UI_I18N__>"() {
41
- define_BITPULL_UI_I18N_default = { ar: { "lang.name": "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", "app.title": "BitPull", "locked.text": "\u0627\u0641\u062A\u062D \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 BitPull: \u0631\u0627\u0628\u0637\u0647\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0648\u0635\u0648\u0644.", "pill.online": "\u0645\u062A\u0635\u0644", "pill.offline": "\u063A\u064A\u0631 \u0645\u062A\u0635\u0644", "pill.direct": "\u0639\u0646\u0648\u0627\u0646 \u0645\u0628\u0627\u0634\u0631", "pill.relay_on": "\u0627\u0644\u0645\u064F\u0631\u062D\u0650\u0651\u0644 \u0645\u062A\u0635\u0644", "pill.relay_off": "\u0627\u0644\u0645\u064F\u0631\u062D\u0650\u0651\u0644 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644", "pill.cached": "{n} \u0646\u0633\u062E \u0645\u062E\u0632\u0646\u0629 \u0645\u0624\u0642\u062A\u064B\u0627", "net.title": "\u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0622\u0646", "net.online": "{n} \u062D\u0648\u0627\u0633\u064A\u0628 \u0645\u062A\u0635\u0644\u0629", "net.lending": "{n} \u062A\u064F\u0639\u064A\u0631 \u0627\u0644\u0622\u0646", "net.cpu": "{n} \u0623\u0646\u0648\u064A\u0629 CPU", "net.ram": "{n} GB \u0645\u0646 RAM", "net.gpu": "{n} GPU", "net.models": "{n} \u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A", "net.jobs": "{n} \u0645\u0647\u0627\u0645 \u0642\u064A\u062F \u0627\u0644\u062A\u0634\u063A\u064A\u0644", "credits.title": "\u0631\u0635\u064A\u062F \u0627\u0644\u0623\u0631\u0635\u062F\u0629", "credits.plan": "\u062E\u0637\u0629 {plan} \xB7 \u064A\u0645\u0643\u0646 \u0623\u0646 \u064A\u0646\u062E\u0641\u0636 \u062D\u062A\u0649 {n}", "plan.free": "\u0645\u062C\u0627\u0646\u064A\u0629", "plan.base": "\u0623\u0633\u0627\u0633\u064A\u0629", "plan.pro": "\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629", "buy.base": "\u0623\u0633\u0627\u0633\u064A\u0629 \u200E\u20AC4.50", "buy.pro": "\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629 \u200E\u20AC9.90", "buy.recharge": "\u0634\u062D\u0646 \u200E\u20AC5", "buy.ok": "\u0641\u064F\u062A\u062D\u062A \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "lend.title": "\u0625\u0639\u0627\u0631\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "lend.hint": "\u062A\u0639\u0645\u0644 \u0627\u0644\u0645\u0647\u0627\u0645 \u0645\u0634\u0641\u0631\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641 \u0641\u064A \u0628\u064A\u0626\u0627\u062A \u0645\u0639\u0632\u0648\u0644\u0629\u060C \u062F\u0648\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A\u0643. \u0648\u062A\u0643\u0633\u0628 \u0623\u0631\u0635\u062F\u0629.", "lend.state.off": "\u0645\u062A\u0648\u0642\u0641", "lend.state.waiting": "\u0641\u064A \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "lend.state.working": "\u064A\u0639\u0645\u0644", "lend.reason.lending_off": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u062A\u0648\u0642\u0641\u0629", "lend.reason.paused": "\u0645\u064F\u0639\u0644\u0651\u0642\u0629 \u0645\u0624\u0642\u062A\u064B\u0627", "lend.reason.outside_hours": "\u062E\u0627\u0631\u062C \u0633\u0627\u0639\u0627\u062A\u0643", "lend.reason.on_battery": "\u064A\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u0637\u0627\u0631\u064A\u0629", "lend.reason.computer_in_use": "\u0623\u0646\u062A \u062A\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "lend.reason.no_jobs": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0647\u0627\u0645 \u0641\u064A \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "lend.running": "\u064A\u0634\u063A\u0651\u0644 \u0645\u0647\u0645\u0629 {kind} \u0645\u0646\u0630 {time}", "lend.detail": "{reason} \xB7 {n} \u0645\u0647\u0627\u0645 \u0645\u0646\u062C\u0632\u0629 \xB7 \u064A\u0648\u0641\u0631 {cpus} CPU \u0648{ram} GB", "lend.detail.sandbox": "\u060C \u0628\u064A\u0626\u0629 \u0645\u0639\u0632\u0648\u0644\u0629 {name}", "lend.detail.models": "\u060C {n} \u0646\u0645\u0627\u0630\u062C", "lend.pause": "\u0625\u064A\u0642\u0627\u0641 \u0645\u0624\u0642\u062A", "lend.resume": "\u0627\u0633\u062A\u0626\u0646\u0627\u0641", "lend.paused_ok": "\u0623\u064F\u0648\u0642\u0641\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0624\u0642\u062A\u064B\u0627. \u0633\u064F\u0644\u0651\u0645\u062A \u0623\u064A \u0645\u0647\u0645\u0629 \u062C\u0627\u0631\u064A\u0629 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0622\u062E\u0631.", "lend.resumed_ok": "\u0627\u0633\u062A\u0624\u0646\u0641\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629.", "setup.title": "\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "setup.hint": "\u0645\u0627 \u064A\u062D\u062A\u0627\u062C\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0625\u0639\u0627\u0631\u0629. \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u0628\u0643\u0629 \u0644\u0627 \u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0634\u064A\u0621 \u0622\u062E\u0631. \u0628\u0631\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u062A\u0623\u062A\u064A \u0645\u0646 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064A\u0629\u060C \u0648\u0633\u064A\u0637\u0644\u0628 \u0645\u0646\u0643 \u0646\u0638\u0627\u0645\u0643 \u0627\u0644\u062A\u0623\u0643\u064A\u062F.", "setup.checking": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642\u2026", "setup.docker.help": "\u064A\u0634\u063A\u0651\u0644 \u0645\u0647\u0627\u0645 \u0627\u0644\u0622\u062E\u0631\u064A\u0646 \u0641\u064A \u0628\u064A\u0626\u0627\u062A \u0645\u0639\u0632\u0648\u0644\u0629. \u0645\u0637\u0644\u0648\u0628 \u0644\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A. \u0645\u062C\u0627\u0646\u064A \u0644\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u062E\u0635\u064A \u0648\u0627\u0644\u0634\u0631\u0643\u0627\u062A \u0627\u0644\u0635\u063A\u064A\u0631\u0629.", "setup.docker.download": "\u062A\u0646\u0632\u064A\u0644 Docker", "setup.docker.start": "\u062A\u0634\u063A\u064A\u0644 Docker", "setup.apple.title": "Apple Container (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)", "setup.apple.help": "\u0639\u0632\u0644 \u0623\u0642\u0648\u0649: \u0643\u0644 \u0645\u0647\u0645\u0629 \u0641\u064A \u062C\u0647\u0627\u0632\u0647\u0627 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A \u0627\u0644\u062E\u0627\u0635. \u0627\u062E\u062A\u064A\u0627\u0631\u064A\u061B Docker \u064A\u0643\u0641\u064A \u0644\u0644\u0628\u062F\u0621.", "setup.apple.get": "\u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 Apple Container", "setup.ollama.help": "\u064A\u0634\u063A\u0651\u0644 \u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u0641\u062A\u0648\u062D\u0629 (Qwen \u0648Llama \u0648Mistral\u2026). \u0645\u0637\u0644\u0648\u0628 \u0644\u0625\u0639\u0627\u0631\u0629 \u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A.", "setup.ollama.download": "\u062A\u0646\u0632\u064A\u0644 Ollama", "setup.ollama.start": "\u062A\u0634\u063A\u064A\u0644 Ollama", "setup.model.title": "\u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A", "setup.model.help": "\u0627\u0644\u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u064A \u064A\u0642\u062F\u0645\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u0627\u0644\u0645\u0642\u062A\u0631\u062D \u0644\u0630\u0627\u0643\u0631\u0629 {ram} GB: {model}.", "setup.model.download": "\u062A\u0646\u0632\u064A\u0644 {model} ({size} GB)", "setup.model.none": "\u0644\u0627 \u0634\u064A\u0621 \u0628\u0639\u062F", "setup.model.need_ollama": "\u062B\u0628\u0651\u062A Ollama \u0648\u0634\u063A\u0651\u0644\u0647 \u0623\u0648\u0644\u064B\u0627", "setup.nvidia.title": "\u062A\u0639\u0631\u064A\u0641\u0627\u062A NVIDIA GPU (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)", "setup.nvidia.help": "\u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0637\u0627\u0642\u0629 \u0631\u0633\u0648\u0645\u0627\u062A NVIDIA \u062A\u0631\u064A\u062F \u0625\u0639\u0627\u0631\u062A\u0647\u0627.", "setup.nvidia.get": "\u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u062A\u0639\u0631\u064A\u0641\u0627\u062A NVIDIA", "setup.status.running": "\u0645\u062B\u0628\u0651\u062A \u0648\u064A\u0639\u0645\u0644", "setup.status.installed": "\u0645\u062B\u0628\u0651\u062A", "setup.status.stopped": "\u0645\u062B\u0628\u0651\u062A\u060C \u0644\u0627 \u064A\u0639\u0645\u0644", "setup.status.missing": "\u063A\u064A\u0631 \u0645\u062B\u0628\u0651\u062A", "setup.status.found": "\u0645\u0648\u062C\u0648\u062F", "setup.status.not_found": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F", "setup.terminal": "\u0634\u063A\u0651\u0644 \u0641\u064A \u0627\u0644\u0637\u0631\u0641\u064A\u0629:", "setup.done": "\u062A\u0645", "setup.opened": "\u062A\u0645: \u0641\u064F\u062A\u062D {file}\u060C \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647", "setup.recheck": "\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627", "setup.ok.download": "\u0628\u062F\u0623 \u0627\u0644\u062A\u0646\u0632\u064A\u0644. \u0633\u064A\u0641\u062A\u062D \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u0639\u0646\u062F \u0627\u0644\u0627\u0646\u062A\u0647\u0627\u0621: \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647.", "setup.ok.start": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0634\u063A\u064A\u0644\u2026 \u0642\u062F \u064A\u0633\u062A\u063A\u0631\u0642 \u0630\u0644\u0643 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629. \u062A\u062A\u062D\u062F\u062B \u0647\u0630\u0647 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627.", "setup.ok.pull": "\u0628\u062F\u0623 \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0646\u0645\u0648\u0630\u062C. \u064A\u0638\u0647\u0631 \u0627\u0644\u062A\u0642\u062F\u0645 \u0641\u064A \u0627\u0644\u0623\u0639\u0644\u0649.", "setup.ok.page": "\u0641\u064F\u062A\u062D\u062A \u0627\u0644\u0635\u0641\u062D\u0629 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "setup.ok.recheck": "\u062A\u0645 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627.", "rules.title": "\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629", "rules.enabled": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629", "rules.enabled.help": "\u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0631\u0626\u064A\u0633\u064A. \u0639\u0646\u062F \u0625\u064A\u0642\u0627\u0641\u0647\u060C \u0644\u0627 \u064A\u0634\u063A\u0651\u0644 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0647\u0627\u0645 \u0627\u0644\u0622\u062E\u0631\u064A\u0646 \u0623\u0628\u062F\u064B\u0627. \u0648\u064A\u0638\u0644 \u0628\u0625\u0645\u0643\u0627\u0646\u0643 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u0628\u0643\u0629 \u0628\u0646\u0641\u0633\u0643.", "rules.cpus": "\u0623\u0642\u0635\u0649 \u0639\u062F\u062F CPU", "rules.cpus.help": "\u0623\u0642\u0635\u0649 \u0639\u062F\u062F \u0645\u0646 \u0623\u0646\u0648\u064A\u0629 \u0627\u0644\u0645\u0639\u0627\u0644\u062C \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0627\u0644\u0645\u0647\u0645\u0629. \u0645\u062B\u0627\u0644: \u0639\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0628\u06408 \u0623\u0646\u0648\u064A\u0629\u060C \u0627\u0644\u0642\u064A\u0645\u0629 2 \u062A\u062A\u0631\u0643 \u0644\u0643 6 \u0623\u0646\u0648\u064A\u0629 \u062D\u0631\u0629.", "rules.memory": "\u0623\u0642\u0635\u0649 \u0630\u0627\u0643\u0631\u0629 (MB)", "rules.memory.help": "\u0630\u0627\u0643\u0631\u0629 RAM \u0627\u0644\u062A\u064A \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0633\u062A\u062E\u062F\u0645\u0647\u0627 \u0627\u0644\u0645\u0647\u0645\u0629\u060C \u0628\u0627\u0644\u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A (1024 MB = 1 GB). \u0644\u0627 \u064A\u0639\u0631\u0636 BitPull \u0623\u0628\u062F\u064B\u0627 \u0623\u0643\u062B\u0631 \u0645\u0646 \u0646\u0635\u0641 \u0630\u0627\u0643\u0631\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "rules.gpu": "GPU", "rules.gpu.none": "\u0644\u0627 \u0634\u064A\u0621", "rules.gpu.consumer": "\u0627\u0633\u062A\u0647\u0644\u0627\u0643\u064A\u0629 (8\u201312 GB)", "rules.gpu.high": "\u0645\u062A\u0642\u062F\u0645\u0629 (16\u201324 GB)", "rules.gpu.datacenter": "\u0645\u0631\u0627\u0643\u0632 \u0628\u064A\u0627\u0646\u0627\u062A (40 GB+)", "rules.gpu.help": "\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0631\u0633\u0648\u0645\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0639\u064A\u0631\u0647\u0627\u060C \u062D\u0633\u0628 \u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u0641\u064A\u062F\u064A\u0648. \u0627\u062A\u0631\u0643 \xAB\u0644\u0627 \u0634\u064A\u0621\xBB \u0625\u0646 \u0644\u0645 \u064A\u0643\u0646 \u0644\u062F\u064A\u0643 GPU \u0645\u062E\u0635\u0635 \u0623\u0648 \u0644\u0627 \u062A\u0631\u064A\u062F \u0625\u0639\u0627\u0631\u062A\u0647. \u0627\u0644\u0640GPU \u064A\u0643\u0633\u0628 \u0623\u0643\u062B\u0631 \u0627\u0644\u0623\u0631\u0635\u062F\u0629.", "rules.containers": "\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A", "rules.containers.help": "\u062A\u0634\u063A\u064A\u0644 \u0639\u0645\u0644\u064A\u0627\u062A \u0627\u0644\u0628\u0646\u0627\u0621 \u0648\u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631\u0627\u062A \u0648\u0627\u0644\u0633\u0643\u0631\u0628\u062A\u0627\u062A \u0644\u0644\u0622\u062E\u0631\u064A\u0646 \u0641\u064A \u0628\u064A\u0626\u0629 \u0645\u0639\u0632\u0648\u0644\u0629 \u062F\u0648\u0646 \u0625\u0646\u062A\u0631\u0646\u062A \u0648\u062F\u0648\u0646 \u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A\u0643. \u064A\u062A\u0637\u0644\u0628 Docker (\u0623\u0648 Apple Container): \u0631\u0627\u062C\u0639 \xAB\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628\xBB.", "rules.models": "\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 (Ollama)", "rules.models.help": "\u0627\u0644\u0631\u062F \u0639\u0644\u0649 \u0637\u0644\u0628\u0627\u062A \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0628\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0627\u0644\u0645\u062B\u0628\u062A\u0629 \u0641\u064A Ollama \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u064A\u062A\u0637\u0644\u0628 Ollama \u0648\u0646\u0645\u0648\u0630\u062C\u064B\u0627 \u0648\u0627\u062D\u062F\u064B\u0627 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.", "rules.idle": "\u0641\u0642\u0637 \u0628\u0639\u062F \u062F\u0642\u0627\u0626\u0642 \u0645\u0646 \u0627\u0644\u062E\u0645\u0648\u0644", "rules.idle.help": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0644\u0645 \u062A\u0644\u0645\u0633 \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D \u0623\u0648 \u0627\u0644\u0641\u0623\u0631\u0629 \u0637\u0648\u0627\u0644 \u0647\u0630\u0627 \u0627\u0644\u0639\u062F\u062F \u0645\u0646 \u0627\u0644\u062F\u0642\u0627\u0626\u0642. 0 = \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u062D\u062A\u0649 \u0623\u062B\u0646\u0627\u0621 \u0639\u0645\u0644\u0643.", "rules.ac": "\u0641\u0642\u0637 \u0639\u0646\u062F \u0627\u0644\u062A\u0648\u0635\u064A\u0644 \u0628\u0627\u0644\u0643\u0647\u0631\u0628\u0627\u0621", "rules.ac.help": "\u0639\u0644\u0649 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0627\u0644\u0645\u062D\u0645\u0648\u0644\u060C \u062A\u062A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0639\u0646\u062F \u0627\u0644\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u0637\u0627\u0631\u064A\u0629\u060C \u0641\u0644\u0627 \u062A\u0633\u062A\u0646\u0632\u0641\u0647\u0627 \u0623\u0628\u062F\u064B\u0627.", "rules.hours": "\u0641\u0642\u0637 \u0645\u0646 / \u0625\u0644\u0649 \u0633\u0627\u0639\u0629 (\u0641\u0627\u0631\u063A = \u062F\u0627\u0626\u0645\u064B\u0627)", "rules.hours.help": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0642\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0641\u062A\u0631\u0629\u060C \u0628\u0646\u0638\u0627\u0645 24 \u0633\u0627\u0639\u0629. \u0645\u062B\u0627\u0644: 22 \u06488 = \u0645\u0646 10 \u0645\u0633\u0627\u0621\u064B \u0625\u0644\u0649 8 \u0635\u0628\u0627\u062D\u064B\u0627. \u0627\u062A\u0631\u0643 \u0627\u0644\u062D\u0642\u0644\u064A\u0646 \u0641\u0627\u0631\u063A\u064A\u0646 \u0644\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u064A \u0623\u064A \u0633\u0627\u0639\u0629.", "rules.cache": "\u0646\u0633\u062E \u0645\u062E\u0632\u0646\u0629 \u0645\u0646 \u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0622\u062E\u0631\u064A\u0646", "rules.cache.help": "\u0639\u062F\u062F \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0639\u0627\u0645\u0629 \u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646 \u0622\u062E\u0631\u064A\u0646 \u0627\u0644\u062A\u064A \u064A\u062D\u062A\u0641\u0638 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0646\u0633\u062E\u0629 \u0645\u0646\u0647\u0627\u060C \u0644\u062A\u0628\u0642\u0649 \u0645\u062A\u0627\u062D\u0629 \u0639\u0646\u062F\u0645\u0627 \u064A\u0643\u0648\u0646 \u0623\u0635\u062D\u0627\u0628\u0647\u0627 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644\u064A\u0646. \u064A\u0633\u062A\u062E\u062F\u0645 \u0645\u0633\u0627\u062D\u0629 \u0642\u0631\u0635 \u0635\u063A\u064A\u0631\u0629 \u0648\u064A\u0643\u0633\u0628 \u0623\u0631\u0635\u062F\u0629. 0 = \u0644\u0627 \u0634\u064A\u0621.", "rules.save": "\u062D\u0641\u0638 \u0627\u0644\u0642\u0648\u0627\u0639\u062F", "rules.saved": "\u062D\u064F\u0641\u0638\u062A \u0627\u0644\u0642\u0648\u0627\u0639\u062F. \u062A\u064F\u0637\u0628\u0651\u0642 \u062E\u0644\u0627\u0644 \u062B\u0648\u0627\u0646\u064D.", "rules.hours_both": "\u0627\u0645\u0644\u0623 \u0627\u0644\u0633\u0627\u0639\u062A\u064A\u0646\u060C \u0623\u0648 \u0627\u062A\u0631\u0643\u0647\u0645\u0627 \u0641\u0627\u0631\u063A\u062A\u064A\u0646 \u0644\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u064A \u0623\u064A \u0633\u0627\u0639\u0629.", "folders.title": "\u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627", "folders.hint": "\u064A\u0642\u0631\u0623 BitPull \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0641\u0642\u0637. \u0644\u0646\u0634\u0631 \u0623\u062D\u062F\u0647\u0627 \u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0645\u0644\u0641 bitpull.json \u0645\u0643\u062A\u0645\u0644.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u062A\u0635\u0631\u064A\u062D", "folders.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0644\u062F\u0627\u062A \u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627.", "folders.draft": "\u0645\u0633\u0648\u062F\u0629", "folders.publish": "\u0646\u0634\u0631", "folders.remove": "\u0625\u0632\u0627\u0644\u0629", "folders.need_path": "\u0627\u0643\u062A\u0628 \u0623\u0648\u0644\u064B\u0627 \u0627\u0644\u0645\u0633\u0627\u0631 \u0627\u0644\u0643\u0627\u0645\u0644 \u0644\u0645\u062C\u0644\u062F\u060C \u0645\u062B\u0644 /Users/you/projects/my-library.", "folders.added": "\u062A\u0645 \u0627\u0644\u062A\u0635\u0631\u064A\u062D \u0628\u0627\u0644\u0645\u062C\u0644\u062F.", "folders.removed": "\u0623\u064F\u0632\u064A\u0644 \u0627\u0644\u0645\u062C\u0644\u062F. \u0644\u0645 \u064A\u0639\u062F BitPull \u064A\u0642\u0631\u0624\u0647.", "folders.drafted": "\u0627\u0644\u0645\u0633\u0648\u062F\u0629 \u062C\u0627\u0647\u0632\u0629: \u0639\u064F\u062B\u0631 \u0639\u0644\u0649 {n} \u0645\u0644\u0641\u0627\u062A. \u062F\u0639 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062F\u064A\u0643 \u064A\u0645\u0644\u0623 \u0627\u0644\u0645\u0644\u062E\u0635 \u0648\u0627\u0644\u0623\u0648\u0635\u0627\u0641 (\u0623\u062F\u0627\u0629 prepare_publish)\u060C \u062B\u0645 \u0627\u0636\u063A\u0637 \xAB\u0646\u0634\u0631\xBB.", "folders.published": "\u0646\u064F\u0634\u0631 \xAB{name}\xBB \u0645\u0639 {n} \u0645\u0644\u0641\u0627\u062A.", "folders.secrets_in": "\u0639\u064F\u062B\u0631 \u0639\u0644\u064A\u0647 \u0641\u064A: {where}", "folders.line": "{file} \u0627\u0644\u0633\u0637\u0631 {line}", "repos.title": "\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A\u0643 \u0627\u0644\u0645\u0646\u0634\u0648\u0631\u0629", "repos.hint": "\u062A\u062A\u062D\u062F\u062B \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u0639\u0646\u062F \u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0645\u0644\u0641\u0627\u062A (\u0643\u0644 5 \u062F\u0642\u0627\u0626\u0642).", "repos.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0645\u0646\u0634\u0648\u0631\u0629.", "repos.withdraw": "\u0633\u062D\u0628", "repos.withdrawn": "\u0633\u064F\u062D\u0628 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639 \u0645\u0646 \u0627\u0644\u0634\u0628\u0643\u0629.", "ask.title": "\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629", "ask.offers": "\u064A\u0642\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628: {models}.", "ask.offers_none": "\u0644\u0627 \u0646\u0645\u0627\u0630\u062C (\u062B\u0628\u0651\u062A Ollama \u0644\u062A\u0642\u062F\u064A\u0645 \u0628\u0639\u0636\u0647\u0627)", "ask.placeholder": "\u0627\u0633\u0623\u0644 \u0646\u0645\u0648\u0630\u062C\u064B\u0627 \u0645\u0641\u062A\u0648\u062D\u064B\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629\u2026", "ask.small": "\u0635\u063A\u064A\u0631", "ask.medium": "\u0645\u062A\u0648\u0633\u0637", "ask.large": "\u0643\u0628\u064A\u0631", "ask.button": "\u0627\u0633\u0623\u0644", "ask.empty": "\u0627\u0643\u062A\u0628 \u0633\u0624\u0627\u0644\u064B\u0627 \u0623\u0648\u0644\u064B\u0627.", "ask.waiting": "\u062C\u0627\u0631\u064D \u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u062D\u0627\u0633\u0648\u0628 \u0644\u062F\u064A\u0647 \u0627\u0644\u0646\u0645\u0648\u0630\u062C\u2026 \u0642\u062F \u064A\u0633\u062A\u063A\u0631\u0642 \u0630\u0644\u0643 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629.", "ask.credits": "{n} \u0623\u0631\u0635\u062F\u0629", "tools.title": "\u0627\u0631\u0628\u0637 \u0623\u062F\u0648\u0627\u062A\u0643", "tools.mcp": "\u0644\u0640Claude Code \u0648\u0639\u0645\u0644\u0627\u0621 MCP\u060C \u0634\u063A\u0651\u0644 \u0641\u064A \u0627\u0644\u0637\u0631\u0641\u064A\u0629:", "tools.openai": "\u0644\u0644\u0623\u062F\u0648\u0627\u062A \u0627\u0644\u0645\u062A\u0648\u0627\u0641\u0642\u0629 \u0645\u0639 OpenAI: \u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u0623\u0633\u0627\u0633\u064A", "tools.key": "\u0645\u0641\u062A\u0627\u062D API", "tools.show": "\u0625\u0638\u0647\u0627\u0631", "jobs.title": "\u0645\u0647\u0627\u0645\u0643 \u0627\u0644\u0623\u062E\u064A\u0631\u0629", "jobs.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0647\u0627\u0645.", "jobs.model": "\u0646\u0645\u0648\u0630\u062C", "jobs.container": "\u062D\u0627\u0648\u064A\u0629", "jobs.status.queued": "\u0641\u064A \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "jobs.status.running": "\u0642\u064A\u062F \u0627\u0644\u062A\u0634\u063A\u064A\u0644", "jobs.status.done": "\u0645\u0643\u062A\u0645\u0644\u0629", "jobs.status.failed": "\u0641\u0634\u0644\u062A", "jobs.status.canceled": "\u0623\u064F\u0644\u063A\u064A\u062A", "jobs.cost": "{n} \u0623\u0631\u0635\u062F\u0629", working: "\u062C\u0627\u0631\u064D \u0627\u0644\u0639\u0645\u0644\u2026", "err.agent_down": "BitPull \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0627 \u064A\u0633\u062A\u062C\u064A\u0628. \u0633\u064A\u064F\u0639\u0627\u062F \u062A\u0634\u063A\u064A\u0644\u0647 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u062E\u0644\u0627\u0644 30 \u062B\u0627\u0646\u064A\u0629: \u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0628\u0639\u062F \u0642\u0644\u064A\u0644.", "err.server": "\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u062E\u0627\u062F\u0645 BitPull. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u062A\u0635\u0627\u0644\u0643 \u0628\u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627.", "err.session": "\u0627\u0646\u062A\u0647\u062A \u062C\u0644\u0633\u0629 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0647\u0630\u0647. \u0623\u0639\u062F \u0641\u062A\u062D\u0647\u0627 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 BitPull.", "err.billing": "\u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u063A\u064A\u0631 \u0645\u0641\u0639\u0651\u0644\u0629 \u0628\u0639\u062F.", "err.no_folder": "\u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0645\u0633\u0627\u0631.", "err.not_folder": "\u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u0627\u0631 \u0645\u0644\u0641 \u0648\u0644\u064A\u0633 \u0645\u062C\u0644\u062F\u064B\u0627.", "err.credits": "\u0627\u0644\u0623\u0631\u0635\u062F\u0629 \u063A\u064A\u0631 \u0643\u0627\u0641\u064A\u0629.", "err.device": "\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644 \u0628\u0639\u062F. \u0623\u0628\u0642\u0650 \u062A\u0637\u0628\u064A\u0642 BitPull \u0645\u0641\u062A\u0648\u062D\u064B\u0627 \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0628\u0639\u062F \u062F\u0642\u064A\u0642\u0629.", "err.no_model": "\u0644\u0627 \u064A\u0648\u062C\u062F \u062D\u0627\u0633\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u064A\u0642\u062F\u0645 \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u062D\u0627\u0644\u064A\u064B\u0627. \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u064B\u0627.", "err.invalid": "\u0628\u0639\u0636 \u0627\u0644\u0642\u064A\u0645 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062D\u0642\u0648\u0644 \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627.", "tip.lang": "\u0644\u063A\u0629 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u064A\u064F\u062D\u0641\u0638 \u0627\u062E\u062A\u064A\u0627\u0631\u0643 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "tip.buy.base": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0644\u062E\u0637\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064A\u0629: \u200E\u20AC4.50 \u0634\u0647\u0631\u064A\u064B\u0627 \u0645\u0639 80 \u0631\u0635\u064A\u062F\u064B\u0627 \u0643\u0644 \u0634\u0647\u0631. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0625\u0644\u063A\u0627\u0621 \u0641\u064A \u0623\u064A \u0648\u0642\u062A.", "tip.buy.pro": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0644\u062E\u0637\u0629 \u0627\u0644\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629: \u200E\u20AC9.90 \u0634\u0647\u0631\u064A\u064B\u0627 \u0645\u0639 200 \u0631\u0635\u064A\u062F \u0643\u0644 \u0634\u0647\u0631\u060C \u0648\u0623\u0639\u0644\u0649 \u0623\u0648\u0644\u0648\u064A\u0629 \u0648\u062C\u0645\u064A\u0639 \u0648\u062D\u062F\u0627\u062A GPU. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0625\u0644\u063A\u0627\u0621 \u0641\u064A \u0623\u064A \u0648\u0642\u062A.", "tip.buy.recharge": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0634\u0631\u0627\u0621 80 \u0631\u0635\u064A\u062F\u064B\u0627 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0645\u0642\u0627\u0628\u0644 \u200E\u20AC5. \u0644\u0627 \u062A\u0646\u062A\u0647\u064A \u0635\u0644\u0627\u062D\u064A\u062A\u0647\u0627 \u0623\u0628\u062F\u064B\u0627.", "tip.pause": "\u064A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0648\u0631\u064B\u0627. \u062A\u064F\u0633\u0644\u064E\u0651\u0645 \u0623\u064A \u0645\u0647\u0645\u0629 \u062C\u0627\u0631\u064A\u0629 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0644\u062D\u0638\u0629 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0622\u062E\u0631. \u0627\u0636\u063A\u0637 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0644\u0627\u0633\u062A\u0626\u0646\u0627\u0641.", "tip.resume": "\u064A\u0633\u062A\u0623\u0646\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0648\u0641\u0642 \u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643.", "tip.rules.save": "\u064A\u062D\u0641\u0638 \u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0623\u0639\u0644\u0627\u0647. \u062A\u064F\u0637\u0628\u064E\u0651\u0642 \u062E\u0644\u0627\u0644 \u062B\u0648\u0627\u0646\u064D \u0642\u0644\u064A\u0644\u0629\u061B \u0648\u0644\u0627 \u064A\u062A\u063A\u064A\u0631 \u0634\u064A\u0621 \u062D\u062A\u0649 \u062A\u0636\u063A\u0637 \u0647\u0630\u0627 \u0627\u0644\u0632\u0631.", "tip.folder.add": "\u064A\u0633\u0645\u062D \u0644\u0640 BitPull \u0628\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0645\u0643\u062A\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631. \u0644\u0627 \u062A\u064F\u0642\u0631\u0623 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u062E\u0627\u0631\u062C \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627 \u0648\u0644\u0627 \u062A\u064F\u0634\u0627\u0631\u0643 \u0623\u0628\u062F\u064B\u0627.", "tip.folder.draft": "\u064A\u064F\u0646\u0634\u0626 bitpull.json \u0641\u064A \u0627\u0644\u0645\u062C\u0644\u062F: \u0642\u0627\u0626\u0645\u0629 \u0628\u0645\u0644\u0641\u0627\u062A\u0647 \u0645\u0639 \u0623\u0648\u0635\u0627\u0641 \u0641\u0627\u0631\u063A\u0629 \u0644\u064A\u0643\u0645\u0644\u0647\u0627 \u0645\u0633\u0627\u0639\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. \u0644\u0627 \u064A\u064F\u0646\u0634\u0631 \u0634\u064A\u0621 \u0628\u0639\u062F.", "tip.folder.publish": "\u064A\u0634\u0627\u0631\u0643 \u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0643\u0645\u0633\u062A\u0648\u062F\u0639 \u0639\u0627\u0645 \u0645\u0648\u0642\u0651\u0639 \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u064A\u064F\u0645\u0646\u0639 \u0627\u0644\u0646\u0634\u0631 \u0625\u0630\u0627 \u0648\u064F\u062C\u062F\u062A \u0645\u0641\u0627\u062A\u064A\u062D \u0623\u0648 \u0643\u0644\u0645\u0627\u062A \u0645\u0631\u0648\u0631 \u0641\u064A \u0627\u0644\u0645\u0644\u0641\u0627\u062A.", "tip.folder.remove": "\u064A\u062A\u0648\u0642\u0641 BitPull \u0639\u0646 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F. \u062A\u0628\u0642\u0649 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0645\u0646\u0634\u0648\u0631\u0629 \u0645\u0646\u0647 \u0645\u062A\u0627\u062D\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u062D\u062A\u0649 \u062A\u0633\u062D\u0628\u0647\u0627.", "tip.repo.withdraw": "\u064A\u0632\u064A\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639 \u0645\u0646 \u0627\u0644\u0634\u0628\u0643\u0629. \u0644\u0646 \u064A\u062A\u0645\u0643\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0648\u0646 \u0627\u0644\u0622\u062E\u0631\u0648\u0646 \u0645\u0646 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u064A\u0647 \u0623\u0648 \u062A\u0646\u0632\u064A\u0644\u0647 \u0628\u0639\u062F \u0627\u0644\u0622\u0646. \u062A\u0628\u0642\u0649 \u0645\u0644\u0641\u0627\u062A\u0643 \u0639\u0644\u0649 \u062D\u0627\u0633\u0648\u0628\u0643.", "tip.ask": "\u064A\u0631\u0633\u0644 \u0633\u0624\u0627\u0644\u0643 \u0645\u0634\u0641\u0631\u064B\u0627 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u064A\u0634\u063A\u0651\u0644 \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u0641\u062A\u0648\u062D\u064B\u0627. \u064A\u0643\u0644\u0651\u0641 \u0628\u0636\u0639\u0629 \u0623\u0631\u0635\u062F\u0629.", "tip.tier": "\u062D\u062C\u0645 \u0627\u0644\u0646\u0645\u0648\u0630\u062C: \u0627\u0644\u0635\u063A\u064A\u0631 \u0633\u0631\u064A\u0639 \u0648\u0631\u062E\u064A\u0635\u060C \u0648\u0627\u0644\u0643\u0628\u064A\u0631 \u0623\u0630\u0643\u0649 \u0648\u064A\u0643\u0644\u0651\u0641 \u0623\u0631\u0635\u062F\u0629 \u0623\u0643\u062B\u0631.", "tip.show_key": "\u064A\u0639\u0631\u0636 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0630\u064A \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0623\u062F\u0648\u0627\u062A \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u062A\u0648\u0627\u0635\u0644 \u0645\u0639 BitPull. \u0644\u0627 \u062A\u0634\u0627\u0631\u0643\u0647 \u0645\u0639 \u0623\u062D\u062F.", "tip.setup.download": "\u064A\u0646\u0632\u0651\u0644 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0631\u0633\u0645\u064A \u0644\u0640 {name} \u0644\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0625\u0644\u0649 \u0645\u062C\u0644\u062F \u0627\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0648\u064A\u0641\u062A\u062D\u0647. \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647 \u0644\u0625\u0643\u0645\u0627\u0644 \u0627\u0644\u062A\u062B\u0628\u064A\u062A.", "tip.setup.start": "\u064A\u0634\u063A\u0651\u0644 {name}\u060C \u0648\u0647\u0648 \u0645\u062B\u0628\u0651\u062A \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0643\u0646\u0647 \u0644\u0627 \u064A\u0639\u0645\u0644.", "tip.setup.pull": "\u064A\u0646\u0632\u0651\u0644 \u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u200F{model} \u200F({size} GB) \u0625\u0644\u0649 Ollama\u060C \u0644\u064A\u062A\u0645\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0646 \u062A\u0642\u062F\u064A\u0645\u0647 \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "tip.setup.open": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 {name} \u0627\u0644\u0631\u0633\u0645\u064A\u0629 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "tip.setup.recheck": "\u064A\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627 \u0645\u0645\u0627 \u0647\u0648 \u0645\u062B\u0628\u0651\u062A \u0648\u064A\u0639\u0645\u0644 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "update.title": "\u062A\u062D\u062F\u064A\u062B\u0627\u062A \u0627\u0644\u062A\u0637\u0628\u064A\u0642", "update.current": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0645\u062B\u0628\u0651\u062A: {v}", "update.latest": "\u0623\u062D\u062F\u062B \u0625\u0635\u062F\u0627\u0631: {v}", "update.button": "\u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A", "update.install": "\u062B\u0628\u0651\u062A \u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0627\u0644\u0622\u0646", "update.available": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0645\u062A\u0627\u062D.", "update.not_in_app": "\u064A\u062B\u0628\u0651\u062A \u062A\u0637\u0628\u064A\u0642 BitPull \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A. \u0627\u0641\u062A\u062D \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0647\u0630\u0647 \u0645\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0644\u062A\u062D\u062F\u064A\u062B.", "update.state.requested": "\u062C\u0627\u0631\u064D \u0637\u0644\u0628 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642\u2026", "update.state.checking": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A\u2026", "update.state.up_to_date": "\u0644\u062F\u064A\u0643 \u0623\u062D\u062F\u062B \u0625\u0635\u062F\u0627\u0631.", "update.state.installing": "\u062C\u0627\u0631\u064D \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0648\u062A\u062B\u0628\u064A\u062A\u0647\u2026 \u0633\u064A\u064F\u0639\u0627\u062F \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627.", "update.state.restarting": "\u062C\u0627\u0631\u064D \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0634\u063A\u064A\u0644 \u0628\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v}\u2026", "update.state.error": "\u0644\u0645 \u064A\u0646\u062C\u062D \u0627\u0644\u062A\u062D\u062F\u064A\u062B: {msg}. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627.", "tip.update": "\u064A\u062A\u062D\u0642\u0642 \u0645\u0646 \u0648\u062C\u0648\u062F \u0625\u0635\u062F\u0627\u0631 \u0623\u062D\u062F\u062B \u0645\u0646 BitPull. \u0625\u0646 \u0648\u064F\u062C\u062F\u060C \u064A\u0646\u0632\u0651\u0644\u0647 \u0648\u064A\u062A\u062D\u0642\u0642 \u0645\u0646 \u062A\u0648\u0642\u064A\u0639\u0647 \u0648\u064A\u062B\u0628\u0651\u062A\u0647 \u0648\u064A\u0639\u064A\u062F \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u062A\u062A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0644\u0628\u0636\u0639 \u062B\u0648\u0627\u0646\u064D.", "tools.hint": "\u062F\u0639 \u0645\u0633\u0627\u0639\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062F\u064A\u0643 \u064A\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u0634\u064A\u0641\u0631\u0629 \u0627\u0644\u0645\u0634\u062A\u0631\u0643\u0629 \u0648\u064A\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0648\u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629. \u0627\u062E\u062A\u0631 \u0623\u062F\u0627\u062A\u0643:", "tools.connect": "\u0627\u0631\u0628\u0637", "tools.connected": "\u0645\u0631\u062A\u0628\u0637", "tools.copy": "\u0627\u0646\u0633\u062E", "tools.copied": "\u062A\u0645 \u0627\u0644\u0646\u0633\u062E.", "tools.installed": "\u0645\u062B\u0628\u0651\u062A", "tools.not_found": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "tools.done": "\u062A\u0645. \u0623\u0639\u062F \u062A\u0634\u063A\u064A\u0644 {name} \u0644\u062A\u0628\u062F\u0623 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 BitPull.", "tools.manual": "\u0644\u0625\u0636\u0627\u0641\u062A\u0647 \u064A\u062F\u0648\u064A\u064B\u0627:", "tools.config_invalid": "\u0645\u0644\u0641 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {name} \u0644\u064A\u0633 JSON \u0635\u0627\u0644\u062D\u064B\u0627\u060C \u0644\u0630\u0627 \u0644\u0645 \u064A\u0644\u0645\u0633\u0647 BitPull. \u0623\u0635\u0644\u062D \u0627\u0644\u0645\u0644\u0641 \u0623\u0648 \u0623\u0636\u0641 BitPull \u064A\u062F\u0648\u064A\u064B\u0627 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \xAB\u0627\u0646\u0633\u062E\xBB.", "tip.tools.connect": "\u064A\u0636\u064A\u0641 BitPull \u0625\u0644\u0649 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {name} \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627. \u062A\u064F\u062D\u0641\u0638 \u0646\u0633\u062E\u0629 \u0627\u062D\u062A\u064A\u0627\u0637\u064A\u0629 \u0645\u0646 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u062C\u0627\u0646\u0628\u0647\u0627.", "tip.tools.copy": "\u064A\u0646\u0633\u062E \u0627\u0644\u0623\u0645\u0631 \u0623\u0648 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629\u060C \u0644\u062A\u0636\u064A\u0641 BitPull \u0625\u0644\u0649 {name} \u0628\u0646\u0641\u0633\u0643.", "models.title": "\u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u0644\u0645\u0634\u0627\u0631\u0643\u0629", "models.hint": "\u0646\u0645\u0627\u0630\u062C \u0645\u0641\u062A\u0648\u062D\u0629 \u0645\u0646 \u0643\u0644 \u0627\u0644\u0623\u0646\u0648\u0627\u0639 \u064A\u0645\u0643\u0646 \u0644\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0625\u0639\u0627\u0631\u062A\u0647\u0627. \u0644\u0627 \u062A\u064F\u0639\u0631\u0636 \u0625\u0644\u0627 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u062A\u064A \u062A\u0633\u0645\u062D \u0631\u062E\u0635\u062A\u0647\u0627 \u0628\u062A\u0642\u062F\u064A\u0645\u0647\u0627 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u062A\u064F\u0639\u0631\u0636 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u062A\u064A \u0646\u0632\u0651\u0644\u062A\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0645\u0627 \u062F\u0627\u0645\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629.", "models.engine.title": "\u0645\u062D\u0631\u0643 \u0627\u0644\u0635\u0648\u0631 \u0648\u0627\u0644\u0635\u0648\u062A \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649", "models.engine.help": "Lemonade (\u0645\u0641\u062A\u0648\u062D \u0627\u0644\u0645\u0635\u062F\u0631): \u062A\u0648\u0644\u064A\u062F \u0627\u0644\u0635\u0648\u0631\u060C \u0648\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0643\u0644\u0627\u0645 \u0625\u0644\u0649 \u0646\u0635\u060C \u0648\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0643\u0644\u0627\u0645\u060C \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649\u060C \u0648\u0625\u0639\u0627\u062F\u0629 \u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0645\u0633\u062A\u0646\u062F\u0627\u062A\u060C \u0648\u062A\u0643\u0628\u064A\u0631 \u0627\u0644\u0635\u0648\u0631. \u064A\u064F\u062B\u0628\u064E\u0651\u062A \u062F\u0627\u062E\u0644 BitPull \u062F\u0648\u0646 \u0635\u0644\u0627\u062D\u064A\u0627\u062A \u0627\u0644\u0645\u0633\u0624\u0648\u0644.", "models.engine.install": "\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643", "models.engine.repair": "\u0625\u0639\u0627\u062F\u0629 \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643", "models.engine.unsupported": "\u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 (\u064A\u062A\u0637\u0644\u0628 Apple silicon\u060C \u0623\u0648 Windows/Linux x64)", "models.need_engine": "\u062B\u0628\u0651\u062A \u0627\u0644\u0645\u062D\u0631\u0643 \u0623\u0648\u0644\u064B\u0627", "models.not_here": "\u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "models.shared": "\u062A\u0645 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 \xB7 \u0645\u064F\u0634\u0627\u0631\u0643", "models.download": "\u062A\u0646\u0632\u064A\u0644 ({size} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A)", "models.needs_ram": "\u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0646\u062D\u0648 {ram} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0645\u0646 \u0627\u0644\u0630\u0627\u0643\u0631\u0629: \u0642\u062F \u064A\u0643\u0648\u0646 \u0628\u0637\u064A\u0626\u064B\u0627 \u0647\u0646\u0627", "models.recommended": "\u0645\u0648\u0635\u0649 \u0628\u0647", "models.license": "\u0627\u0644\u0631\u062E\u0635\u0629", "models.ok.engine": "\u062C\u0627\u0631\u064D \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643\u2026", "task.chat": "\u0627\u0644\u0646\u0635 \u0648\u0627\u0644\u0628\u0631\u0645\u062C\u0629", "task.vision": "\u0627\u0644\u0635\u0648\u0631 \u2190 \u0646\u0635", "task.ocr": "\u0627\u0644\u0645\u0633\u062A\u0646\u062F\u0627\u062A (OCR)", "task.translate": "\u0627\u0644\u062A\u0631\u062C\u0645\u0629", "task.embed": "\u0627\u0644\u062A\u0636\u0645\u064A\u0646\u0627\u062A (\u0627\u0644\u0628\u062D\u062B)", "task.rerank": "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628", "task.image": "\u062A\u0648\u0644\u064A\u062F \u0627\u0644\u0635\u0648\u0631", "task.upscale": "\u062A\u0643\u0628\u064A\u0631 \u0627\u0644\u0635\u0648\u0631", "task.stt": "\u0627\u0644\u0643\u0644\u0627\u0645 \u0625\u0644\u0649 \u0646\u0635", "task.tts": "\u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0643\u0644\u0627\u0645", "task.music": "\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649", "limits.title": "\u062D\u062F\u0648\u062F\u0643 \u0644\u0644\u0622\u062E\u0631\u064A\u0646", "limits.hint": "\u0645\u0642\u062F\u0627\u0631 \u0639\u0645\u0644 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0627\u0644\u0630\u064A \u064A\u0646\u062C\u0632\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u0627\u062A\u0631\u0643\u0647 \u0641\u0627\u0631\u063A\u064B\u0627 \u0644\u0639\u062F\u0645 \u0648\u0636\u0639 \u062D\u062F. \u0639\u0646\u062F \u0628\u0644\u0648\u063A \u062D\u062F\u064D\u0651 \u0645\u0627\u060C \u062A\u062A\u0648\u0642\u0641 \u0646\u0645\u0627\u0630\u062C\u0643 \u0639\u0646 \u0627\u0644\u0639\u0631\u0636 \u062D\u062A\u0649 \u0628\u062F\u0627\u064A\u0629 \u0627\u0644\u0641\u062A\u0631\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629.", "limits.save": "\u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F", "limits.requests": "\u0627\u0644\u0637\u0644\u0628\u0627\u062A", "limits.tokens": "\u0627\u0644\u0631\u0645\u0648\u0632", "limits.used": "\u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645", "limits.day": "\u064A\u0648\u0645\u064A\u064B\u0627", "limits.week": "\u0623\u0633\u0628\u0648\u0639\u064A\u064B\u0627", "limits.month": "\u0634\u0647\u0631\u064A\u064B\u0627", "limits.none": "\u0628\u0644\u0627 \u062D\u062F", "limits.usage": "{requests} \u0637\u0644\u0628\u0627\u062A \xB7 {tokens} \u0631\u0645\u0632", "limits.saved": "\u062A\u0645 \u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F.", "tip.models.engine": "\u064A\u0646\u0632\u0651\u0644 \u0645\u062D\u0631\u0643 Lemonade \u0645\u0641\u062A\u0648\u062D \u0627\u0644\u0645\u0635\u062F\u0631 \u062F\u0627\u062E\u0644 BitPull\u060C \u0644\u064A\u062A\u0645\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0646 \u0625\u0639\u0627\u0631\u0629 \u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0635\u0648\u0631 \u0648\u0627\u0644\u0635\u0648\u062A \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649.", "tip.models.download": "\u064A\u0646\u0632\u0651\u0644 {model} ({size} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A) \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0639\u0631\u0636\u0647 \u0639\u0644\u0649 \u0627\u0644\u0622\u062E\u0631\u064A\u0646. \u064A\u0645\u0643\u0646\u0643 \u062D\u0630\u0641\u0647 \u0644\u0627\u062D\u0642\u064B\u0627.", "tip.limits.save": "\u064A\u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F \u0627\u0644\u064A\u0648\u0645\u064A\u0629 \u0648\u0627\u0644\u0623\u0633\u0628\u0648\u0639\u064A\u0629 \u0648\u0627\u0644\u0634\u0647\u0631\u064A\u0629 \u0644\u0639\u0645\u0644 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "lend.visible": "\u2713 \u062A\u0631\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628: {cpus} \u0645\u0639\u0627\u0644\u062C \u0648{ram} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0645\u062A\u0627\u062D\u0629 \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "lend.invisible": "\u0644\u0627 \u062A\u0631\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0628\u0639\u062F: \u0627\u0646\u062A\u0638\u0631 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629\u061B \u0648\u0625\u0646 \u0628\u0642\u064A \u0627\u0644\u0623\u0645\u0631 \u0643\u0630\u0644\u0643 \u0641\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A.", "lend.unusable": "\u26A0 \u0644\u0627 \u064A\u0645\u0643\u0646 \u0644\u0623\u062D\u062F \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0639\u062F: \u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u0634\u063A\u064A\u0644 \u0623\u064A \u0645\u0647\u0645\u0629 \u0647\u0646\u0627. {reason}", "lend.unusable.docker": '\u0644\u0627 \u064A\u062C\u062A\u0627\u0632 Docker \u0641\u062D\u0635 \u0627\u0644\u0639\u0632\u0644 \u0641\u064A BitPull: \u0631\u0627\u062C\u0639 "\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628".', "lend.unusable.off": '\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A \u0645\u062A\u0648\u0642\u0641\u0629 \u0648\u0644\u0627 \u064A\u0648\u062C\u062F \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u062B\u0628\u062A: \u0641\u0639\u0651\u0644 "\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A" \u0623\u0648 \u0646\u0632\u0651\u0644 \u0646\u0645\u0648\u0630\u062C\u064B\u0627.', "lend.docker_login": '\u0644\u0627 \u064A\u0633\u062A\u0637\u064A\u0639 Docker \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0644\u0623\u0646 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644\u0647 \u0625\u0644\u0649 Docker Hub \u0644\u0645 \u064A\u0639\u062F \u0635\u0627\u0644\u062D\u064B\u0627. \u0641\u064A Docker Desktop \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u062D\u0633\u0627\u0628\u0643 (\u0623\u0639\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646) \u2190 Sign out\u060C \u062B\u0645 \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0623\u0648 \u0627\u0628\u0642\u064E \u062F\u0648\u0646 \u062A\u0633\u062C\u064A\u0644. \u062B\u0645 \u0627\u0636\u063A\u0637 "\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627".', "lend.off_hint": '\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u062A\u0648\u0642\u0641\u0629: \u0641\u0639\u0651\u0644 "{enabled}" \u0641\u064A "{rules}" \u0623\u062F\u0646\u0627\u0647 \u0648\u0627\u0636\u063A\u0637 "{save}". (\u0627\u0644\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0645\u0624\u0642\u062A / \u0627\u0644\u0627\u0633\u062A\u0626\u0646\u0627\u0641 \u064A\u0648\u0642\u0641 \u0645\u0624\u0642\u062A\u064B\u0627 \u0641\u0642\u0637 \u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629 \u0623\u0635\u0644\u064B\u0627.)', "lend.low_memory": '\u062A\u0639\u0631\u0636 {mb} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0641\u0642\u0637 \u0645\u0646 \u0627\u0644\u0630\u0627\u0643\u0631\u0629: \u0644\u0646 \u064A\u062A\u0633\u0639 \u0630\u0644\u0643 \u0625\u0644\u0627 \u0644\u0645\u0647\u0627\u0645 \u0642\u0644\u064A\u0644\u0629. \u0641\u064A "{rules}" \u0627\u0636\u0628\u0637 "{memory}" \u0645\u062B\u0644\u064B\u0627 \u0639\u0644\u0649 4096 (= 4 \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A) \u0648\u0627\u0636\u063A\u0637 "{save}".' }, bn: { "lang.name": "\u09AC\u09BE\u0982\u09B2\u09BE", "app.title": "BitPull", "locked.text": "BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u0996\u09C1\u09B2\u09C1\u09A8: \u098F\u09B0 \u09B2\u09BF\u0982\u0995\u09C7 \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u0995\u09C0 \u09A5\u09BE\u0995\u09C7\u0964", "pill.online": "\u0985\u09A8\u09B2\u09BE\u0987\u09A8", "pill.offline": "\u0985\u09AB\u09B2\u09BE\u0987\u09A8", "pill.direct": "\u09B8\u09B0\u09BE\u09B8\u09B0\u09BF \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", "pill.relay_on": "\u09B0\u09BF\u09B2\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4", "pill.relay_off": "\u09B0\u09BF\u09B2\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u09A8\u09AF\u09BC", "pill.cached": "{n}\u099F\u09BF \u0995\u09CD\u09AF\u09BE\u09B6 \u0995\u09B0\u09BE \u0995\u09AA\u09BF", "net.title": "\u09B2\u09BE\u0987\u09AD \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995", "net.online": "{n}\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09B2\u09BE\u0987\u09A8\u09C7", "net.lending": "{n}\u099F\u09BF \u098F\u0996\u09A8 \u09A7\u09BE\u09B0 \u09A6\u09BF\u099A\u09CD\u099B\u09C7", "net.cpu": "{n}\u099F\u09BF CPU \u0995\u09CB\u09B0", "net.ram": "{n} GB RAM", "net.gpu": "{n}\u099F\u09BF GPU", "net.models": "{n}\u099F\u09BF AI \u09AE\u09A1\u09C7\u09B2", "net.jobs": "{n}\u099F\u09BF \u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "credits.title": "\u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u09AC\u09CD\u09AF\u09BE\u09B2\u09BE\u09A8\u09CD\u09B8", "credits.plan": "{plan} \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8 \xB7 {n} \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09A8\u09BE\u09AE\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7", "plan.free": "\u09AB\u09CD\u09B0\u09BF", "plan.base": "\u09AC\u09C7\u09B8\u09BF\u0995", "plan.pro": "\u09AA\u09CD\u09B0\u09CB", "buy.base": "\u09AC\u09C7\u09B8\u09BF\u0995 \u20AC4.50", "buy.pro": "\u09AA\u09CD\u09B0\u09CB \u20AC9.90", "buy.recharge": "\u09B0\u09BF\u099A\u09BE\u09B0\u09CD\u099C \u20AC5", "buy.ok": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "lend.title": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A8", "lend.hint": "\u0995\u09BE\u099C\u0997\u09C1\u09B2\u09CB \u0986\u09B2\u09BE\u09A6\u09BE \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u098F\u09A8\u09CD\u09A1-\u099F\u09C1-\u098F\u09A8\u09CD\u09A1 \u098F\u09A8\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F\u09C7\u09A1 \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u099A\u09B2\u09C7, \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2\u09C7 \u0995\u09CB\u09A8\u09CB \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u099B\u09BE\u09A1\u09BC\u09BE\u0987\u0964 \u0986\u09AA\u09A8\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u0995\u09B0\u09C7\u09A8\u0964", "lend.state.off": "\u09AC\u09A8\u09CD\u09A7", "lend.state.waiting": "\u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09AE\u09BE\u09A3", "lend.state.working": "\u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "lend.reason.lending_off": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7", "lend.reason.paused": "\u09AC\u09BF\u09B0\u09A4\u09BF\u09A4\u09C7", "lend.reason.outside_hours": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09A8\u09BF\u09B0\u09CD\u09A7\u09BE\u09B0\u09BF\u09A4 \u09B8\u09AE\u09AF\u09BC\u09C7\u09B0 \u09AC\u09BE\u0987\u09B0\u09C7", "lend.reason.on_battery": "\u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF\u09A4\u09C7 \u099A\u09B2\u099B\u09C7", "lend.reason.computer_in_use": "\u0986\u09AA\u09A8\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u099B\u09C7\u09A8", "lend.reason.no_jobs": "\u09B8\u09BE\u09B0\u09BF\u09A4\u09C7 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A8\u09C7\u0987", "lend.running": "{time} \u09A5\u09C7\u0995\u09C7 \u098F\u0995\u099F\u09BF {kind} \u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "lend.detail": "{reason} \xB7 {n}\u099F\u09BF \u0995\u09BE\u099C \u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8 \xB7 \u09A6\u09BF\u099A\u09CD\u099B\u09C7 {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8 {name}", "lend.detail.models": ", {n}\u099F\u09BF \u09AE\u09A1\u09C7\u09B2", "lend.pause": "\u09AC\u09BF\u09B0\u09A4\u09BF", "lend.resume": "\u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1", "lend.paused_ok": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09BF\u09B0\u09A4\u09BF\u09A4\u09C7\u0964 \u099A\u09B2\u09AE\u09BE\u09A8 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A5\u09BE\u0995\u09B2\u09C7 \u09A4\u09BE \u0985\u09A8\u09CD\u09AF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "lend.resumed_ok": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "setup.title": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8", "setup.hint": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u09AF\u09BE \u09A6\u09B0\u0995\u09BE\u09B0\u0964 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u0986\u09B0 \u0995\u09BF\u099B\u09C1 \u09B2\u09BE\u0997\u09C7 \u09A8\u09BE\u0964 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u0986\u09B8\u09C7 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u09B8\u09BE\u0987\u099F \u09A5\u09C7\u0995\u09C7; \u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09BF\u09B8\u09CD\u099F\u09C7\u09AE \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09A4\u09C7 \u09AC\u09B2\u09AC\u09C7\u0964", "setup.checking": "\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "setup.docker.help": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u0995\u09BE\u099C \u0986\u09B2\u09BE\u09A6\u09BE \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 \u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964 \u09AC\u09CD\u09AF\u0995\u09CD\u09A4\u09BF\u0997\u09A4 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0993 \u099B\u09CB\u099F \u09AC\u09CD\u09AF\u09AC\u09B8\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u09AB\u09CD\u09B0\u09BF\u0964", "setup.docker.download": "Docker \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8", "setup.docker.start": "Docker \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.apple.title": "Apple Container (\u0990\u099A\u09CD\u099B\u09BF\u0995)", "setup.apple.help": "\u0986\u09B0\u0993 \u09B6\u0995\u09CD\u09A4\u09BF\u09B6\u09BE\u09B2\u09C0 \u09AC\u09BF\u099A\u09CD\u099B\u09BF\u09A8\u09CD\u09A8\u09A4\u09BE: \u09AA\u09CD\u09B0\u09A4\u09BF\u099F\u09BF \u0995\u09BE\u099C \u09A8\u09BF\u099C\u09B8\u09CD\u09AC \u09AD\u09BE\u09B0\u09CD\u099A\u09C1\u09AF\u09BC\u09BE\u09B2 \u09AE\u09C7\u09B6\u09BF\u09A8\u09C7\u0964 \u0990\u099A\u09CD\u099B\u09BF\u0995; \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09A4\u09C7 Docker-\u0987 \u09AF\u09A5\u09C7\u09B7\u09CD\u099F\u0964", "setup.apple.get": "Apple Container \u09A8\u09BF\u09A8", "setup.ollama.help": "\u0993\u09AA\u09C7\u09A8 AI \u09AE\u09A1\u09C7\u09B2 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC (Qwen, Llama, Mistral\u2026)\u0964 AI \u09AE\u09A1\u09C7\u09B2 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964", "setup.ollama.download": "Ollama \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8", "setup.ollama.start": "Ollama \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.model.title": "AI \u09AE\u09A1\u09C7\u09B2", "setup.model.help": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09AF\u09C7 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09C7\u09AF\u09BC\u0964 {ram} GB \u09AE\u09C7\u09AE\u09B0\u09BF\u09B0 \u099C\u09A8\u09CD\u09AF \u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09BE\u09AC\u09BF\u09A4: {model}\u0964", "setup.model.download": "{model} \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8 ({size} GB)", "setup.model.none": "\u098F\u0996\u09A8\u0993 \u0995\u09BF\u099B\u09C1 \u09A8\u09C7\u0987", "setup.model.need_ollama": "\u0986\u0997\u09C7 Ollama \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.nvidia.title": "NVIDIA GPU \u09A1\u09CD\u09B0\u09BE\u0987\u09AD\u09BE\u09B0 (\u0990\u099A\u09CD\u099B\u09BF\u0995)", "setup.nvidia.help": "\u09B6\u09C1\u09A7\u09C1 \u09AF\u09A6\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u098F\u09AE\u09A8 NVIDIA \u0997\u09CD\u09B0\u09BE\u09AB\u09BF\u0995\u09CD\u09B8 \u0995\u09BE\u09B0\u09CD\u09A1 \u09A5\u09BE\u0995\u09C7 \u09AF\u09BE \u0986\u09AA\u09A8\u09BF \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u099A\u09BE\u09A8\u0964", "setup.nvidia.get": "NVIDIA \u09A1\u09CD\u09B0\u09BE\u0987\u09AD\u09BE\u09B0 \u09A8\u09BF\u09A8", "setup.status.running": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0993 \u099A\u09BE\u09B2\u09C1", "setup.status.installed": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE", "setup.status.stopped": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE, \u099A\u09BE\u09B2\u09C1 \u09A8\u09AF\u09BC", "setup.status.missing": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u09A8\u09C7\u0987", "setup.status.found": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7", "setup.status.not_found": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF", "setup.terminal": "\u099F\u09BE\u09B0\u09CD\u09AE\u09BF\u09A8\u09BE\u09B2\u09C7 \u099A\u09BE\u09B2\u09BE\u09A8:", "setup.done": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8", "setup.opened": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8: {file} \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7, \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8", "setup.recheck": "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8", "setup.ok.download": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B6\u09C1\u09B0\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u09B6\u09C7\u09B7 \u09B9\u09B2\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0996\u09C1\u09B2\u09AC\u09C7: \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8\u0964", "setup.ok.start": "\u099A\u09BE\u09B2\u09C1 \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09B2\u09BE\u0997\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964 \u098F\u0987 \u09A4\u09BE\u09B2\u09BF\u0995\u09BE \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u09AF\u09BC\u0964", "setup.ok.pull": "\u09AE\u09A1\u09C7\u09B2 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B6\u09C1\u09B0\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0985\u0997\u09CD\u09B0\u0997\u09A4\u09BF \u0989\u09AA\u09B0\u09C7 \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7\u0964", "setup.ok.page": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "setup.ok.recheck": "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "rules.title": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE", "rules.enabled": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u099A\u09BE\u09B2\u09C1", "rules.enabled.help": "\u09AA\u09CD\u09B0\u09A7\u09BE\u09A8 \u09B8\u09C1\u0987\u099A\u0964 \u09AC\u09A8\u09CD\u09A7 \u09A5\u09BE\u0995\u09B2\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0995\u0996\u09A8\u09CB \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u0995\u09BE\u099C \u099A\u09BE\u09B2\u09BE\u09AF\u09BC \u09A8\u09BE\u0964 \u0986\u09AA\u09A8\u09BF \u09A8\u09BF\u099C\u09C7 \u09A4\u09AC\u09C1\u0993 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8\u0964", "rules.cpus": "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A CPU", "rules.cpus.help": "\u098F\u0995\u099F\u09BF \u0995\u09BE\u099C \u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u0995\u09A4\u0997\u09C1\u09B2\u09CB \u09AA\u09CD\u09B0\u09B8\u09C7\u09B8\u09B0 \u0995\u09CB\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u0964 \u0989\u09A6\u09BE\u09B9\u09B0\u09A3: \u09EE \u0995\u09CB\u09B0\u09C7\u09B0 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 2 \u09A6\u09BF\u09B2\u09C7 \u0986\u09AA\u09A8\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u09EC\u099F\u09BF \u0995\u09CB\u09B0 \u0996\u09BE\u09B2\u09BF \u09A5\u09BE\u0995\u09C7\u0964", "rules.memory": "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u09AE\u09C7\u09AE\u09B0\u09BF (MB)", "rules.memory.help": "\u098F\u0995\u099F\u09BF \u0995\u09BE\u099C \u09AF\u09A4 RAM \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7, \u09AE\u09C7\u0997\u09BE\u09AC\u09BE\u0987\u099F\u09C7 (1024 MB = 1 GB)\u0964 BitPull \u0995\u0996\u09A8\u09CB \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u0985\u09B0\u09CD\u09A7\u09C7\u0995\u09C7\u09B0 \u09AC\u09C7\u09B6\u09BF \u09AE\u09C7\u09AE\u09B0\u09BF \u09A6\u09C7\u09AF\u09BC \u09A8\u09BE\u0964", "rules.gpu": "GPU", "rules.gpu.none": "\u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC", "rules.gpu.consumer": "\u09B8\u09BE\u09A7\u09BE\u09B0\u09A3 (8\u201312 GB)", "rules.gpu.high": "\u0989\u099A\u09CD\u099A\u09AE\u09BE\u09A8\u09C7\u09B0 (16\u201324 GB)", "rules.gpu.datacenter": "\u09A1\u09C7\u099F\u09BE \u09B8\u09C7\u09A8\u09CD\u099F\u09BE\u09B0 (40 GB+)", "rules.gpu.help": '\u0986\u09AA\u09A8\u09BF \u09AF\u09C7 \u0997\u09CD\u09B0\u09BE\u09AB\u09BF\u0995\u09CD\u09B8 \u0995\u09BE\u09B0\u09CD\u09A1 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09A8, \u09AD\u09BF\u09A1\u09BF\u0993 \u09AE\u09C7\u09AE\u09B0\u09BF \u0985\u09A8\u09C1\u09AF\u09BE\u09AF\u09BC\u09C0\u0964 \u0986\u09B2\u09BE\u09A6\u09BE GPU \u09A8\u09BE \u09A5\u09BE\u0995\u09B2\u09C7 \u09AC\u09BE \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A8\u09BE \u099A\u09BE\u0987\u09B2\u09C7 "\u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC" \u09B0\u09BE\u0996\u09C1\u09A8\u0964 GPU \u09B8\u09AC\u099A\u09C7\u09AF\u09BC\u09C7 \u09AC\u09C7\u09B6\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u0995\u09B0\u09C7\u0964', "rules.containers": "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C", "rules.containers.help": "\u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u0993 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2\u09C7 \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u099B\u09BE\u09A1\u09BC\u09BE \u098F\u0995\u099F\u09BF \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09AC\u09BF\u09B2\u09CD\u09A1, \u099F\u09C7\u09B8\u09CD\u099F \u0993 \u09B8\u09CD\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 Docker (\u09AC\u09BE Apple Container) \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8: \u09A6\u09C7\u0996\u09C1\u09A8 \u201C\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8\u201D\u0964", "rules.models": "\u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 (Ollama)", "rules.models.help": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 Ollama-\u09A4\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u09AF\u09BC\u09C7 AI \u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u0989\u09A4\u09CD\u09A4\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964 Ollama \u0993 \u0985\u09A8\u09CD\u09A4\u09A4 \u098F\u0995\u099F\u09BF \u09AE\u09A1\u09C7\u09B2 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964", "rules.idle": "\u09B6\u09C1\u09A7\u09C1 \u098F\u09A4 \u09AE\u09BF\u09A8\u09BF\u099F \u09A8\u09BF\u09B7\u09CD\u0995\u09CD\u09B0\u09BF\u09AF\u09BC \u09A5\u09BE\u0995\u09BE\u09B0 \u09AA\u09B0", "rules.idle.help": "\u098F\u09A4 \u09AE\u09BF\u09A8\u09BF\u099F \u0995\u09BF\u09AC\u09CB\u09B0\u09CD\u09A1 \u09AC\u09BE \u09AE\u09BE\u0989\u09B8 \u09A8\u09BE \u099B\u09C1\u0981\u09B2\u09C7 \u09A4\u09AC\u09C7\u0987 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964 0 = \u0986\u09AA\u09A8\u09BF \u0995\u09BE\u099C \u0995\u09B0\u09BE\u09B0 \u09B8\u09AE\u09AF\u09BC\u0993 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964", "rules.ac": "\u09B6\u09C1\u09A7\u09C1 \u099A\u09BE\u09B0\u09CD\u099C\u09BE\u09B0\u09C7 \u09B2\u09BE\u0997\u09BE\u09A8\u09CB \u09A5\u09BE\u0995\u09B2\u09C7", "rules.ac.help": "\u09B2\u09CD\u09AF\u09BE\u09AA\u099F\u09AA\u09C7 \u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF\u09A4\u09C7 \u099A\u09B2\u09B2\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u09B9\u09AF\u09BC, \u09AF\u09BE\u09A4\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09AF\u09BC \u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF \u0995\u0996\u09A8\u09CB \u09AB\u09C1\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A8\u09BE \u09AF\u09BE\u09AF\u09BC\u0964", "rules.hours": "\u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u0998\u09A3\u09CD\u099F\u09BE \u09A5\u09C7\u0995\u09C7 / \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 (\u0996\u09BE\u09B2\u09BF = \u09B8\u09AC\u09B8\u09AE\u09AF\u09BC)", "rules.hours.help": "\u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u09B8\u09AE\u09AF\u09BC\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC, \u09E8\u09EA-\u0998\u09A3\u09CD\u099F\u09BE \u09AB\u09B0\u09AE\u09CD\u09AF\u09BE\u099F\u09C7\u0964 \u0989\u09A6\u09BE\u09B9\u09B0\u09A3: 22 \u0993 8 = \u09B0\u09BE\u09A4 \u09E7\u09E6\u099F\u09BE \u09A5\u09C7\u0995\u09C7 \u09B8\u0995\u09BE\u09B2 \u09EE\u099F\u09BE\u0964 \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A6\u09C1\u099F\u09CB\u0987 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964", "rules.cache": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09B0\u09BF\u09AA\u09CB\u09B0 \u0995\u09CD\u09AF\u09BE\u09B6 \u0995\u09B0\u09BE \u0995\u09AA\u09BF", "rules.cache.help": "\u0985\u09A8\u09CD\u09AF \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09A6\u09C7\u09B0 \u0995\u09A4\u0997\u09C1\u09B2\u09CB \u09AA\u09BE\u09AC\u09B2\u09BF\u0995 \u09B0\u09BF\u09AA\u09CB\u09B0 \u0995\u09AA\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B0\u09BE\u0996\u09AC\u09C7, \u09AF\u09BE\u09A4\u09C7 \u09B2\u09C7\u0996\u0995\u09B0\u09BE \u0985\u09AB\u09B2\u09BE\u0987\u09A8\u09C7 \u09A5\u09BE\u0995\u09B2\u09C7\u0993 \u09B8\u09C7\u0997\u09C1\u09B2\u09CB \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u0964 \u09B8\u09BE\u09AE\u09BE\u09A8\u09CD\u09AF \u09A1\u09BF\u09B8\u09CD\u0995 \u099C\u09BE\u09AF\u09BC\u0997\u09BE \u09B2\u09BE\u0997\u09C7 \u098F\u09AC\u0982 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u09B9\u09AF\u09BC\u0964 0 = \u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC\u0964", "rules.save": "\u09A8\u09BF\u09AF\u09BC\u09AE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3", "rules.saved": "\u09A8\u09BF\u09AF\u09BC\u09AE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u0995\u09BE\u09B0\u09CD\u09AF\u0995\u09B0 \u09B9\u09AC\u09C7\u0964", "rules.hours_both": "\u09A6\u09C1\u099F\u09CB \u0998\u09A3\u09CD\u099F\u09BE\u0987 \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8, \u0985\u09A5\u09AC\u09BE \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A6\u09C1\u099F\u09CB\u0987 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964", "folders.title": "\u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0", "folders.hint": "BitPull \u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u0997\u09C1\u09B2\u09CB \u09AA\u09A1\u09BC\u09C7\u0964 \u098F\u0995\u099F\u09BF \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0995\u09B0\u09A4\u09C7 \u09B8\u09AE\u09CD\u09AA\u09C2\u09B0\u09CD\u09A3 bitpull.json \u09B2\u09BE\u0997\u09AC\u09C7\u0964", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8", "folders.none": "\u0995\u09CB\u09A8\u09CB \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09A8\u09C7\u0987\u0964", "folders.draft": "\u0996\u09B8\u09A1\u09BC\u09BE", "folders.publish": "\u09AA\u09CD\u09B0\u0995\u09BE\u09B6", "folders.remove": "\u09B8\u09B0\u09BE\u09A8", "folders.need_path": "\u0986\u0997\u09C7 \u098F\u0995\u099F\u09BF \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7\u09B0 \u09AA\u09C2\u09B0\u09CD\u09A3 \u09AA\u09BE\u09A5 \u09B2\u09BF\u0996\u09C1\u09A8, \u09AF\u09C7\u09AE\u09A8 /Users/you/projects/my-library\u0964", "folders.added": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "folders.removed": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09B8\u09B0\u09BE\u09A8\u09CB \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 BitPull \u0986\u09B0 \u098F\u099F\u09BF \u09AA\u09A1\u09BC\u09AC\u09C7 \u09A8\u09BE\u0964", "folders.drafted": "\u0996\u09B8\u09A1\u09BC\u09BE \u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09C1\u09A4: {n}\u099F\u09BF \u09AB\u09BE\u0987\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 AI-\u0995\u09C7 \u09B8\u09BE\u09B0\u09BE\u0982\u09B6 \u0993 \u09AC\u09BF\u09AC\u09B0\u09A3 \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09A4\u09C7 \u09A6\u09BF\u09A8 (prepare_publish \u099F\u09C1\u09B2), \u09A4\u09BE\u09B0\u09AA\u09B0 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u099A\u09BE\u09AA\u09C1\u09A8\u0964", "folders.published": '"{name}" {n}\u099F\u09BF \u09AB\u09BE\u0987\u09B2\u09B8\u09B9 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964', "folders.secrets_in": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7: {where}", "folders.line": "{file} \u09B2\u09BE\u0987\u09A8 {line}", "repos.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB", "repos.hint": "\u09AB\u09BE\u0987\u09B2 \u09AC\u09A6\u09B2\u09BE\u09B2\u09C7 \u098F\u0997\u09C1\u09B2\u09CB \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u09AF\u09BC (\u09AA\u09CD\u09B0\u09A4\u09BF \u09EB \u09AE\u09BF\u09A8\u09BF\u099F\u09C7)\u0964", "repos.none": "\u0995\u09CB\u09A8\u09CB \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB \u09A8\u09C7\u0987\u0964", "repos.withdraw": "\u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B9\u09BE\u09B0", "repos.withdrawn": "\u09B0\u09BF\u09AA\u09CB \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09A5\u09C7\u0995\u09C7 \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B9\u09BE\u09B0 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "ask.title": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2", "ask.offers": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A6\u09BF\u099A\u09CD\u099B\u09C7: {models}\u0964", "ask.offers_none": "\u0995\u09CB\u09A8\u09CB \u09AE\u09A1\u09C7\u09B2 \u09A8\u09C7\u0987 (\u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u09A4\u09C7 Ollama \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8)", "ask.placeholder": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u098F\u0995\u099F\u09BF \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2\u0995\u09C7 \u099C\u09BF\u099C\u09CD\u099E\u09BE\u09B8\u09BE \u0995\u09B0\u09C1\u09A8\u2026", "ask.small": "\u099B\u09CB\u099F", "ask.medium": "\u09AE\u09BE\u099D\u09BE\u09B0\u09BF", "ask.large": "\u09AC\u09A1\u09BC", "ask.button": "\u099C\u09BF\u099C\u09CD\u099E\u09BE\u09B8\u09BE", "ask.empty": "\u0986\u0997\u09C7 \u098F\u0995\u099F\u09BF \u09AA\u09CD\u09B0\u09B6\u09CD\u09A8 \u09B2\u09BF\u0996\u09C1\u09A8\u0964", "ask.waiting": "\u09AE\u09A1\u09C7\u09B2\u09B8\u09B9 \u098F\u0995\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0996\u09CB\u0981\u099C\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09B2\u09BE\u0997\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "ask.credits": "{n} \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F", "tools.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u099F\u09C1\u09B2 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8", "tools.mcp": "Claude Code \u0993 MCP \u0995\u09CD\u09B2\u09BE\u09AF\u09BC\u09C7\u09A8\u09CD\u099F\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u099F\u09BE\u09B0\u09CD\u09AE\u09BF\u09A8\u09BE\u09B2\u09C7 \u099A\u09BE\u09B2\u09BE\u09A8:", "tools.openai": "OpenAI-\u09B8\u09BE\u09AE\u099E\u09CD\u099C\u09B8\u09CD\u09AF\u09AA\u09C2\u09B0\u09CD\u09A3 \u099F\u09C1\u09B2\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF: \u09AC\u09C7\u09B8 URL", "tools.key": "API \u0995\u09C0", "tools.show": "\u09A6\u09C7\u0996\u09BE\u09A8", "jobs.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09BE\u09AE\u09CD\u09AA\u09CD\u09B0\u09A4\u09BF\u0995 \u0995\u09BE\u099C", "jobs.none": "\u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A8\u09C7\u0987\u0964", "jobs.model": "\u09AE\u09A1\u09C7\u09B2", "jobs.container": "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0", "jobs.status.queued": "\u09B8\u09BE\u09B0\u09BF\u09A4\u09C7", "jobs.status.running": "\u099A\u09B2\u099B\u09C7", "jobs.status.done": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8", "jobs.status.failed": "\u09AC\u09CD\u09AF\u09B0\u09CD\u09A5", "jobs.status.canceled": "\u09AC\u09BE\u09A4\u09BF\u09B2", "jobs.cost": "{n} \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F", working: "\u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7\u2026", "err.agent_down": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 BitPull \u09B8\u09BE\u09A1\u09BC\u09BE \u09A6\u09BF\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u098F\u099F\u09BF \u09E9\u09E6 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC: \u098F\u0995\u099F\u09C1 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.server": "BitPull \u09B8\u09BE\u09B0\u09CD\u09AD\u09BE\u09B0\u09C7 \u09AA\u09CC\u0981\u099B\u09BE\u09A8\u09CB \u09AF\u09BE\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u09B8\u0982\u09AF\u09CB\u0997 \u09A6\u09C7\u0996\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.session": "\u098F\u0987 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u09B8\u09C7\u09B6\u09A8\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7\u0964 BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u0986\u09AC\u09BE\u09B0 \u0996\u09C1\u09B2\u09C1\u09A8\u0964", "err.billing": "\u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u098F\u0996\u09A8\u0993 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC\u09A8\u09BF\u0964", "err.no_folder": "\u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A8\u09C7\u0987\u0964 \u09AA\u09BE\u09A5 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8\u0964", "err.not_folder": "\u098F\u0987 \u09AA\u09BE\u09A5\u099F\u09BF \u098F\u0995\u099F\u09BF \u09AB\u09BE\u0987\u09B2, \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09A8\u09AF\u09BC\u0964", "err.credits": "\u09AF\u09A5\u09C7\u09B7\u09CD\u099F \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u09A8\u09C7\u0987\u0964", "err.device": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u098F\u0996\u09A8\u0993 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u09B9\u09AF\u09BC\u09A8\u09BF\u0964 BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u0996\u09CB\u09B2\u09BE \u09B0\u09BE\u0996\u09C1\u09A8 \u098F\u09AC\u0982 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.no_model": "\u098F\u0987 \u09AE\u09C1\u09B9\u09C2\u09B0\u09CD\u09A4\u09C7 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0995\u09CB\u09A8\u09CB \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 AI \u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.invalid": "\u0995\u09BF\u099B\u09C1 \u09AE\u09BE\u09A8 \u09B8\u09A0\u09BF\u0995 \u09A8\u09AF\u09BC\u0964 \u0998\u09B0\u0997\u09C1\u09B2\u09CB \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "tip.lang": "\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u09AD\u09BE\u09B7\u09BE\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u099B\u09A8\u09CD\u09A6 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AE\u09A8\u09C7 \u09B0\u09BE\u0996\u09BE \u09B9\u09AF\u09BC\u0964", "tip.buy.base": "\u09AC\u09C7\u09B8\u09BF\u0995 \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7: \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 \u20AC4.50, \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 80 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F\u09B8\u09B9\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09AC\u09BE\u09A4\u09BF\u09B2 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "tip.buy.pro": "\u09AA\u09CD\u09B0\u09CB \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7: \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 \u20AC9.90, \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 200 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F, \u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u0985\u0997\u09CD\u09B0\u09BE\u09A7\u09BF\u0995\u09BE\u09B0 \u098F\u09AC\u0982 \u09B8\u09AC GPU \u09B8\u09B9\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09AC\u09BE\u09A4\u09BF\u09B2 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "tip.buy.recharge": "\u20AC5 \u09A6\u09BF\u09AF\u09BC\u09C7 \u098F\u0995\u09AC\u09BE\u09B0\u09C7 80 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0995\u09C7\u09A8\u09BE\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7\u0964 \u098F\u0997\u09C1\u09B2\u09CB\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u0995\u0996\u09A8\u09CB \u09B6\u09C7\u09B7 \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.pause": "\u098F\u0996\u09A8\u0987 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7\u0964 \u098F\u0987 \u09AE\u09C1\u09B9\u09C2\u09B0\u09CD\u09A4\u09C7 \u099A\u09B2\u09AE\u09BE\u09A8 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u0985\u09A8\u09CD\u09AF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09A4\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09AA\u09C1\u09A8\u0964", "tip.resume": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE \u09AE\u09C7\u09A8\u09C7 \u0986\u09AC\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09C7\u0964", "tip.rules.save": "\u0993\u09AA\u09B0\u09C7\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE\u0997\u09C1\u09B2\u09CB \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C7\u0964 \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u0995\u09BE\u09B0\u09CD\u09AF\u0995\u09B0 \u09B9\u09AF\u09BC; \u0986\u09AA\u09A8\u09BF \u098F\u099F\u09BF \u09A8\u09BE \u099A\u09BE\u09AA\u09BE \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0995\u09BF\u099B\u09C1\u0987 \u09AC\u09A6\u09B2\u09BE\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.add": "\u09AC\u09BE\u0981 \u09A6\u09BF\u0995\u09C7 \u09B2\u09C7\u0996\u09BE \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09AA\u09A1\u09BC\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09A4\u09BF \u09A6\u09C7\u09AF\u09BC BitPull-\u0995\u09C7\u0964 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7\u09B0 \u09AC\u09BE\u0987\u09B0\u09C7\u09B0 \u09AB\u09BE\u0987\u09B2 \u0995\u0996\u09A8\u09CB \u09AA\u09A1\u09BC\u09BE \u09AC\u09BE \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.draft": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7 bitpull.json \u09A4\u09C8\u09B0\u09BF \u0995\u09B0\u09C7: \u098F\u09B0 \u09AB\u09BE\u0987\u09B2\u0997\u09C1\u09B2\u09CB\u09B0 \u09A4\u09BE\u09B2\u09BF\u0995\u09BE, \u0996\u09BE\u09B2\u09BF \u09AC\u09BF\u09AC\u09B0\u09A3\u09B8\u09B9 \u09AF\u09BE \u0986\u09AA\u09A8\u09BE\u09B0 AI \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09AC\u09C7\u0964 \u098F\u0996\u09A8\u09CB \u0995\u09BF\u099B\u09C1\u0987 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.publish": "\u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7 \u098F\u0995\u099F\u09BF \u09AA\u09BE\u09AC\u09B2\u09BF\u0995 \u09B0\u09BF\u09AA\u09CB \u09B9\u09BF\u09B8\u09C7\u09AC\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09C7, \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u09B8\u09CD\u09AC\u09BE\u0995\u09CD\u09B7\u09B0\u09B8\u09B9\u0964 \u09AB\u09BE\u0987\u09B2\u09C7 \u0995\u09C0 \u09AC\u09BE \u09AA\u09BE\u09B8\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u09A1 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u09B2\u09C7 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0986\u099F\u0995\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964", "tip.folder.remove": "BitPull \u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09AA\u09A1\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7\u0964 \u098F\u0996\u09BE\u09A8 \u09A5\u09C7\u0995\u09C7 \u0986\u0997\u09C7\u0987 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09B2\u09BE\u0987\u09A8\u09C7 \u09A5\u09BE\u0995\u09C7, \u09AF\u09A4\u0995\u09CD\u09B7\u09A3 \u09A8\u09BE \u0986\u09AA\u09A8\u09BF \u09B8\u09C7\u0997\u09C1\u09B2\u09CB \u09B8\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A8\u09C7\u09A8\u0964", "tip.repo.withdraw": "\u098F\u0987 \u09B0\u09BF\u09AA\u09CB\u099F\u09BF \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09A5\u09C7\u0995\u09C7 \u09B8\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A6\u09C7\u09AF\u09BC\u0964 \u0985\u09A8\u09CD\u09AF \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0\u09BE \u0986\u09B0 \u098F\u099F\u09BF \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u09AC\u09C7\u09A8 \u09A8\u09BE \u09AC\u09BE \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8 \u09A8\u09BE\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2 \u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u0987 \u09A5\u09BE\u0995\u09C7\u0964", "tip.ask": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09B6\u09CD\u09A8\u099F\u09BF \u098F\u09A8\u09CD\u09A1-\u099F\u09C1-\u098F\u09A8\u09CD\u09A1 \u098F\u09A8\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F\u09C7\u09A1 \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u098F\u09AE\u09A8 \u098F\u0995\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AA\u09BE\u09A0\u09BE\u09AF\u09BC \u09AF\u09BE \u098F\u0995\u099F\u09BF \u0993\u09AA\u09C7\u09A8 AI \u09AE\u09A1\u09C7\u09B2 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 \u0995\u09AF\u09BC\u09C7\u0995\u099F\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0996\u09B0\u099A \u09B9\u09AF\u09BC\u0964", "tip.tier": "\u09AE\u09A1\u09C7\u09B2\u09C7\u09B0 \u0986\u0995\u09BE\u09B0: \u099B\u09CB\u099F\u099F\u09BF \u09A6\u09CD\u09B0\u09C1\u09A4 \u0993 \u09B8\u09B8\u09CD\u09A4\u09BE, \u09AC\u09A1\u09BC\u099F\u09BF \u09AC\u09C7\u09B6\u09BF \u09AC\u09C1\u09A6\u09CD\u09A7\u09BF\u09AE\u09BE\u09A8 \u098F\u09AC\u0982 \u09AC\u09C7\u09B6\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0996\u09B0\u099A \u0995\u09B0\u09C7\u0964", "tip.show_key": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 AI \u099F\u09C1\u09B2\u0997\u09C1\u09B2\u09CB BitPull-\u098F\u09B0 \u09B8\u0999\u09CD\u0997\u09C7 \u09AF\u09CB\u0997\u09BE\u09AF\u09CB\u0997\u09C7 \u09AF\u09C7 \u0995\u09C0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09C7, \u09B8\u09C7\u099F\u09BF \u09A6\u09C7\u0996\u09BE\u09AF\u09BC\u0964 \u098F\u099F\u09BF \u0995\u09BE\u09B0\u0993 \u09B8\u0999\u09CD\u0997\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09AC\u09C7\u09A8 \u09A8\u09BE\u0964", "tip.setup.download": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF {name}-\u098F\u09B0 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u0986\u09AA\u09A8\u09BE\u09B0 Downloads \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u0996\u09CB\u09B2\u09C7\u0964 \u09B6\u09C7\u09B7 \u0995\u09B0\u09A4\u09C7 \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8\u0964", "tip.setup.start": "{name} \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C7, \u09AF\u09BE \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0986\u099B\u09C7 \u0995\u09BF\u09A8\u09CD\u09A4\u09C1 \u099A\u09B2\u099B\u09C7 \u09A8\u09BE\u0964", "tip.setup.pull": "AI \u09AE\u09A1\u09C7\u09B2 {model} ({size} GB) Ollama-\u09A4\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u098F\u099F\u09BF \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "tip.setup.open": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 {name}-\u098F\u09B0 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7\u0964", "tip.setup.recheck": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0995\u09C0 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0986\u099B\u09C7 \u0993 \u0995\u09C0 \u099A\u09B2\u099B\u09C7, \u09A4\u09BE \u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7\u0964", "update.title": "\u0985\u09CD\u09AF\u09BE\u09AA \u0986\u09AA\u09A1\u09C7\u099F", "update.current": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3: {v}", "update.latest": "\u09B8\u09B0\u09CD\u09AC\u09B6\u09C7\u09B7 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3: {v}", "update.button": "\u0986\u09AA\u09A1\u09C7\u099F \u0996\u09C1\u0981\u099C\u09C1\u09A8", "update.install": "\u098F\u0996\u09A8\u0987 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "update.available": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u099A\u09CD\u099B\u09C7\u0964", "update.not_in_app": "\u0986\u09AA\u09A1\u09C7\u099F BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7\u0964 \u0986\u09AA\u09A1\u09C7\u099F \u0995\u09B0\u09A4\u09C7 \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u098F\u0987 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u0996\u09C1\u09B2\u09C1\u09A8\u0964", "update.state.requested": "\u0985\u09CD\u09AF\u09BE\u09AA\u0995\u09C7 \u0996\u09C1\u0981\u099C\u09A4\u09C7 \u09AC\u09B2\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.checking": "\u0986\u09AA\u09A1\u09C7\u099F \u0996\u09CB\u0981\u099C\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.up_to_date": "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09BE\u099B\u09C7 \u09B8\u09B0\u09CD\u09AC\u09B6\u09C7\u09B7 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 \u0986\u099B\u09C7\u0964", "update.state.installing": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0993 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u0985\u09CD\u09AF\u09BE\u09AA \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u09B9\u09AC\u09C7\u0964", "update.state.restarting": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09A8\u09BF\u09AF\u09BC\u09C7 \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.error": "\u0986\u09AA\u09A1\u09C7\u099F \u0995\u09BE\u099C \u0995\u09B0\u09C7\u09A8\u09BF: {msg}\u0964 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "tip.update": "BitPull-\u098F\u09B0 \u09A8\u09A4\u09C1\u09A8 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 \u0986\u099B\u09C7 \u0995\u09BF \u09A8\u09BE \u09A6\u09C7\u0996\u09C7\u0964 \u09A5\u09BE\u0995\u09B2\u09C7 \u09B8\u09C7\u099F\u09BF \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09B8\u09CD\u09AC\u09BE\u0995\u09CD\u09B7\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7, \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7 \u098F\u09AC\u0982 \u0985\u09CD\u09AF\u09BE\u09AA \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u0995\u09B0\u09C7\u0964 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09A5\u09BE\u09AE\u09C7\u0964", "tools.hint": "\u0986\u09AA\u09A8\u09BE\u09B0 AI \u09B8\u09B9\u0995\u09BE\u09B0\u09C0\u0995\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE \u0995\u09CB\u09A1 \u0996\u09C1\u0981\u099C\u09A4\u09C7 \u098F\u09AC\u0982 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u0993 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09A6\u09BF\u09A8\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u099F\u09C1\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8:", "tools.connect": "\u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8", "tools.connected": "\u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4", "tools.copy": "\u0995\u09AA\u09BF \u0995\u09B0\u09C1\u09A8", "tools.copied": "\u0995\u09AA\u09BF \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "tools.installed": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0986\u099B\u09C7", "tools.not_found": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF", "tools.done": "\u09B9\u09AF\u09BC\u09C7 \u0997\u09C7\u099B\u09C7\u0964 BitPull \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09A4\u09C7 {name} \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u0995\u09B0\u09C1\u09A8\u0964", "tools.manual": "\u09A8\u09BF\u099C\u09C7 \u09AF\u09CB\u0997 \u0995\u09B0\u09A4\u09C7:", "tools.config_invalid": '{name}-\u098F\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u09AB\u09BE\u0987\u09B2\u099F\u09BF \u09AC\u09C8\u09A7 JSON \u09A8\u09AF\u09BC, \u09A4\u09BE\u0987 BitPull \u098F\u09A4\u09C7 \u09B9\u09BE\u09A4 \u09A6\u09C7\u09AF\u09BC\u09A8\u09BF\u0964 \u09AB\u09BE\u0987\u09B2\u099F\u09BF \u09A0\u09BF\u0995 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE "\u0995\u09AA\u09BF \u0995\u09B0\u09C1\u09A8" \u09A6\u09BF\u09AF\u09BC\u09C7 \u09A8\u09BF\u099C\u09C7 BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09C1\u09A8\u0964', "tip.tools.connect": "\u09B8\u09CD\u09AC\u09AF\u09BC\u0982\u0995\u09CD\u09B0\u09BF\u09AF\u09BC\u09AD\u09BE\u09AC\u09C7 {name}-\u098F\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8\u09C7 BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09C7\u0964 \u0986\u0997\u09C7\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8\u09C7\u09B0 \u098F\u0995\u099F\u09BF \u09AC\u09CD\u09AF\u09BE\u0995\u0986\u09AA \u09AA\u09BE\u09B6\u09C7\u0987 \u09B0\u09BE\u0996\u09BE \u09B9\u09AF\u09BC\u0964", "tip.tools.copy": "\u0995\u09AE\u09BE\u09A8\u09CD\u09A1 \u09AC\u09BE \u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u0995\u09CD\u09B2\u09BF\u09AA\u09AC\u09CB\u09B0\u09CD\u09A1\u09C7 \u0995\u09AA\u09BF \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u0986\u09AA\u09A8\u09BF \u09A8\u09BF\u099C\u09C7 {name}-\u098F BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "models.title": "\u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE\u09B0 AI \u09AE\u09A1\u09C7\u09B2", "models.hint": "\u09B8\u09AC \u09A7\u09B0\u09A8\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u09AF\u09BE \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964 \u09B6\u09C1\u09A7\u09C1 \u09B8\u09C7\u0987 \u09AE\u09A1\u09C7\u09B2\u0997\u09C1\u09B2\u09CB \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u09AF\u09BC \u09AF\u09BE\u09A6\u09C7\u09B0 \u09B2\u09BE\u0987\u09B8\u09C7\u09A8\u09CD\u09B8 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09B8\u09C7\u09AC\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09A4\u09BF \u09A6\u09C7\u09AF\u09BC\u0964 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u099A\u09BE\u09B2\u09C1 \u09A5\u09BE\u0995\u09B2\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09BE \u09AE\u09A1\u09C7\u09B2\u0997\u09C1\u09B2\u09CB \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964", "models.engine.title": "\u099B\u09AC\u09BF, \u0995\u09A3\u09CD\u09A0 \u0993 \u09B8\u0982\u0997\u09C0\u09A4 \u0987\u099E\u09CD\u099C\u09BF\u09A8", "models.engine.help": "Lemonade (\u0993\u09AA\u09C7\u09A8 \u09B8\u09CB\u09B0\u09CD\u09B8): \u099B\u09AC\u09BF \u09A4\u09C8\u09B0\u09BF, \u0995\u09A3\u09CD\u09A0 \u09A5\u09C7\u0995\u09C7 \u09B2\u09C7\u0996\u09BE, \u09B2\u09C7\u0996\u09BE \u09A5\u09C7\u0995\u09C7 \u0995\u09A3\u09CD\u09A0, \u09B8\u0982\u0997\u09C0\u09A4, \u09A8\u09A5\u09BF \u09AA\u09C1\u09A8\u09B0\u09CD\u09AC\u09BF\u09A8\u09CD\u09AF\u09BE\u09B8 \u0993 \u099B\u09AC\u09BF \u09AC\u09A1\u09BC \u0995\u09B0\u09BE\u0964 BitPull-\u098F\u09B0 \u09AD\u09C7\u09A4\u09B0\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u09AF\u09BC, \u0985\u09CD\u09AF\u09BE\u09A1\u09AE\u09BF\u09A8 \u0985\u09A7\u09BF\u0995\u09BE\u09B0 \u09B2\u09BE\u0997\u09C7 \u09A8\u09BE\u0964", "models.engine.install": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.engine.repair": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0986\u09AC\u09BE\u09B0 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.engine.unsupported": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0989\u09AA\u09B2\u09AC\u09CD\u09A7 \u09A8\u09AF\u09BC (Apple silicon, \u09AC\u09BE Windows/Linux x64 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8)", "models.need_engine": "\u0986\u0997\u09C7 \u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.not_here": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0989\u09AA\u09B2\u09AC\u09CD\u09A7 \u09A8\u09AF\u09BC", "models.shared": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7 \xB7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE", "models.download": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 ({size} GB)", "models.needs_ram": "\u09AA\u09CD\u09B0\u09BE\u09AF\u09BC {ram} GB \u09AE\u09C7\u09AE\u09B0\u09BF \u09B2\u09BE\u0997\u09C7: \u098F\u0996\u09BE\u09A8\u09C7 \u09A7\u09C0\u09B0 \u09B9\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7", "models.recommended": "\u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09BE\u09AC\u09BF\u09A4", "models.license": "\u09B2\u09BE\u0987\u09B8\u09C7\u09A8\u09CD\u09B8", "models.ok.engine": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u099A\u09CD\u099B\u09C7\u2026", "task.chat": "\u09B2\u09C7\u0996\u09BE \u0993 \u0995\u09CB\u09A1", "task.vision": "\u099B\u09AC\u09BF \u2192 \u09B2\u09C7\u0996\u09BE", "task.ocr": "\u09A8\u09A5\u09BF (OCR)", "task.translate": "\u0985\u09A8\u09C1\u09AC\u09BE\u09A6", "task.embed": "\u098F\u09AE\u09AC\u09C7\u09A1\u09BF\u0982 (\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8)", "task.rerank": "\u09AA\u09C1\u09A8\u09B0\u09CD\u09AC\u09BF\u09A8\u09CD\u09AF\u09BE\u09B8", "task.image": "\u099B\u09AC\u09BF \u09A4\u09C8\u09B0\u09BF", "task.upscale": "\u099B\u09AC\u09BF \u09AC\u09A1\u09BC \u0995\u09B0\u09BE", "task.stt": "\u0995\u09A3\u09CD\u09A0 \u09A5\u09C7\u0995\u09C7 \u09B2\u09C7\u0996\u09BE", "task.tts": "\u09B2\u09C7\u0996\u09BE \u09A5\u09C7\u0995\u09C7 \u0995\u09A3\u09CD\u09A0", "task.music": "\u09B8\u0982\u0997\u09C0\u09A4", "limits.title": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09C0\u09AE\u09BE", "limits.hint": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09A4\u099F\u09BE AI \u0995\u09BE\u099C \u0995\u09B0\u09C7\u0964 \u0995\u09CB\u09A8\u09CB \u09B8\u09C0\u09AE\u09BE \u09A8\u09BE \u09B0\u09BE\u0996\u09A4\u09C7 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964 \u09B8\u09C0\u09AE\u09BE\u09AF\u09BC \u09AA\u09CC\u0981\u099B\u09BE\u09B2\u09C7 \u09AA\u09B0\u09C7\u09B0 \u09B8\u09AE\u09AF\u09BC\u0995\u09BE\u09B2 \u09B6\u09C1\u09B0\u09C1 \u09A8\u09BE \u09B9\u0993\u09AF\u09BC\u09BE \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "limits.save": "\u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C1\u09A8", "limits.requests": "\u0985\u09A8\u09C1\u09B0\u09CB\u09A7", "limits.tokens": "\u099F\u09CB\u0995\u09C7\u09A8", "limits.used": "\u09AC\u09CD\u09AF\u09AC\u09B9\u09C3\u09A4", "limits.day": "\u09AA\u09CD\u09B0\u09A4\u09BF\u09A6\u09BF\u09A8", "limits.week": "\u09AA\u09CD\u09B0\u09A4\u09BF \u09B8\u09AA\u09CD\u09A4\u09BE\u09B9", "limits.month": "\u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8", "limits.none": "\u0995\u09CB\u09A8\u09CB \u09B8\u09C0\u09AE\u09BE \u09A8\u09C7\u0987", "limits.usage": "{requests}\u099F\u09BF \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \xB7 {tokens} \u099F\u09CB\u0995\u09C7\u09A8", "limits.saved": "\u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "tip.models.engine": "\u0993\u09AA\u09C7\u09A8 \u09B8\u09CB\u09B0\u09CD\u09B8 Lemonade \u0987\u099E\u09CD\u099C\u09BF\u09A8 BitPull-\u098F \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u099B\u09AC\u09BF, \u0995\u09A3\u09CD\u09A0 \u0993 \u09B8\u0982\u0997\u09C0\u09A4 \u09AE\u09A1\u09C7\u09B2 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "tip.models.download": "{model} ({size} GB) \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u09AF\u09BE\u09A4\u09C7 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u0964 \u09AA\u09B0\u09C7 \u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8\u0964", "tip.limits.save": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF AI \u0995\u09BE\u099C\u09C7\u09B0 \u09A6\u09C8\u09A8\u09BF\u0995, \u09B8\u09BE\u09AA\u09CD\u09A4\u09BE\u09B9\u09BF\u0995 \u0993 \u09AE\u09BE\u09B8\u09BF\u0995 \u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C7\u0964", "lend.visible": "\u2713 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u099F\u09BF \u09A6\u09C7\u0996\u099B\u09C7: \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF {cpus} CPU, {ram} GB \u0989\u09AA\u09B2\u09AC\u09CD\u09A7\u0964", "lend.invisible": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u098F\u0996\u09A8\u09CB \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09A6\u09C7\u0996\u099B\u09C7 \u09A8\u09BE: \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8; \u098F\u09AE\u09A8\u0987 \u09A5\u09BE\u0995\u09B2\u09C7 \u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u09B8\u0982\u09AF\u09CB\u0997 \u09A6\u09C7\u0996\u09C1\u09A8\u0964", "lend.unusable": "\u26A0 \u098F\u0996\u09A8\u09CB \u0995\u09C7\u0989 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7 \u09A8\u09BE: \u098F\u0996\u09BE\u09A8\u09C7 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u099A\u09B2\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7 \u09A8\u09BE\u0964 {reason}", "lend.unusable.docker": 'Docker BitPull-\u098F\u09B0 \u0986\u0987\u09B8\u09CB\u09B2\u09C7\u09B6\u09A8 \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE\u09AF\u09BC \u0989\u09A4\u09CD\u09A4\u09C0\u09B0\u09CD\u09A3 \u09B9\u09AF\u09BC\u09A8\u09BF: "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8" \u09A6\u09C7\u0996\u09C1\u09A8\u0964', "lend.unusable.off": '\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C \u09AC\u09A8\u09CD\u09A7 \u098F\u09AC\u0982 \u0995\u09CB\u09A8\u09CB AI \u09AE\u09A1\u09C7\u09B2 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09A8\u09C7\u0987: "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C" \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE \u098F\u0995\u099F\u09BF \u09AE\u09A1\u09C7\u09B2 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8\u0964', "lend.docker_login": 'Docker \u0987\u09AE\u09C7\u099C \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u099B\u09C7 \u09A8\u09BE \u0995\u09BE\u09B0\u09A3 \u098F\u09B0 Docker Hub \u09B2\u0997\u0987\u09A8 \u0986\u09B0 \u09AC\u09C8\u09A7 \u09A8\u09AF\u09BC\u0964 Docker Desktop-\u098F \u0986\u09AA\u09A8\u09BE\u09B0 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7 (\u0989\u09AA\u09B0\u09C7 \u09A1\u09BE\u09A8\u09C7) \u0995\u09CD\u09B2\u09BF\u0995 \u0995\u09B0\u09C1\u09A8 \u2192 Sign out, \u09A4\u09BE\u09B0\u09AA\u09B0 \u0986\u09AC\u09BE\u09B0 \u09B2\u0997 \u0987\u09A8 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE \u09B2\u0997 \u0986\u0989\u099F \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u09A5\u09BE\u0995\u09C1\u09A8\u0964 \u09A4\u09BE\u09B0\u09AA\u09B0 "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8" \u099A\u09BE\u09AA\u09C1\u09A8\u0964', "lend.off_hint": '\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7: \u09A8\u09BF\u099A\u09C7 "{rules}"-\u098F "{enabled}" \u099F\u09BF\u0995 \u09A6\u09BF\u09A8 \u098F\u09AC\u0982 "{save}" \u099A\u09BE\u09AA\u09C1\u09A8\u0964 (\u09AC\u09BF\u09B0\u09A4\u09BF / \u0986\u09AC\u09BE\u09B0 \u09B6\u09C1\u09B0\u09C1 \u09B6\u09C1\u09A7\u09C1 \u0986\u0997\u09C7 \u09A5\u09C7\u0995\u09C7 \u099A\u09BE\u09B2\u09C1 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u0995\u09C7 \u09A5\u09BE\u09AE\u09BE\u09AF\u09BC\u0964)', "lend.low_memory": '\u09AE\u09BE\u09A4\u09CD\u09B0 {mb} MB \u09AE\u09C7\u09AE\u09B0\u09BF \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7: \u0996\u09C1\u09AC \u0995\u09AE \u0995\u09BE\u099C \u099A\u09B2\u09AC\u09C7\u0964 "{rules}"-\u098F "{memory}" \u09AF\u09C7\u09AE\u09A8 4096 (= 4 GB) \u09A6\u09BF\u09A8 \u098F\u09AC\u0982 "{save}" \u099A\u09BE\u09AA\u09C1\u09A8\u0964' }, de: { "lang.name": "Deutsch", "app.title": "BitPull", "locked.text": "\xD6ffne das Dashboard \xFCber die BitPull-App: Der Link enth\xE4lt den Zugangsschl\xFCssel.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Direkte Adresse", "pill.relay_on": "Relay verbunden", "pill.relay_off": "Relay nicht verbunden", "pill.cached": "{n} zwischengespeicherte Kopien", "net.title": "Netzwerk live", "net.online": "{n} Computer online", "net.lending": "{n} verleihen gerade", "net.cpu": "{n} CPU-Kerne", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPUs", "net.models": "{n} KI-Modelle", "net.jobs": "{n} laufende Auftr\xE4ge", "credits.title": "Guthaben", "credits.plan": "Tarif {plan} \xB7 bis zu {n} m\xF6glich", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Aufladen 5 \u20AC", "buy.ok": "Zahlungsseite in deinem Browser ge\xF6ffnet.", "lend.title": "Diesen Computer verleihen", "lend.hint": "Auftr\xE4ge laufen Ende-zu-Ende-verschl\xFCsselt in isolierten Sandboxes, ohne Zugriff auf deine Dateien. Du verdienst Credits.", "lend.state.off": "Aus", "lend.state.waiting": "Wartet", "lend.state.working": "Arbeitet", "lend.reason.lending_off": "Verleihen ist aus", "lend.reason.paused": "Pausiert", "lend.reason.outside_hours": "Au\xDFerhalb deiner Zeiten", "lend.reason.on_battery": "Im Akkubetrieb", "lend.reason.computer_in_use": "Du benutzt den Computer", "lend.reason.no_jobs": "Keine Auftr\xE4ge in der Warteschlange", "lend.running": "F\xFChrt seit {time} einen {kind}-Auftrag aus", "lend.detail": "{reason} \xB7 {n} Auftr\xE4ge erledigt \xB7 bietet {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", Sandbox {name}", "lend.detail.models": ", {n} Modelle", "lend.pause": "Pausieren", "lend.resume": "Fortsetzen", "lend.paused_ok": "Verleihen pausiert. Ein laufender Auftrag wurde an einen anderen Computer \xFCbergeben.", "lend.resumed_ok": "Verleihen fortgesetzt.", "setup.title": "Diesen Computer einrichten", "setup.hint": "Was dieser Computer zum Verleihen braucht. Zum Nutzen des Netzwerks brauchst du nichts weiter. Die Installer kommen von den offiziellen Seiten; dein System fragt dich nach einer Best\xE4tigung.", "setup.checking": "Wird gepr\xFCft\u2026", "setup.docker.help": "F\xFChrt Auftr\xE4ge anderer in isolierten Sandboxes aus. N\xF6tig f\xFCr Container-Auftr\xE4ge. Kostenlos f\xFCr private Nutzung und kleine Unternehmen.", "setup.docker.download": "Docker herunterladen", "setup.docker.start": "Docker starten", "setup.apple.title": "Apple Container (optional)", "setup.apple.help": "St\xE4rkere Isolation: jeder Auftrag in einer eigenen virtuellen Maschine. Optional; Docker reicht f\xFCr den Anfang.", "setup.apple.get": "Apple Container holen", "setup.ollama.help": "F\xFChrt offene KI-Modelle aus (Qwen, Llama, Mistral\u2026). N\xF6tig, um KI-Modelle zu verleihen.", "setup.ollama.download": "Ollama herunterladen", "setup.ollama.start": "Ollama starten", "setup.model.title": "KI-Modell", "setup.model.help": "Das Modell, das dieser Computer anderen anbietet. Empfohlen f\xFCr {ram} GB Arbeitsspeicher: {model}.", "setup.model.download": "{model} herunterladen ({size} GB)", "setup.model.none": "noch keins", "setup.model.need_ollama": "Installiere und starte zuerst Ollama", "setup.nvidia.title": "NVIDIA-GPU-Treiber (optional)", "setup.nvidia.help": "Nur wenn dieser Computer eine NVIDIA-Grafikkarte hat, die du verleihen willst.", "setup.nvidia.get": "NVIDIA-Treiber holen", "setup.status.running": "installiert und l\xE4uft", "setup.status.installed": "installiert", "setup.status.stopped": "installiert, l\xE4uft nicht", "setup.status.missing": "nicht installiert", "setup.status.found": "gefunden", "setup.status.not_found": "nicht gefunden", "setup.terminal": "Im Terminal ausf\xFChren:", "setup.done": "Fertig", "setup.opened": "Erledigt: {file} ge\xF6ffnet, folge den Schritten", "setup.recheck": "Erneut pr\xFCfen", "setup.ok.download": "Download gestartet. Der Installer \xF6ffnet sich automatisch, wenn er fertig ist: Folge seinen Schritten.", "setup.ok.start": "Wird gestartet\u2026 das kann bis zu einer Minute dauern. Diese Liste aktualisiert sich von selbst.", "setup.ok.pull": "Modell-Download gestartet. Der Fortschritt wird oben angezeigt.", "setup.ok.page": "Seite in deinem Browser ge\xF6ffnet.", "setup.ok.recheck": "Erneut gepr\xFCft.", "rules.title": "Regeln f\xFCrs Verleihen", "rules.enabled": "Verleihen an", "rules.enabled.help": "Hauptschalter. Wenn aus, f\xFChrt dieser Computer nie Auftr\xE4ge anderer aus. Du kannst das Netzwerk trotzdem selbst nutzen.", "rules.cpus": "Max. CPUs", "rules.cpus.help": "Wie viele Prozessorkerne ein Auftrag h\xF6chstens nutzen darf. Beispiel: Bei einem Computer mit 8 Kernen bleiben mit 2 noch 6 Kerne f\xFCr dich frei.", "rules.memory": "Max. Arbeitsspeicher (MB)", "rules.memory.help": "RAM, den ein Auftrag nutzen darf, in Megabyte (1024 MB = 1 GB). BitPull bietet nie mehr als die H\xE4lfte des Arbeitsspeichers dieses Computers an.", "rules.gpu": "GPU", "rules.gpu.none": "Keine", "rules.gpu.consumer": "Standard (8\u201312 GB)", "rules.gpu.high": "High-End (16\u201324 GB)", "rules.gpu.datacenter": "Rechenzentrum (40 GB+)", "rules.gpu.help": "Die Grafikkarte, die du verleihst, nach Grafikspeicher. Lass \u201EKeine\u201C, wenn du keine eigene GPU hast oder sie nicht verleihen willst. Eine GPU bringt die meisten Credits.", "rules.containers": "Container-Auftr\xE4ge", "rules.containers.help": "F\xFChrt Builds, Tests und Skripte f\xFCr andere in einer Sandbox ohne Internet und ohne Zugriff auf deine Dateien aus. Braucht Docker (oder Apple Container): siehe \u201EDiesen Computer einrichten\u201C.", "rules.models": "Offene Modelle (Ollama)", "rules.models.help": "Beantwortet KI-Anfragen mit den offenen Modellen, die in Ollama auf diesem Computer installiert sind. Braucht Ollama und mindestens ein Modell.", "rules.idle": "Erst nach Minuten Inaktivit\xE4t", "rules.idle.help": "Nur verleihen, wenn du Tastatur und Maus so viele Minuten nicht ber\xFChrt hast. 0 = auch verleihen, w\xE4hrend du arbeitest.", "rules.ac": "Nur am Stromnetz", "rules.ac.help": "Auf einem Laptop wird das Verleihen im Akkubetrieb gestoppt, damit es den Akku nie leert.", "rules.hours": "Nur von / bis Uhr (leer = immer)", "rules.hours.help": "Nur in diesem Zeitfenster verleihen, im 24-Stunden-Format. Beispiel: 22 und 8 = von 22 bis 8 Uhr. Lass beide leer, um jederzeit zu verleihen.", "rules.cache": "Kopien fremder Repos im Cache", "rules.cache.help": "Wie viele \xF6ffentliche Repos anderer Nutzer dieser Computer als Kopie beh\xE4lt, damit sie verf\xFCgbar bleiben, wenn ihre Autoren offline sind. Braucht etwas Speicherplatz und bringt Credits. 0 = keine.", "rules.save": "Regeln speichern", "rules.saved": "Regeln gespeichert. Sie gelten in wenigen Sekunden.", "rules.hours_both": "F\xFClle beide Uhrzeiten aus oder lass beide leer, um jederzeit zu verleihen.", "folders.title": "Freigegebene Ordner", "folders.hint": "BitPull liest nur diese Ordner. Um einen zu ver\xF6ffentlichen, braucht es eine vollst\xE4ndige bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Freigeben", "folders.none": "Keine freigegebenen Ordner.", "folders.draft": "Entwurf", "folders.publish": "Ver\xF6ffentlichen", "folders.remove": "Entfernen", "folders.need_path": "Gib zuerst den vollst\xE4ndigen Pfad eines Ordners ein, z. B. /Users/you/projects/my-library.", "folders.added": "Ordner freigegeben.", "folders.removed": "Ordner entfernt. BitPull liest ihn nicht mehr.", "folders.drafted": "Entwurf bereit: {n} Dateien gefunden. Lass deine KI die Zusammenfassung und Beschreibungen ausf\xFCllen (Tool prepare_publish) und klicke dann auf Ver\xF6ffentlichen.", "folders.published": "\u201E{name}\u201C mit {n} Dateien ver\xF6ffentlicht.", "folders.secrets_in": "Gefunden in: {where}", "folders.line": "{file} Zeile {line}", "repos.title": "Deine ver\xF6ffentlichten Repos", "repos.hint": "Sie aktualisieren sich von selbst, wenn du die Dateien \xE4nderst (alle 5 Minuten).", "repos.none": "Keine ver\xF6ffentlichten Repos.", "repos.withdraw": "Zur\xFCckziehen", "repos.withdrawn": "Repo aus dem Netzwerk zur\xFCckgezogen.", "ask.title": "Offene Modelle im Netzwerk", "ask.offers": "Dieser Computer bietet an: {models}.", "ask.offers_none": "keine Modelle (installiere Ollama, um welche anzubieten)", "ask.placeholder": "Frag ein offenes Modell im Netzwerk\u2026", "ask.small": "Klein", "ask.medium": "Mittel", "ask.large": "Gro\xDF", "ask.button": "Fragen", "ask.empty": "Schreib zuerst eine Frage.", "ask.waiting": "Suche einen Computer mit dem Modell\u2026 das kann bis zu einer Minute dauern.", "ask.credits": "{n} Credits", "tools.title": "Verbinde deine Tools", "tools.mcp": "F\xFCr Claude Code und MCP-Clients im Terminal ausf\xFChren:", "tools.openai": "F\xFCr OpenAI-kompatible Tools: Basis-URL", "tools.key": "API-Schl\xFCssel", "tools.show": "Anzeigen", "jobs.title": "Deine letzten Auftr\xE4ge", "jobs.none": "Keine Auftr\xE4ge.", "jobs.model": "Modell", "jobs.container": "Container", "jobs.status.queued": "In Warteschlange", "jobs.status.running": "L\xE4uft", "jobs.status.done": "Fertig", "jobs.status.failed": "Fehlgeschlagen", "jobs.status.canceled": "Abgebrochen", "jobs.cost": "{n} Credits", working: "Wird bearbeitet\u2026", "err.agent_down": "BitPull auf diesem Computer antwortet nicht. Es startet innerhalb von 30 Sekunden von selbst neu: Versuch es gleich noch einmal.", "err.server": "Der BitPull-Server ist nicht erreichbar. Pr\xFCf deine Internetverbindung und versuch es noch einmal.", "err.session": "Diese Dashboard-Sitzung ist abgelaufen. \xD6ffne sie erneut \xFCber die BitPull-App.", "err.billing": "Zahlungen sind noch nicht aktiv.", "err.no_folder": "Dieser Ordner existiert auf diesem Computer nicht. Pr\xFCf den Pfad.", "err.not_folder": "Dieser Pfad ist eine Datei, kein Ordner.", "err.credits": "Nicht genug Credits.", "err.device": "Dieser Computer ist noch nicht verbunden. Lass die BitPull-App offen und versuch es in einer Minute noch einmal.", "err.no_model": "Gerade bietet kein Computer im Netzwerk ein KI-Modell an. Versuch es sp\xE4ter noch einmal.", "err.invalid": "Einige Werte sind ung\xFCltig. Pr\xFCf die Felder und versuch es noch einmal.", "tip.lang": "Sprache der App. Deine Auswahl wird auf diesem Computer gespeichert.", "tip.buy.base": "\xD6ffnet die sichere Zahlungsseite f\xFCr den Tarif Base: 4,50 \u20AC pro Monat mit 80 Credits jeden Monat. Du kannst jederzeit k\xFCndigen.", "tip.buy.pro": "\xD6ffnet die sichere Zahlungsseite f\xFCr den Tarif Pro: 9,90 \u20AC pro Monat mit 200 Credits jeden Monat, h\xF6chster Priorit\xE4t und allen GPUs. Du kannst jederzeit k\xFCndigen.", "tip.buy.recharge": "\xD6ffnet die sichere Zahlungsseite, um einmalig 80 Credits f\xFCr 5 \u20AC zu kaufen. Sie verfallen nie.", "tip.pause": "Stoppt das Verleihen sofort. Ein gerade laufender Auftrag wird an einen anderen Computer \xFCbergeben. Klick erneut, um fortzusetzen.", "tip.resume": "Startet das Verleihen wieder, nach deinen Regeln f\xFCrs Verleihen.", "tip.rules.save": "Speichert die Regeln oben. Sie gelten in wenigen Sekunden; nichts \xE4ndert sich, bis du hier klickst.", "tip.folder.add": "Erlaubt BitPull, den links eingegebenen Ordner zu lesen. Dateien au\xDFerhalb freigegebener Ordner werden nie gelesen oder geteilt.", "tip.folder.draft": "Erstellt bitpull.json im Ordner: die Liste seiner Dateien mit leeren Beschreibungen, die deine KI ausf\xFCllt. Es wird noch nichts ver\xF6ffentlicht.", "tip.folder.publish": "Teilt diesen Ordner im Netzwerk als \xF6ffentliches Repo, signiert von diesem Computer. Die Ver\xF6ffentlichung wird blockiert, wenn Schl\xFCssel oder Passw\xF6rter in den Dateien gefunden werden.", "tip.folder.remove": "BitPull liest diesen Ordner nicht mehr. Bereits daraus ver\xF6ffentlichte Repos bleiben online, bis du sie zur\xFCckziehst.", "tip.repo.withdraw": "Entfernt dieses Repo aus dem Netzwerk. Andere Nutzer k\xF6nnen es nicht mehr finden oder herunterladen. Deine Dateien bleiben auf deinem Computer.", "tip.ask": "Sendet deine Frage Ende-zu-Ende-verschl\xFCsselt an einen Computer im Netzwerk, auf dem ein offenes KI-Modell l\xE4uft. Kostet ein paar Credits.", "tip.tier": "Modellgr\xF6\xDFe: Klein ist schnell und g\xFCnstig, Gro\xDF ist schlauer und kostet mehr Credits.", "tip.show_key": "Zeigt den Schl\xFCssel, mit dem KI-Tools auf diesem Computer mit BitPull sprechen. Teile ihn mit niemandem.", "tip.setup.download": "L\xE4dt den offiziellen Installer von {name} f\xFCr diesen Computer in deinen Downloads-Ordner und \xF6ffnet ihn. Folge seinen Schritten, um fertig zu werden.", "tip.setup.start": "Startet {name}, das auf diesem Computer installiert ist, aber nicht l\xE4uft.", "tip.setup.pull": "L\xE4dt das KI-Modell {model} ({size} GB) in Ollama herunter, damit dieser Computer es anderen anbieten kann.", "tip.setup.open": "\xD6ffnet die offizielle Seite von {name} in deinem Browser.", "tip.setup.recheck": "Pr\xFCft erneut, was auf diesem Computer installiert ist und l\xE4uft.", "update.title": "App-Updates", "update.current": "Installierte Version: {v}", "update.latest": "Neueste Version: {v}", "update.button": "Nach Updates suchen", "update.install": "Version {v} jetzt installieren", "update.available": "Version {v} ist verf\xFCgbar.", "update.not_in_app": "Updates werden von der BitPull-App installiert. \xD6ffne dieses Dashboard \xFCber die App, um zu aktualisieren.", "update.state.requested": "App wird um Pr\xFCfung gebeten\u2026", "update.state.checking": "Suche nach Updates\u2026", "update.state.up_to_date": "Du hast die neueste Version.", "update.state.installing": "Version {v} wird heruntergeladen und installiert\u2026 die App startet von selbst neu.", "update.state.restarting": "Neustart mit Version {v}\u2026", "update.state.error": "Das Update hat nicht geklappt: {msg}. Versuch es sp\xE4ter noch einmal.", "tip.update": "Pr\xFCft, ob es eine neuere Version von BitPull gibt. Falls ja, wird sie heruntergeladen, ihre Signatur gepr\xFCft, sie installiert und die App neu gestartet. Das Verleihen pausiert f\xFCr ein paar Sekunden.", "tools.hint": "Lass deinen KI-Assistenten geteilten Code durchsuchen und die offenen Modelle und Computer des Netzwerks nutzen. W\xE4hle dein Tool:", "tools.connect": "Verbinden", "tools.connected": "Verbunden", "tools.copy": "Kopieren", "tools.copied": "Kopiert.", "tools.installed": "Installiert", "tools.not_found": "Auf diesem Computer nicht gefunden", "tools.done": "Fertig. Starte {name} neu, um BitPull zu nutzen.", "tools.manual": "So f\xFCgst du es von Hand hinzu:", "tools.config_invalid": "Die Einstellungsdatei von {name} ist kein g\xFCltiges JSON, daher hat BitPull sie nicht ver\xE4ndert. Korrigiere die Datei oder f\xFCge BitPull mit Kopieren von Hand hinzu.", "tip.tools.connect": "F\xFCgt BitPull automatisch zu den Einstellungen von {name} hinzu. Eine Sicherung der vorherigen Einstellungen wird daneben aufbewahrt.", "tip.tools.copy": "Kopiert den Befehl oder die Einstellungen in die Zwischenablage, damit du BitPull selbst zu {name} hinzuf\xFCgen kannst.", "models.title": "KI-Modelle zum Teilen", "models.hint": "Offene Modelle aller Art, die dieser Computer verleihen kann. Aufgef\xFChrt sind nur Modelle, deren Lizenz die Bereitstellung f\xFCr andere erlaubt. Heruntergeladene Modelle werden dem Netzwerk angeboten, solange das Verleihen aktiv ist.", "models.engine.title": "Engine f\xFCr Bilder, Sprache und Musik", "models.engine.help": "Lemonade (Open Source): Bildgenerierung, Spracherkennung, Sprachausgabe, Musik, Reranking und Hochskalieren. Wird in BitPull installiert, ohne Administratorrechte.", "models.engine.install": "Engine installieren", "models.engine.repair": "Engine neu installieren", "models.engine.unsupported": "Auf diesem Computer nicht verf\xFCgbar (ben\xF6tigt Apple Silicon oder Windows/Linux x64)", "models.need_engine": "Zuerst die Engine installieren", "models.not_here": "Auf diesem Computer nicht verf\xFCgbar", "models.shared": "Heruntergeladen \xB7 geteilt", "models.download": "Herunterladen ({size} GB)", "models.needs_ram": "Ben\xF6tigt etwa {ram} GB Speicher: hier eventuell langsam", "models.recommended": "Empfohlen", "models.license": "Lizenz", "models.ok.engine": "Engine wird installiert\u2026", "task.chat": "Text und Code", "task.vision": "Bilder \u2192 Text", "task.ocr": "Dokumente (OCR)", "task.translate": "\xDCbersetzung", "task.embed": "Embeddings (Suche)", "task.rerank": "Reranking", "task.image": "Bildgenerierung", "task.upscale": "Bilder hochskalieren", "task.stt": "Sprache \u2192 Text", "task.tts": "Text \u2192 Sprache", "task.music": "Musik", "limits.title": "Deine Limits f\xFCr andere", "limits.hint": "Wie viel KI-Arbeit dieser Computer f\xFCr andere leistet. Leer lassen f\xFCr kein Limit. Ist ein Limit erreicht, werden deine Modelle bis zum n\xE4chsten Zeitraum nicht mehr angeboten.", "limits.save": "Limits speichern", "limits.requests": "Anfragen", "limits.tokens": "Tokens", "limits.used": "Genutzt", "limits.day": "Pro Tag", "limits.week": "Pro Woche", "limits.month": "Pro Monat", "limits.none": "kein Limit", "limits.usage": "{requests} Anfragen \xB7 {tokens} Tokens", "limits.saved": "Limits gespeichert.", "tip.models.engine": "L\xE4dt die Open-Source-Engine Lemonade in BitPull, damit dieser Computer Bild-, Sprach- und Musikmodelle verleihen kann.", "tip.models.download": "L\xE4dt {model} ({size} GB) auf diesen Computer, um es anderen anzubieten. Du kannst es sp\xE4ter entfernen.", "tip.limits.save": "Speichert die t\xE4glichen, w\xF6chentlichen und monatlichen Limits f\xFCr KI-Arbeit f\xFCr andere.", "lend.visible": "\u2713 Das Netzwerk sieht diesen Computer: {cpus} CPU, {ram} GB f\xFCr andere verf\xFCgbar.", "lend.invisible": "Das Netzwerk sieht das Verleihen noch nicht: warte bis zu einer Minute; bleibt es so, pr\xFCfe die Internetverbindung.", "lend.unusable": "\u26A0 Noch niemand kann diesen Computer nutzen: hier kann kein Auftrag laufen. {reason}", "lend.unusable.docker": "Docker besteht die Isolationspr\xFCfung von BitPull nicht: siehe \u201EDiesen Computer einrichten\u201C.", "lend.unusable.off": "Container-Auftr\xE4ge sind aus und kein KI-Modell ist installiert: aktiviere \u201EContainer-Auftr\xE4ge\u201C oder lade ein Modell herunter.", "lend.docker_login": "Docker kann keine Images herunterladen, weil seine Docker-Hub-Anmeldung nicht mehr g\xFCltig ist. Klicke in Docker Desktop auf dein Konto (oben rechts) \u2192 Sign out, melde dich dann wieder an oder bleib abgemeldet. Dr\xFCcke danach Erneut pr\xFCfen.", "lend.off_hint": "Das Verleihen ist ausgeschaltet: Hake unten in \u201E{rules}\u201C \u201E{enabled}\u201C an und dr\xFCcke \u201E{save}\u201C. (Pause / Fortsetzen pausiert nur ein bereits aktives Verleihen.)", "lend.low_memory": "Es werden nur {mb} MB Speicher angeboten: nur wenige Auftr\xE4ge passen. Setze in \u201E{rules}\u201C \u201E{memory}\u201C z. B. auf 4096 (= 4 GB) und dr\xFCcke \u201E{save}\u201C." }, en: { "lang.name": "English", "app.title": "BitPull", "locked.text": "Open the dashboard from the BitPull app: its link contains the access key.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Direct address", "pill.relay_on": "Relay connected", "pill.relay_off": "Relay not connected", "pill.cached": "{n} cached copies", "net.title": "Live network", "net.online": "{n} computers online", "net.lending": "{n} lending now", "net.cpu": "{n} CPU cores", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPUs", "net.models": "{n} AI models", "net.jobs": "{n} jobs running", "credits.title": "Credit balance", "credits.plan": "{plan} plan \xB7 can go down to {n}", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recharge \u20AC5", "buy.ok": "Payment page opened in your browser.", "lend.title": "Lend this computer", "lend.hint": "Jobs run end-to-end encrypted in isolated sandboxes, without access to your files. You earn credits.", "lend.state.off": "Off", "lend.state.waiting": "Waiting", "lend.state.working": "Working", "lend.reason.lending_off": "Lending is off", "lend.reason.paused": "Paused", "lend.reason.outside_hours": "Outside your hours", "lend.reason.on_battery": "On battery", "lend.reason.computer_in_use": "You are using the computer", "lend.reason.no_jobs": "No jobs in the queue", "lend.running": "Running a {kind} job since {time}", "lend.detail": "{reason} \xB7 {n} jobs done \xB7 offers {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} models", "lend.pause": "Pause", "lend.resume": "Resume", "lend.paused_ok": "Lending paused. Any running job was handed to another computer.", "lend.resumed_ok": "Lending resumed.", "setup.title": "Set up this computer", "setup.hint": "What this computer needs to lend. Using the network needs nothing else. Installers come from the official sites; your system asks you to confirm.", "setup.checking": "Checking\u2026", "setup.docker.help": "Runs other people's jobs in isolated sandboxes. Needed for container jobs. Free for personal use and small businesses.", "setup.docker.download": "Download Docker", "setup.docker.start": "Start Docker", "setup.apple.title": "Apple Container (optional)", "setup.apple.help": "Stronger isolation: each job in its own virtual machine. Optional; Docker is enough to start.", "setup.apple.get": "Get Apple Container", "setup.ollama.help": "Runs open AI models (Qwen, Llama, Mistral\u2026). Needed to lend AI models.", "setup.ollama.download": "Download Ollama", "setup.ollama.start": "Start Ollama", "setup.model.title": "AI model", "setup.model.help": "The model this computer offers to others. Suggested for {ram} GB of memory: {model}.", "setup.model.download": "Download {model} ({size} GB)", "setup.model.none": "none yet", "setup.model.need_ollama": "Install and start Ollama first", "setup.nvidia.title": "NVIDIA GPU drivers (optional)", "setup.nvidia.help": "Only if this computer has an NVIDIA graphics card you want to lend.", "setup.nvidia.get": "Get NVIDIA drivers", "setup.status.running": "installed and running", "setup.status.installed": "installed", "setup.status.stopped": "installed, not running", "setup.status.missing": "not installed", "setup.status.found": "found", "setup.status.not_found": "not found", "setup.terminal": "Run in a terminal:", "setup.done": "Done", "setup.opened": "Done: opened {file}, follow its steps", "setup.recheck": "Check again", "setup.ok.download": "Download started. The installer opens by itself when it finishes: follow its steps.", "setup.ok.start": "Starting\u2026 it can take up to a minute. This list updates by itself.", "setup.ok.pull": "Model download started. Progress is shown above.", "setup.ok.page": "Page opened in your browser.", "setup.ok.recheck": "Checked again.", "rules.title": "Lending rules", "rules.enabled": "Lending on", "rules.enabled.help": "Master switch. When off, this computer never runs other people's jobs. You can still use the network yourself.", "rules.cpus": "Max CPUs", "rules.cpus.help": "How many processor cores a job may use at most. Example: on an 8-core computer, 2 leaves 6 cores free for you.", "rules.memory": "Max memory (MB)", "rules.memory.help": "RAM a job may use, in megabytes (1024 MB = 1 GB). BitPull never offers more than half of this computer's memory.", "rules.gpu": "GPU", "rules.gpu.none": "None", "rules.gpu.consumer": "Consumer (8\u201312 GB)", "rules.gpu.high": "High-end (16\u201324 GB)", "rules.gpu.datacenter": "Data-centre (40 GB+)", "rules.gpu.help": "The graphics card you lend, by video memory. Leave None if you have no dedicated GPU or do not want to lend it. A GPU earns the most credits.", "rules.containers": "Container jobs", "rules.containers.help": "Run builds, tests and scripts for others in a sandbox with no internet and no access to your files. Needs Docker (or Apple Container): see \u201CSet up this computer\u201D.", "rules.models": "Open models (Ollama)", "rules.models.help": "Answer AI requests with the open models installed in Ollama on this computer. Needs Ollama and at least one model.", "rules.idle": "Only after minutes idle", "rules.idle.help": "Lend only when you have not touched keyboard or mouse for this many minutes. 0 = lend even while you work.", "rules.ac": "Only when plugged in", "rules.ac.help": "On a laptop, stop lending when running on battery, so lending never drains it.", "rules.hours": "Only from / to hour (empty = always)", "rules.hours.help": "Lend only in this time window, in 24-hour format. Example: 22 and 8 = from 10 pm to 8 am. Leave both empty to lend at any hour.", "rules.cache": "Cached copies of others' repos", "rules.cache.help": "How many public repos of other users this computer keeps a copy of, so they stay available when their authors are offline. Uses a little disk space and earns credits. 0 = none.", "rules.save": "Save rules", "rules.saved": "Rules saved. They apply within a few seconds.", "rules.hours_both": "Fill both hours, or leave both empty to lend at any hour.", "folders.title": "Authorised folders", "folders.hint": "BitPull reads only these folders. To publish one it needs a complete bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Authorise", "folders.none": "No authorised folders.", "folders.draft": "Draft", "folders.publish": "Publish", "folders.remove": "Remove", "folders.need_path": "Write the full path of a folder first, e.g. /Users/you/projects/my-library.", "folders.added": "Folder authorised.", "folders.removed": "Folder removed. BitPull no longer reads it.", "folders.drafted": "Draft ready: {n} files found. Let your AI fill the summary and descriptions (prepare_publish tool), then press Publish.", "folders.published": 'Published "{name}" with {n} files.', "folders.secrets_in": "Found in: {where}", "folders.line": "{file} line {line}", "repos.title": "Your published repos", "repos.hint": "They update by themselves when you change the files (every 5 minutes).", "repos.none": "No published repos.", "repos.withdraw": "Withdraw", "repos.withdrawn": "Repo withdrawn from the network.", "ask.title": "Open models on the network", "ask.offers": "This computer offers: {models}.", "ask.offers_none": "no models (install Ollama to offer some)", "ask.placeholder": "Ask an open model on the network\u2026", "ask.small": "Small", "ask.medium": "Medium", "ask.large": "Large", "ask.button": "Ask", "ask.empty": "Write a question first.", "ask.waiting": "Looking for a computer with the model\u2026 this can take up to a minute.", "ask.credits": "{n} credits", "tools.title": "Connect your tools", "tools.mcp": "For Claude Code and MCP clients, run in a terminal:", "tools.openai": "For OpenAI-compatible tools: base URL", "tools.key": "API key", "tools.show": "Show", "jobs.title": "Your recent jobs", "jobs.none": "No jobs.", "jobs.model": "Model", "jobs.container": "Container", "jobs.status.queued": "Queued", "jobs.status.running": "Running", "jobs.status.done": "Done", "jobs.status.failed": "Failed", "jobs.status.canceled": "Canceled", "jobs.cost": "{n} credits", working: "Working\u2026", "err.agent_down": "BitPull on this computer is not responding. It restarts by itself within 30 seconds: try again shortly.", "err.server": "Can't reach the BitPull server. Check your internet connection and try again.", "err.session": "This dashboard session expired. Reopen it from the BitPull app.", "err.billing": "Payments are not active yet.", "err.no_folder": "This folder does not exist on this computer. Check the path.", "err.not_folder": "This path is a file, not a folder.", "err.credits": "Not enough credits.", "err.device": "This computer is not connected yet. Keep the BitPull app open and try again in a minute.", "err.no_model": "No computer on the network offers an AI model right now. Try again later.", "err.invalid": "Some values are not valid. Check the fields and try again.", "tip.lang": "Language of the app. Your choice is remembered on this computer.", "tip.buy.base": "Opens the secure payment page for the Base plan: \u20AC4.50 per month with 80 credits every month. You can cancel at any time.", "tip.buy.pro": "Opens the secure payment page for the Pro plan: \u20AC9.90 per month with 200 credits every month, top priority and all GPUs. You can cancel at any time.", "tip.buy.recharge": "Opens the secure payment page to buy 80 credits once, for \u20AC5. They never expire.", "tip.pause": "Stops lending right now. A job running at this moment is handed to another computer. Press again to resume.", "tip.resume": "Starts lending again, following your lending rules.", "tip.rules.save": "Saves the lending rules above. They apply within a few seconds; nothing changes until you press this.", "tip.folder.add": "Allows BitPull to read the folder written on the left. Files outside authorised folders are never read or shared.", "tip.folder.draft": "Creates bitpull.json in the folder: the list of its files with empty descriptions for your AI to complete. Nothing is published yet.", "tip.folder.publish": "Shares this folder on the network as a public repo, signed by this computer. Publication is blocked if keys or passwords are found in the files.", "tip.folder.remove": "BitPull stops reading this folder. Repos already published from it stay online until you withdraw them.", "tip.repo.withdraw": "Removes this repo from the network. Other users can no longer find or download it. Your files stay on your computer.", "tip.ask": "Sends your question, end-to-end encrypted, to a computer on the network that runs an open AI model. Costs a few credits.", "tip.tier": "Model size: small is fast and cheap, large is smarter and costs more credits.", "tip.show_key": "Shows the key that AI tools on this computer use to talk to BitPull. Do not share it.", "tip.setup.download": "Downloads the official installer of {name} for this computer into your Downloads folder and opens it. Follow its steps to finish.", "tip.setup.start": "Starts {name}, which is installed on this computer but not running.", "tip.setup.pull": "Downloads the AI model {model} ({size} GB) into Ollama, so this computer can offer it to others.", "tip.setup.open": "Opens the official {name} page in your browser.", "tip.setup.recheck": "Checks again what is installed and running on this computer.", "update.title": "App updates", "update.current": "Installed version: {v}", "update.latest": "Latest version: {v}", "update.button": "Check for updates", "update.install": "Install version {v} now", "update.available": "Version {v} is available.", "update.not_in_app": "Updates are installed by the BitPull app. Open this dashboard from the app to update.", "update.state.requested": "Asking the app to check\u2026", "update.state.checking": "Checking for updates\u2026", "update.state.up_to_date": "You have the latest version.", "update.state.installing": "Downloading and installing version {v}\u2026 the app restarts by itself.", "update.state.restarting": "Restarting with version {v}\u2026", "update.state.error": "The update did not work: {msg}. Try again later.", "tip.update": "Checks whether a newer version of BitPull exists. If it does, it downloads it, verifies its signature, installs it and restarts the app. Lending pauses for a few seconds.", "tools.hint": "Let your AI assistant search shared code and use the network's open models and computers. Pick your tool:", "tools.connect": "Connect", "tools.connected": "Connected", "tools.copy": "Copy", "tools.copied": "Copied.", "tools.installed": "Installed", "tools.not_found": "Not found on this computer", "tools.done": "Done. Restart {name} to start using BitPull.", "tools.manual": "To add it by hand:", "tools.config_invalid": "{name}'s settings file is not valid JSON, so BitPull did not touch it. Fix the file or add BitPull by hand with Copy.", "tip.tools.connect": "Adds BitPull to {name}'s settings automatically. A backup of the previous settings is kept next to them.", "tip.tools.copy": "Copies the command or settings to the clipboard, to add BitPull to {name} yourself.", "models.title": "AI models to share", "models.hint": "Open models of every kind that this computer can lend. Only models whose licence allows serving them to others are listed. Downloaded models are offered to the network while lending is on.", "models.engine.title": "Image, speech and music engine", "models.engine.help": "Lemonade (open source): runs image generation, speech-to-text, text-to-speech, music, reranking and upscaling. Installed inside BitPull, no administrator rights.", "models.engine.install": "Install engine", "models.engine.repair": "Reinstall engine", "models.engine.unsupported": "Not available on this computer (needs Apple silicon, or Windows/Linux x64)", "models.need_engine": "Install the engine first", "models.not_here": "Not available on this computer", "models.shared": "Downloaded \xB7 shared", "models.download": "Download ({size} GB)", "models.needs_ram": "Needs about {ram} GB of memory: it may be slow here", "models.recommended": "Recommended", "models.license": "Licence", "models.ok.engine": "Installing the engine\u2026", "task.chat": "Text and code", "task.vision": "Images \u2192 text", "task.ocr": "Documents (OCR)", "task.translate": "Translation", "task.embed": "Embeddings (search)", "task.rerank": "Reranking", "task.image": "Image generation", "task.upscale": "Image upscaling", "task.stt": "Speech to text", "task.tts": "Text to speech", "task.music": "Music", "limits.title": "Your limits for others", "limits.hint": "How much AI work this computer does for others. Leave empty for no limit. When a limit is reached, your models are no longer offered until the period rolls over.", "limits.save": "Save limits", "limits.requests": "Requests", "limits.tokens": "Tokens", "limits.used": "Used", "limits.day": "Per day", "limits.week": "Per week", "limits.month": "Per month", "limits.none": "no limit", "limits.usage": "{requests} requests \xB7 {tokens} tokens", "limits.saved": "Limits saved.", "tip.models.engine": "Downloads the open-source Lemonade engine into BitPull, so this computer can lend image, speech and music models.", "tip.models.download": "Downloads {model} ({size} GB) to this computer so it can offer it to others. You can remove it later.", "tip.limits.save": "Saves the daily, weekly and monthly limits for AI work done for others.", "lend.visible": "\u2713 The network sees this computer: {cpus} CPU, {ram} GB available to others.", "lend.invisible": "The network does not see the lending yet: wait up to a minute; if it stays like this, check the internet connection.", "lend.unusable": "\u26A0 Nobody can use this computer yet: no job can run here. {reason}", "lend.unusable.docker": `Docker does not pass BitPull's isolation check: see "Set up this computer".`, "lend.unusable.off": 'Container jobs are off and no AI model is installed: turn on "Container jobs" or download a model.', "lend.docker_login": "Docker cannot download images because its Docker Hub login is no longer valid. In Docker Desktop click your account (top right) \u2192 Sign out, then sign in again or stay signed out. Then press Check again.", "lend.off_hint": 'Lending is switched off: tick "{enabled}" in "{rules}" below and press "{save}". (Pause / Resume only pauses lending that is already on.)', "lend.low_memory": 'Only {mb} MB of memory is offered: few jobs fit. In "{rules}" set "{memory}" to e.g. 4096 (= 4 GB) and press "{save}".' }, es: { "lang.name": "Espa\xF1ol", "app.title": "BitPull", "locked.text": "Abre el panel desde la app BitPull: su enlace contiene la clave de acceso.", "pill.online": "En l\xEDnea", "pill.offline": "Sin conexi\xF3n", "pill.direct": "Direcci\xF3n directa", "pill.relay_on": "Rel\xE9 conectado", "pill.relay_off": "Rel\xE9 no conectado", "pill.cached": "{n} copias en cach\xE9", "net.title": "Red en vivo", "net.online": "{n} equipos en l\xEDnea", "net.lending": "{n} prestando ahora", "net.cpu": "{n} n\xFAcleos de CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPU", "net.models": "{n} modelos de IA", "net.jobs": "{n} tareas en curso", "credits.title": "Saldo de cr\xE9ditos", "credits.plan": "Plan {plan} \xB7 puede bajar hasta {n}", "plan.free": "Gratis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recargar \u20AC5", "buy.ok": "P\xE1gina de pago abierta en tu navegador.", "lend.title": "Prestar este equipo", "lend.hint": "Las tareas se ejecutan cifradas de extremo a extremo en entornos aislados, sin acceso a tus archivos. Ganas cr\xE9ditos.", "lend.state.off": "Apagado", "lend.state.waiting": "En espera", "lend.state.working": "Trabajando", "lend.reason.lending_off": "El pr\xE9stamo est\xE1 desactivado", "lend.reason.paused": "En pausa", "lend.reason.outside_hours": "Fuera de tu horario", "lend.reason.on_battery": "Con bater\xEDa", "lend.reason.computer_in_use": "Est\xE1s usando el equipo", "lend.reason.no_jobs": "No hay tareas en la cola", "lend.running": "Ejecutando una tarea de {kind} desde {time}", "lend.detail": "{reason} \xB7 {n} tareas hechas \xB7 ofrece {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", entorno aislado {name}", "lend.detail.models": ", {n} modelos", "lend.pause": "Pausar", "lend.resume": "Reanudar", "lend.paused_ok": "Pr\xE9stamo en pausa. La tarea en curso pas\xF3 a otro equipo.", "lend.resumed_ok": "Pr\xE9stamo reanudado.", "setup.title": "Configurar este equipo", "setup.hint": "Lo que este equipo necesita para prestar. Para usar la red no hace falta nada m\xE1s. Los instaladores vienen de los sitios oficiales; tu sistema te pedir\xE1 confirmaci\xF3n.", "setup.checking": "Comprobando\u2026", "setup.docker.help": "Ejecuta las tareas de otras personas en entornos aislados. Necesario para tareas de contenedor. Gratis para uso personal y peque\xF1as empresas.", "setup.docker.download": "Descargar Docker", "setup.docker.start": "Iniciar Docker", "setup.apple.title": "Apple Container (opcional)", "setup.apple.help": "M\xE1s aislamiento: cada tarea en su propia m\xE1quina virtual. Opcional; con Docker basta para empezar.", "setup.apple.get": "Obtener Apple Container", "setup.ollama.help": "Ejecuta modelos de IA abiertos (Qwen, Llama, Mistral\u2026). Necesario para prestar modelos de IA.", "setup.ollama.download": "Descargar Ollama", "setup.ollama.start": "Iniciar Ollama", "setup.model.title": "Modelo de IA", "setup.model.help": "El modelo que este equipo ofrece a otros. Recomendado para {ram} GB de memoria: {model}.", "setup.model.download": "Descargar {model} ({size} GB)", "setup.model.none": "ninguno a\xFAn", "setup.model.need_ollama": "Primero instala e inicia Ollama", "setup.nvidia.title": "Controladores de GPU NVIDIA (opcional)", "setup.nvidia.help": "Solo si este equipo tiene una tarjeta gr\xE1fica NVIDIA que quieras prestar.", "setup.nvidia.get": "Obtener controladores NVIDIA", "setup.status.running": "instalado y en ejecuci\xF3n", "setup.status.installed": "instalado", "setup.status.stopped": "instalado, detenido", "setup.status.missing": "no instalado", "setup.status.found": "encontrado", "setup.status.not_found": "no encontrado", "setup.terminal": "Ejecuta en una terminal:", "setup.done": "Listo", "setup.opened": "Listo: se abri\xF3 {file}, sigue sus pasos", "setup.recheck": "Comprobar de nuevo", "setup.ok.download": "Descarga iniciada. El instalador se abrir\xE1 solo al terminar: sigue sus pasos.", "setup.ok.start": "Iniciando\u2026 puede tardar hasta un minuto. Esta lista se actualiza sola.", "setup.ok.pull": "Descarga del modelo iniciada. El progreso se muestra arriba.", "setup.ok.page": "P\xE1gina abierta en tu navegador.", "setup.ok.recheck": "Comprobado de nuevo.", "rules.title": "Reglas de pr\xE9stamo", "rules.enabled": "Pr\xE9stamo activado", "rules.enabled.help": "Interruptor general. Si est\xE1 apagado, este equipo nunca ejecuta tareas de otros. Aun as\xED puedes usar la red.", "rules.cpus": "CPU m\xE1x.", "rules.cpus.help": "Cu\xE1ntos n\xFAcleos del procesador puede usar una tarea como m\xE1ximo. Ejemplo: en un equipo de 8 n\xFAcleos, 2 te deja 6 libres.", "rules.memory": "Memoria m\xE1x. (MB)", "rules.memory.help": "RAM que puede usar una tarea, en megabytes (1024 MB = 1 GB). BitPull nunca ofrece m\xE1s de la mitad de la memoria de este equipo.", "rules.gpu": "GPU", "rules.gpu.none": "Ninguna", "rules.gpu.consumer": "Dom\xE9stica (8\u201312 GB)", "rules.gpu.high": "Gama alta (16\u201324 GB)", "rules.gpu.datacenter": "Centro de datos (40 GB+)", "rules.gpu.help": "La tarjeta gr\xE1fica que prestas, seg\xFAn su memoria de video. Deja Ninguna si no tienes GPU dedicada o no quieres prestarla. Una GPU es lo que m\xE1s cr\xE9ditos gana.", "rules.containers": "Tareas de contenedor", "rules.containers.help": "Ejecuta compilaciones, pruebas y scripts de otros en un entorno aislado sin internet ni acceso a tus archivos. Requiere Docker (o Apple Container): consulta \xABConfigurar este equipo\xBB.", "rules.models": "Modelos abiertos (Ollama)", "rules.models.help": "Responde solicitudes de IA con los modelos abiertos instalados en Ollama en este equipo. Requiere Ollama y al menos un modelo.", "rules.idle": "Solo tras minutos de inactividad", "rules.idle.help": "Presta solo cuando no hayas tocado el teclado ni el rat\xF3n durante estos minutos. 0 = prestar incluso mientras trabajas.", "rules.ac": "Solo conectado a la corriente", "rules.ac.help": "En un port\xE1til, deja de prestar cuando funciona con bater\xEDa, para no agotarla.", "rules.hours": "Solo de / a la hora (vac\xEDo = siempre)", "rules.hours.help": "Presta solo en este horario, en formato de 24 horas. Ejemplo: 22 y 8 = de 22:00 a 8:00. Deja ambos vac\xEDos para prestar a cualquier hora.", "rules.cache": "Copias en cach\xE9 de repos ajenos", "rules.cache.help": "Cu\xE1ntos repos p\xFAblicos de otros usuarios guarda este equipo, para que sigan disponibles cuando sus autores no est\xE9n conectados. Usa poco espacio en disco y gana cr\xE9ditos. 0 = ninguno.", "rules.save": "Guardar reglas", "rules.saved": "Reglas guardadas. Se aplican en unos segundos.", "rules.hours_both": "Rellena ambas horas o d\xE9jalas vac\xEDas para prestar a cualquier hora.", "folders.title": "Carpetas autorizadas", "folders.hint": "BitPull solo lee estas carpetas. Para publicar una necesita un bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizar", "folders.none": "No hay carpetas autorizadas.", "folders.draft": "Borrador", "folders.publish": "Publicar", "folders.remove": "Quitar", "folders.need_path": "Primero escribe la ruta completa de una carpeta, p. ej. /Users/you/projects/my-library.", "folders.added": "Carpeta autorizada.", "folders.removed": "Carpeta quitada. BitPull ya no la lee.", "folders.drafted": "Borrador listo: {n} archivos encontrados. Deja que tu IA complete el resumen y las descripciones (herramienta prepare_publish) y luego pulsa Publicar.", "folders.published": 'Publicado "{name}" con {n} archivos.', "folders.secrets_in": "Encontrado en: {where}", "folders.line": "{file} l\xEDnea {line}", "repos.title": "Tus repos publicados", "repos.hint": "Se actualizan solos cuando cambias los archivos (cada 5 minutos).", "repos.none": "No hay repos publicados.", "repos.withdraw": "Retirar", "repos.withdrawn": "Repo retirado de la red.", "ask.title": "Modelos abiertos en la red", "ask.offers": "Este equipo ofrece: {models}.", "ask.offers_none": "ning\xFAn modelo (instala Ollama para ofrecer alguno)", "ask.placeholder": "Pregunta a un modelo abierto de la red\u2026", "ask.small": "Peque\xF1o", "ask.medium": "Mediano", "ask.large": "Grande", "ask.button": "Preguntar", "ask.empty": "Primero escribe una pregunta.", "ask.waiting": "Buscando un equipo con el modelo\u2026 puede tardar hasta un minuto.", "ask.credits": "{n} cr\xE9ditos", "tools.title": "Conecta tus herramientas", "tools.mcp": "Para Claude Code y clientes MCP, ejecuta en una terminal:", "tools.openai": "Para herramientas compatibles con OpenAI: URL base", "tools.key": "Clave de API", "tools.show": "Mostrar", "jobs.title": "Tus tareas recientes", "jobs.none": "No hay tareas.", "jobs.model": "Modelo", "jobs.container": "Contenedor", "jobs.status.queued": "En cola", "jobs.status.running": "En curso", "jobs.status.done": "Hecha", "jobs.status.failed": "Fallida", "jobs.status.canceled": "Cancelada", "jobs.cost": "{n} cr\xE9ditos", working: "Procesando\u2026", "err.agent_down": "BitPull no responde en este equipo. Se reinicia solo en 30 segundos: int\xE9ntalo de nuevo en breve.", "err.server": "No se puede conectar con el servidor de BitPull. Revisa tu conexi\xF3n a internet e int\xE9ntalo de nuevo.", "err.session": "La sesi\xF3n del panel caduc\xF3. Vuelve a abrirlo desde la app BitPull.", "err.billing": "Los pagos a\xFAn no est\xE1n activos.", "err.no_folder": "Esta carpeta no existe en este equipo. Revisa la ruta.", "err.not_folder": "Esta ruta es un archivo, no una carpeta.", "err.credits": "No tienes suficientes cr\xE9ditos.", "err.device": "Este equipo a\xFAn no est\xE1 conectado. Mant\xE9n abierta la app BitPull e int\xE9ntalo en un minuto.", "err.no_model": "Ahora mismo ning\xFAn equipo de la red ofrece un modelo de IA. Int\xE9ntalo m\xE1s tarde.", "err.invalid": "Algunos valores no son v\xE1lidos. Revisa los campos e int\xE9ntalo de nuevo.", "tip.lang": "Idioma de la app. Tu elecci\xF3n se recuerda en este equipo.", "tip.buy.base": "Abre la p\xE1gina de pago seguro del plan Base: \u20AC4.50 al mes con 80 cr\xE9ditos cada mes. Puedes cancelar cuando quieras.", "tip.buy.pro": "Abre la p\xE1gina de pago seguro del plan Pro: \u20AC9.90 al mes con 200 cr\xE9ditos cada mes, m\xE1xima prioridad y todas las GPU. Puedes cancelar cuando quieras.", "tip.buy.recharge": "Abre la p\xE1gina de pago seguro para comprar 80 cr\xE9ditos una sola vez, por \u20AC5. No caducan nunca.", "tip.pause": "Detiene el pr\xE9stamo ahora mismo. La tarea que se est\xE9 ejecutando en ese momento pasa a otro equipo. Pulsa de nuevo para reanudar.", "tip.resume": "Vuelve a prestar el equipo, siguiendo tus reglas de pr\xE9stamo.", "tip.rules.save": "Guarda las reglas de pr\xE9stamo de arriba. Se aplican en unos segundos; nada cambia hasta que pulses aqu\xED.", "tip.folder.add": "Permite que BitPull lea la carpeta escrita a la izquierda. Los archivos fuera de las carpetas autorizadas nunca se leen ni se comparten.", "tip.folder.draft": "Crea bitpull.json en la carpeta: la lista de sus archivos con descripciones vac\xEDas para que tu AI las complete. Todav\xEDa no se publica nada.", "tip.folder.publish": "Comparte esta carpeta en la red como repo p\xFAblico, firmado por este equipo. La publicaci\xF3n se bloquea si se encuentran claves o contrase\xF1as en los archivos.", "tip.folder.remove": "BitPull deja de leer esta carpeta. Los repos ya publicados desde ella siguen en l\xEDnea hasta que los retires.", "tip.repo.withdraw": "Quita este repo de la red. Los dem\xE1s usuarios ya no podr\xE1n encontrarlo ni descargarlo. Tus archivos se quedan en tu equipo.", "tip.ask": "Env\xEDa tu pregunta, cifrada de extremo a extremo, a un equipo de la red que ejecuta un modelo de AI abierto. Cuesta unos pocos cr\xE9ditos.", "tip.tier": "Tama\xF1o del modelo: el peque\xF1o es r\xE1pido y barato; el grande es m\xE1s inteligente y cuesta m\xE1s cr\xE9ditos.", "tip.show_key": "Muestra la clave que usan las herramientas de AI de este equipo para comunicarse con BitPull. No la compartas.", "tip.setup.download": "Descarga el instalador oficial de {name} para este equipo en tu carpeta Descargas y lo abre. Sigue sus pasos para terminar.", "tip.setup.start": "Inicia {name}, que est\xE1 instalado en este equipo pero no se est\xE1 ejecutando.", "tip.setup.pull": "Descarga el modelo de AI {model} ({size} GB) en Ollama, para que este equipo pueda ofrecerlo a otros.", "tip.setup.open": "Abre la p\xE1gina oficial de {name} en tu navegador.", "tip.setup.recheck": "Vuelve a comprobar qu\xE9 est\xE1 instalado y en ejecuci\xF3n en este equipo.", "update.title": "Actualizaciones de la app", "update.current": "Versi\xF3n instalada: {v}", "update.latest": "\xDAltima versi\xF3n: {v}", "update.button": "Buscar actualizaciones", "update.install": "Instalar la versi\xF3n {v} ahora", "update.available": "La versi\xF3n {v} est\xE1 disponible.", "update.not_in_app": "Las actualizaciones las instala la app BitPull. Abre este panel desde la app para actualizar.", "update.state.requested": "Pidiendo a la app que busque\u2026", "update.state.checking": "Buscando actualizaciones\u2026", "update.state.up_to_date": "Tienes la \xFAltima versi\xF3n.", "update.state.installing": "Descargando e instalando la versi\xF3n {v}\u2026 la app se reinicia sola.", "update.state.restarting": "Reiniciando con la versi\xF3n {v}\u2026", "update.state.error": "La actualizaci\xF3n no funcion\xF3: {msg}. Int\xE9ntalo m\xE1s tarde.", "tip.update": "Comprueba si existe una versi\xF3n m\xE1s reciente de BitPull. Si la hay, la descarga, verifica su firma, la instala y reinicia la app. El pr\xE9stamo se pausa unos segundos.", "tools.hint": "Deja que tu asistente de AI busque c\xF3digo compartido y use los modelos abiertos y los equipos de la red. Elige tu herramienta:", "tools.connect": "Conectar", "tools.connected": "Conectado", "tools.copy": "Copiar", "tools.copied": "Copiado.", "tools.installed": "Instalado", "tools.not_found": "No se encontr\xF3 en este equipo", "tools.done": "Listo. Reinicia {name} para empezar a usar BitPull.", "tools.manual": "Para a\xF1adirlo a mano:", "tools.config_invalid": "El archivo de configuraci\xF3n de {name} no es JSON v\xE1lido, as\xED que BitPull no lo modific\xF3. Corrige el archivo o a\xF1ade BitPull a mano con Copiar.", "tip.tools.connect": "A\xF1ade BitPull a la configuraci\xF3n de {name} autom\xE1ticamente. Se guarda una copia de seguridad de la configuraci\xF3n anterior junto a ella.", "tip.tools.copy": "Copia el comando o la configuraci\xF3n al portapapeles, para que a\xF1adas BitPull a {name} t\xFA mismo.", "models.title": "Modelos de IA para compartir", "models.hint": "Modelos abiertos de todo tipo que este ordenador puede prestar. Solo se muestran modelos cuya licencia permite servirlos a otros. Los modelos descargados se ofrecen a la red mientras el pr\xE9stamo est\xE1 activo.", "models.engine.title": "Motor de im\xE1genes, voz y m\xFAsica", "models.engine.help": "Lemonade (c\xF3digo abierto): genera im\xE1genes, transcribe voz, lee textos en voz alta, crea m\xFAsica, reordena documentos y ampl\xEDa im\xE1genes. Se instala dentro de BitPull, sin permisos de administrador.", "models.engine.install": "Instalar motor", "models.engine.repair": "Reinstalar motor", "models.engine.unsupported": "No disponible en este ordenador (requiere Apple silicon, o Windows/Linux x64)", "models.need_engine": "Instala primero el motor", "models.not_here": "No disponible en este ordenador", "models.shared": "Descargado \xB7 compartido", "models.download": "Descargar ({size} GB)", "models.needs_ram": "Necesita unos {ram} GB de memoria: aqu\xED puede ir lento", "models.recommended": "Recomendado", "models.license": "Licencia", "models.ok.engine": "Instalando el motor\u2026", "task.chat": "Texto y c\xF3digo", "task.vision": "Im\xE1genes \u2192 texto", "task.ocr": "Documentos (OCR)", "task.translate": "Traducci\xF3n", "task.embed": "Embeddings (b\xFAsqueda)", "task.rerank": "Reordenaci\xF3n", "task.image": "Generaci\xF3n de im\xE1genes", "task.upscale": "Ampliaci\xF3n de im\xE1genes", "task.stt": "Voz a texto", "task.tts": "Texto a voz", "task.music": "M\xFAsica", "limits.title": "Tus l\xEDmites para otros", "limits.hint": "Cu\xE1nto trabajo de IA hace este ordenador para otros. D\xE9jalo vac\xEDo para no poner l\xEDmite. Al alcanzar un l\xEDmite, tus modelos dejan de ofrecerse hasta el siguiente periodo.", "limits.save": "Guardar l\xEDmites", "limits.requests": "Solicitudes", "limits.tokens": "Tokens", "limits.used": "Usado", "limits.day": "Por d\xEDa", "limits.week": "Por semana", "limits.month": "Por mes", "limits.none": "sin l\xEDmite", "limits.usage": "{requests} solicitudes \xB7 {tokens} tokens", "limits.saved": "L\xEDmites guardados.", "tip.models.engine": "Descarga en BitPull el motor de c\xF3digo abierto Lemonade, para que este ordenador pueda prestar modelos de imagen, voz y m\xFAsica.", "tip.models.download": "Descarga {model} ({size} GB) en este ordenador para ofrecerlo a otros. Puedes eliminarlo despu\xE9s.", "tip.limits.save": "Guarda los l\xEDmites diarios, semanales y mensuales del trabajo de IA para otros.", "lend.visible": "\u2713 La red ve este ordenador: {cpus} CPU, {ram} GB disponibles para otros.", "lend.invisible": "La red a\xFAn no ve el pr\xE9stamo: espera hasta un minuto; si sigue as\xED, revisa la conexi\xF3n a internet.", "lend.unusable": "\u26A0 Nadie puede usar a\xFAn este ordenador: aqu\xED no puede ejecutarse ning\xFAn trabajo. {reason}", "lend.unusable.docker": 'Docker no supera la comprobaci\xF3n de aislamiento de BitPull: mira "Configurar este ordenador".', "lend.unusable.off": 'Los trabajos en contenedor est\xE1n desactivados y no hay ning\xFAn modelo de IA: activa "Trabajos en contenedor" o descarga un modelo.', "lend.docker_login": "Docker no puede descargar im\xE1genes porque su sesi\xF3n de Docker Hub ya no es v\xE1lida. En Docker Desktop haz clic en tu cuenta (arriba a la derecha) \u2192 Sign out, luego vuelve a iniciar sesi\xF3n o qu\xE9date sin sesi\xF3n. Despu\xE9s pulsa Comprobar de nuevo.", "lend.off_hint": 'El pr\xE9stamo est\xE1 apagado: marca "{enabled}" en "{rules}" abajo y pulsa "{save}". (Pausa / Reanudar solo pausa un pr\xE9stamo ya activo.)', "lend.low_memory": 'Solo ofreces {mb} MB de memoria: caben pocos trabajos. En "{rules}" pon "{memory}" por ejemplo en 4096 (= 4 GB) y pulsa "{save}".' }, fr: { "lang.name": "Fran\xE7ais", "app.title": "BitPull", "locked.text": "Ouvrez le tableau de bord depuis l'app BitPull : son lien contient la cl\xE9 d'acc\xE8s.", "pill.online": "En ligne", "pill.offline": "Hors ligne", "pill.direct": "Adresse directe", "pill.relay_on": "Relais connect\xE9", "pill.relay_off": "Relais non connect\xE9", "pill.cached": "{n} copies en cache", "net.title": "R\xE9seau en direct", "net.online": "{n} ordinateurs en ligne", "net.lending": "{n} en pr\xEAt actuellement", "net.cpu": "{n} c\u0153urs CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPU", "net.models": "{n} mod\xE8les d'IA", "net.jobs": "{n} t\xE2ches en cours", "credits.title": "Solde de cr\xE9dits", "credits.plan": "Forfait {plan} \xB7 peut descendre jusqu'\xE0 {n}", "plan.free": "Gratuit", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Recharger 5 \u20AC", "buy.ok": "Page de paiement ouverte dans votre navigateur.", "lend.title": "Pr\xEAter cet ordinateur", "lend.hint": "Les t\xE2ches s'ex\xE9cutent chiffr\xE9es de bout en bout dans des bacs \xE0 sable isol\xE9s, sans acc\xE8s \xE0 vos fichiers. Vous gagnez des cr\xE9dits.", "lend.state.off": "D\xE9sactiv\xE9", "lend.state.waiting": "En attente", "lend.state.working": "Au travail", "lend.reason.lending_off": "Le pr\xEAt est d\xE9sactiv\xE9", "lend.reason.paused": "En pause", "lend.reason.outside_hours": "Hors de vos horaires", "lend.reason.on_battery": "Sur batterie", "lend.reason.computer_in_use": "Vous utilisez l'ordinateur", "lend.reason.no_jobs": "Aucune t\xE2che en file d'attente", "lend.running": "Ex\xE9cute une t\xE2che {kind} depuis {time}", "lend.detail": "{reason} \xB7 {n} t\xE2ches termin\xE9es \xB7 offre {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", bac \xE0 sable {name}", "lend.detail.models": ", {n} mod\xE8les", "lend.pause": "Pause", "lend.resume": "Reprendre", "lend.paused_ok": "Pr\xEAt en pause. Toute t\xE2che en cours a \xE9t\xE9 confi\xE9e \xE0 un autre ordinateur.", "lend.resumed_ok": "Pr\xEAt repris.", "setup.title": "Configurer cet ordinateur", "setup.hint": "Ce dont cet ordinateur a besoin pour pr\xEAter. Utiliser le r\xE9seau ne demande rien d'autre. Les installateurs viennent des sites officiels ; votre syst\xE8me vous demande de confirmer.", "setup.checking": "V\xE9rification\u2026", "setup.docker.help": "Ex\xE9cute les t\xE2ches des autres dans des bacs \xE0 sable isol\xE9s. N\xE9cessaire pour les t\xE2ches conteneur. Gratuit pour un usage personnel et les petites entreprises.", "setup.docker.download": "T\xE9l\xE9charger Docker", "setup.docker.start": "D\xE9marrer Docker", "setup.apple.title": "Apple Container (facultatif)", "setup.apple.help": "Isolation renforc\xE9e : chaque t\xE2che dans sa propre machine virtuelle. Facultatif ; Docker suffit pour commencer.", "setup.apple.get": "Obtenir Apple Container", "setup.ollama.help": "Ex\xE9cute des mod\xE8les d'IA ouverts (Qwen, Llama, Mistral\u2026). N\xE9cessaire pour pr\xEAter des mod\xE8les d'IA.", "setup.ollama.download": "T\xE9l\xE9charger Ollama", "setup.ollama.start": "D\xE9marrer Ollama", "setup.model.title": "Mod\xE8le d'IA", "setup.model.help": "Le mod\xE8le que cet ordinateur propose aux autres. Sugg\xE9r\xE9 pour {ram} GB de m\xE9moire : {model}.", "setup.model.download": "T\xE9l\xE9charger {model} ({size} GB)", "setup.model.none": "aucun pour l'instant", "setup.model.need_ollama": "Installez et d\xE9marrez d'abord Ollama", "setup.nvidia.title": "Pilotes GPU NVIDIA (facultatif)", "setup.nvidia.help": "Seulement si cet ordinateur a une carte graphique NVIDIA que vous voulez pr\xEAter.", "setup.nvidia.get": "Obtenir les pilotes NVIDIA", "setup.status.running": "install\xE9 et actif", "setup.status.installed": "install\xE9", "setup.status.stopped": "install\xE9, non d\xE9marr\xE9", "setup.status.missing": "non install\xE9", "setup.status.found": "trouv\xE9", "setup.status.not_found": "introuvable", "setup.terminal": "Ex\xE9cutez dans un terminal :", "setup.done": "Termin\xE9", "setup.opened": "Termin\xE9 : {file} ouvert, suivez ses \xE9tapes", "setup.recheck": "Rev\xE9rifier", "setup.ok.download": "T\xE9l\xE9chargement lanc\xE9. L'installateur s'ouvrira tout seul \xE0 la fin : suivez ses \xE9tapes.", "setup.ok.start": "D\xE9marrage\u2026 cela peut prendre jusqu'\xE0 une minute. Cette liste se met \xE0 jour toute seule.", "setup.ok.pull": "T\xE9l\xE9chargement du mod\xE8le lanc\xE9. La progression s'affiche ci-dessus.", "setup.ok.page": "Page ouverte dans votre navigateur.", "setup.ok.recheck": "V\xE9rification refaite.", "rules.title": "R\xE8gles de pr\xEAt", "rules.enabled": "Pr\xEAt activ\xE9", "rules.enabled.help": "Interrupteur g\xE9n\xE9ral. D\xE9sactiv\xE9, cet ordinateur n'ex\xE9cute jamais les t\xE2ches des autres. Vous pouvez toujours utiliser le r\xE9seau vous-m\xEAme.", "rules.cpus": "CPU max", "rules.cpus.help": "Nombre maximal de c\u0153urs de processeur qu'une t\xE2che peut utiliser. Exemple : sur un ordinateur \xE0 8 c\u0153urs, 2 vous laisse 6 c\u0153urs libres.", "rules.memory": "M\xE9moire max (MB)", "rules.memory.help": "RAM qu'une t\xE2che peut utiliser, en m\xE9gaoctets (1024 MB = 1 GB). BitPull ne propose jamais plus de la moiti\xE9 de la m\xE9moire de cet ordinateur.", "rules.gpu": "GPU", "rules.gpu.none": "Aucun", "rules.gpu.consumer": "Grand public (8\u201312 GB)", "rules.gpu.high": "Haut de gamme (16\u201324 GB)", "rules.gpu.datacenter": "Centre de donn\xE9es (40 GB+)", "rules.gpu.help": "La carte graphique que vous pr\xEAtez, selon sa m\xE9moire vid\xE9o. Laissez Aucun si vous n'avez pas de GPU d\xE9di\xE9 ou ne voulez pas le pr\xEAter. Un GPU rapporte le plus de cr\xE9dits.", "rules.containers": "T\xE2ches conteneur", "rules.containers.help": "Ex\xE9cute des compilations, tests et scripts pour d'autres dans un bac \xE0 sable sans internet ni acc\xE8s \xE0 vos fichiers. N\xE9cessite Docker (ou Apple Container) : voir \xAB Configurer cet ordinateur \xBB.", "rules.models": "Mod\xE8les ouverts (Ollama)", "rules.models.help": "R\xE9pond aux requ\xEAtes d'IA avec les mod\xE8les ouverts install\xE9s dans Ollama sur cet ordinateur. N\xE9cessite Ollama et au moins un mod\xE8le.", "rules.idle": "Seulement apr\xE8s X minutes d'inactivit\xE9", "rules.idle.help": "Pr\xEAte seulement si vous n'avez pas touch\xE9 le clavier ni la souris depuis ce nombre de minutes. 0 = pr\xEAter m\xEAme pendant que vous travaillez.", "rules.ac": "Seulement sur secteur", "rules.ac.help": "Sur un portable, arr\xEAte de pr\xEAter quand il est sur batterie, pour que le pr\xEAt ne la vide jamais.", "rules.hours": "Seulement de / \xE0 heure (vide = toujours)", "rules.hours.help": "Pr\xEAte seulement dans cette plage horaire, au format 24 h. Exemple : 22 et 8 = de 22 h \xE0 8 h. Laissez les deux vides pour pr\xEAter \xE0 toute heure.", "rules.cache": "Copies en cache des d\xE9p\xF4ts d'autres", "rules.cache.help": "Nombre de d\xE9p\xF4ts publics d'autres utilisateurs dont cet ordinateur garde une copie, pour qu'ils restent disponibles quand leurs auteurs sont hors ligne. Utilise un peu d'espace disque et rapporte des cr\xE9dits. 0 = aucun.", "rules.save": "Enregistrer", "rules.saved": "R\xE8gles enregistr\xE9es. Elles s'appliquent en quelques secondes.", "rules.hours_both": "Remplissez les deux heures, ou laissez-les vides pour pr\xEAter \xE0 toute heure.", "folders.title": "Dossiers autoris\xE9s", "folders.hint": "BitPull lit uniquement ces dossiers. Pour en publier un, il faut un bitpull.json complet.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autoriser", "folders.none": "Aucun dossier autoris\xE9.", "folders.draft": "Brouillon", "folders.publish": "Publier", "folders.remove": "Retirer", "folders.need_path": "Saisissez d'abord le chemin complet d'un dossier, par ex. /Users/you/projects/my-library.", "folders.added": "Dossier autoris\xE9.", "folders.removed": "Dossier retir\xE9. BitPull ne le lit plus.", "folders.drafted": "Brouillon pr\xEAt : {n} fichiers trouv\xE9s. Laissez votre IA remplir le r\xE9sum\xE9 et les descriptions (outil prepare_publish), puis cliquez sur Publier.", "folders.published": "\xAB {name} \xBB publi\xE9 avec {n} fichiers.", "folders.secrets_in": "Trouv\xE9 dans : {where}", "folders.line": "{file} ligne {line}", "repos.title": "Vos d\xE9p\xF4ts publi\xE9s", "repos.hint": "Ils se mettent \xE0 jour tout seuls quand vous modifiez les fichiers (toutes les 5 minutes).", "repos.none": "Aucun d\xE9p\xF4t publi\xE9.", "repos.withdraw": "Retirer", "repos.withdrawn": "D\xE9p\xF4t retir\xE9 du r\xE9seau.", "ask.title": "Mod\xE8les ouverts sur le r\xE9seau", "ask.offers": "Cet ordinateur propose : {models}.", "ask.offers_none": "aucun mod\xE8le (installez Ollama pour en proposer)", "ask.placeholder": "Interrogez un mod\xE8le ouvert du r\xE9seau\u2026", "ask.small": "Petit", "ask.medium": "Moyen", "ask.large": "Grand", "ask.button": "Demander", "ask.empty": "\xC9crivez d'abord une question.", "ask.waiting": "Recherche d'un ordinateur avec ce mod\xE8le\u2026 cela peut prendre jusqu'\xE0 une minute.", "ask.credits": "{n} cr\xE9dits", "tools.title": "Connectez vos outils", "tools.mcp": "Pour Claude Code et les clients MCP, ex\xE9cutez dans un terminal :", "tools.openai": "Pour les outils compatibles OpenAI : URL de base", "tools.key": "Cl\xE9 API", "tools.show": "Afficher", "jobs.title": "Vos t\xE2ches r\xE9centes", "jobs.none": "Aucune t\xE2che.", "jobs.model": "Mod\xE8le", "jobs.container": "Conteneur", "jobs.status.queued": "En file", "jobs.status.running": "En cours", "jobs.status.done": "Termin\xE9e", "jobs.status.failed": "\xC9chou\xE9e", "jobs.status.canceled": "Annul\xE9e", "jobs.cost": "{n} cr\xE9dits", working: "En cours\u2026", "err.agent_down": "BitPull ne r\xE9pond pas sur cet ordinateur. Il red\xE9marre tout seul en 30 secondes : r\xE9essayez bient\xF4t.", "err.server": "Impossible de joindre le serveur BitPull. V\xE9rifiez votre connexion internet et r\xE9essayez.", "err.session": "Cette session du tableau de bord a expir\xE9. Rouvrez-le depuis l'app BitPull.", "err.billing": "Les paiements ne sont pas encore actifs.", "err.no_folder": "Ce dossier n'existe pas sur cet ordinateur. V\xE9rifiez le chemin.", "err.not_folder": "Ce chemin est un fichier, pas un dossier.", "err.credits": "Cr\xE9dits insuffisants.", "err.device": "Cet ordinateur n'est pas encore connect\xE9. Gardez l'app BitPull ouverte et r\xE9essayez dans une minute.", "err.no_model": "Aucun ordinateur du r\xE9seau ne propose de mod\xE8le d'IA pour le moment. R\xE9essayez plus tard.", "err.invalid": "Certaines valeurs ne sont pas valides. V\xE9rifiez les champs et r\xE9essayez.", "tip.lang": "Langue de l'application. Votre choix est m\xE9moris\xE9 sur cet ordinateur.", "tip.buy.base": "Ouvre la page de paiement s\xE9curis\xE9 du forfait Base : 4,50 \u20AC par mois avec 80 cr\xE9dits chaque mois. Vous pouvez r\xE9silier \xE0 tout moment.", "tip.buy.pro": "Ouvre la page de paiement s\xE9curis\xE9 du forfait Pro : 9,90 \u20AC par mois avec 200 cr\xE9dits chaque mois, la priorit\xE9 maximale et tous les GPU. Vous pouvez r\xE9silier \xE0 tout moment.", "tip.buy.recharge": "Ouvre la page de paiement s\xE9curis\xE9 pour acheter 80 cr\xE9dits en une fois, pour 5 \u20AC. Ils n'expirent jamais.", "tip.pause": "Arr\xEAte le pr\xEAt imm\xE9diatement. Une t\xE2che en cours \xE0 ce moment-l\xE0 est confi\xE9e \xE0 un autre ordinateur. Appuyez \xE0 nouveau pour reprendre.", "tip.resume": "Reprend le pr\xEAt, en suivant vos r\xE8gles de pr\xEAt.", "tip.rules.save": "Enregistre les r\xE8gles de pr\xEAt ci-dessus. Elles s'appliquent en quelques secondes ; rien ne change tant que vous n'appuyez pas ici.", "tip.folder.add": "Autorise BitPull \xE0 lire le dossier indiqu\xE9 \xE0 gauche. Les fichiers situ\xE9s hors des dossiers autoris\xE9s ne sont jamais lus ni partag\xE9s.", "tip.folder.draft": "Cr\xE9e bitpull.json dans le dossier : la liste de ses fichiers avec des descriptions vides que votre AI compl\xE9tera. Rien n'est encore publi\xE9.", "tip.folder.publish": "Partage ce dossier sur le r\xE9seau en tant que d\xE9p\xF4t public, sign\xE9 par cet ordinateur. La publication est bloqu\xE9e si des cl\xE9s ou des mots de passe sont trouv\xE9s dans les fichiers.", "tip.folder.remove": "BitPull arr\xEAte de lire ce dossier. Les d\xE9p\xF4ts d\xE9j\xE0 publi\xE9s depuis ce dossier restent en ligne jusqu'\xE0 ce que vous les retiriez.", "tip.repo.withdraw": "Retire ce d\xE9p\xF4t du r\xE9seau. Les autres utilisateurs ne peuvent plus le trouver ni le t\xE9l\xE9charger. Vos fichiers restent sur votre ordinateur.", "tip.ask": "Envoie votre question, chiffr\xE9e de bout en bout, \xE0 un ordinateur du r\xE9seau qui ex\xE9cute un mod\xE8le d'AI ouvert. Co\xFBte quelques cr\xE9dits.", "tip.tier": "Taille du mod\xE8le : le petit est rapide et \xE9conomique, le grand est plus intelligent et co\xFBte plus de cr\xE9dits.", "tip.show_key": "Affiche la cl\xE9 que les outils d'AI de cet ordinateur utilisent pour communiquer avec BitPull. Ne la partagez pas.", "tip.setup.download": "T\xE9l\xE9charge l'installateur officiel de {name} pour cet ordinateur dans votre dossier T\xE9l\xE9chargements et l'ouvre. Suivez ses \xE9tapes pour terminer.", "tip.setup.start": "D\xE9marre {name}, qui est install\xE9 sur cet ordinateur mais n'est pas lanc\xE9.", "tip.setup.pull": "T\xE9l\xE9charge le mod\xE8le d'AI {model} ({size} GB) dans Ollama, pour que cet ordinateur puisse le proposer aux autres.", "tip.setup.open": "Ouvre la page officielle de {name} dans votre navigateur.", "tip.setup.recheck": "V\xE9rifie \xE0 nouveau ce qui est install\xE9 et lanc\xE9 sur cet ordinateur.", "update.title": "Mises \xE0 jour de l'app", "update.current": "Version install\xE9e : {v}", "update.latest": "Derni\xE8re version : {v}", "update.button": "Rechercher des mises \xE0 jour", "update.install": "Installer la version {v} maintenant", "update.available": "La version {v} est disponible.", "update.not_in_app": "Les mises \xE0 jour sont install\xE9es par l'app BitPull. Ouvrez ce tableau de bord depuis l'app pour mettre \xE0 jour.", "update.state.requested": "Demande de v\xE9rification \xE0 l'app\u2026", "update.state.checking": "Recherche de mises \xE0 jour\u2026", "update.state.up_to_date": "Vous avez la derni\xE8re version.", "update.state.installing": "T\xE9l\xE9chargement et installation de la version {v}\u2026 l'app red\xE9marre toute seule.", "update.state.restarting": "Red\xE9marrage avec la version {v}\u2026", "update.state.error": "La mise \xE0 jour a \xE9chou\xE9 : {msg}. R\xE9essayez plus tard.", "tip.update": "V\xE9rifie s'il existe une version plus r\xE9cente de BitPull. Si oui, la t\xE9l\xE9charge, v\xE9rifie sa signature, l'installe et red\xE9marre l'app. Le pr\xEAt est suspendu quelques secondes.", "tools.hint": "Laissez votre assistant d'AI chercher dans le code partag\xE9 et utiliser les mod\xE8les ouverts et les ordinateurs du r\xE9seau. Choisissez votre outil :", "tools.connect": "Connecter", "tools.connected": "Connect\xE9", "tools.copy": "Copier", "tools.copied": "Copi\xE9.", "tools.installed": "Install\xE9", "tools.not_found": "Introuvable sur cet ordinateur", "tools.done": "Termin\xE9. Red\xE9marrez {name} pour commencer \xE0 utiliser BitPull.", "tools.manual": "Pour l'ajouter \xE0 la main :", "tools.config_invalid": "Le fichier de param\xE8tres de {name} n'est pas un JSON valide, BitPull n'y a donc pas touch\xE9. Corrigez le fichier ou ajoutez BitPull \xE0 la main avec Copier.", "tip.tools.connect": "Ajoute BitPull aux param\xE8tres de {name} automatiquement. Une sauvegarde des param\xE8tres pr\xE9c\xE9dents est conserv\xE9e \xE0 c\xF4t\xE9.", "tip.tools.copy": "Copie la commande ou les param\xE8tres dans le presse-papiers, pour ajouter BitPull \xE0 {name} vous-m\xEAme.", "models.title": "Mod\xE8les d'IA \xE0 partager", "models.hint": "Mod\xE8les ouverts de tous types que cet ordinateur peut pr\xEAter. Seuls les mod\xE8les dont la licence permet de les servir \xE0 d'autres sont list\xE9s. Les mod\xE8les t\xE9l\xE9charg\xE9s sont propos\xE9s au r\xE9seau tant que le pr\xEAt est actif.", "models.engine.title": "Moteur images, voix et musique", "models.engine.help": "Lemonade (open source) : g\xE9n\xE9ration d'images, transcription vocale, synth\xE8se vocale, musique, reclassement et agrandissement d'images. Install\xE9 dans BitPull, sans droits administrateur.", "models.engine.install": "Installer le moteur", "models.engine.repair": "R\xE9installer le moteur", "models.engine.unsupported": "Indisponible sur cet ordinateur (n\xE9cessite Apple silicon, ou Windows/Linux x64)", "models.need_engine": "Installez d'abord le moteur", "models.not_here": "Indisponible sur cet ordinateur", "models.shared": "T\xE9l\xE9charg\xE9 \xB7 partag\xE9", "models.download": "T\xE9l\xE9charger ({size} Go)", "models.needs_ram": "N\xE9cessite environ {ram} Go de m\xE9moire : peut \xEAtre lent ici", "models.recommended": "Recommand\xE9", "models.license": "Licence", "models.ok.engine": "Installation du moteur\u2026", "task.chat": "Texte et code", "task.vision": "Images \u2192 texte", "task.ocr": "Documents (OCR)", "task.translate": "Traduction", "task.embed": "Embeddings (recherche)", "task.rerank": "Reclassement", "task.image": "G\xE9n\xE9ration d'images", "task.upscale": "Agrandissement d'images", "task.stt": "Voix \u2192 texte", "task.tts": "Texte \u2192 voix", "task.music": "Musique", "limits.title": "Vos limites pour les autres", "limits.hint": "Quantit\xE9 de travail d'IA que cet ordinateur fait pour les autres. Laissez vide pour aucune limite. Une fois une limite atteinte, vos mod\xE8les ne sont plus propos\xE9s jusqu'\xE0 la p\xE9riode suivante.", "limits.save": "Enregistrer les limites", "limits.requests": "Requ\xEAtes", "limits.tokens": "Tokens", "limits.used": "Utilis\xE9", "limits.day": "Par jour", "limits.week": "Par semaine", "limits.month": "Par mois", "limits.none": "aucune limite", "limits.usage": "{requests} requ\xEAtes \xB7 {tokens} tokens", "limits.saved": "Limites enregistr\xE9es.", "tip.models.engine": "T\xE9l\xE9charge dans BitPull le moteur open source Lemonade, pour que cet ordinateur puisse pr\xEAter des mod\xE8les d'image, de voix et de musique.", "tip.models.download": "T\xE9l\xE9charge {model} ({size} Go) sur cet ordinateur pour le proposer aux autres. Vous pourrez le supprimer plus tard.", "tip.limits.save": "Enregistre les limites quotidiennes, hebdomadaires et mensuelles du travail d'IA fait pour les autres.", "lend.visible": "\u2713 Le r\xE9seau voit cet ordinateur : {cpus} CPU, {ram} Go disponibles pour les autres.", "lend.invisible": "Le r\xE9seau ne voit pas encore le pr\xEAt : attendez jusqu'\xE0 une minute ; si cela persiste, v\xE9rifiez la connexion internet.", "lend.unusable": "\u26A0 Personne ne peut encore utiliser cet ordinateur : aucune t\xE2che ne peut s'ex\xE9cuter ici. {reason}", "lend.unusable.docker": "Docker ne passe pas la v\xE9rification d'isolation de BitPull : voir \xAB Configurer cet ordinateur \xBB.", "lend.unusable.off": "Les t\xE2ches en conteneur sont d\xE9sactiv\xE9es et aucun mod\xE8le d'IA n'est install\xE9 : activez \xAB T\xE2ches en conteneur \xBB ou t\xE9l\xE9chargez un mod\xE8le.", "lend.docker_login": "Docker ne peut pas t\xE9l\xE9charger d'images car sa connexion \xE0 Docker Hub n'est plus valide. Dans Docker Desktop, cliquez sur votre compte (en haut \xE0 droite) \u2192 Sign out, puis reconnectez-vous ou restez d\xE9connect\xE9. Appuyez ensuite sur V\xE9rifier \xE0 nouveau.", "lend.off_hint": "Le pr\xEAt est d\xE9sactiv\xE9 : cochez \xAB {enabled} \xBB dans \xAB {rules} \xBB ci-dessous et appuyez sur \xAB {save} \xBB. (Pause / Reprendre ne fait que suspendre un pr\xEAt d\xE9j\xE0 actif.)", "lend.low_memory": "Seulement {mb} Mo de m\xE9moire offerts : peu de t\xE2ches y tiennent. Dans \xAB {rules} \xBB, r\xE9glez \xAB {memory} \xBB par exemple \xE0 4096 (= 4 Go) et appuyez sur \xAB {save} \xBB." }, hi: { "lang.name": "\u0939\u093F\u0928\u094D\u0926\u0940", "app.title": "BitPull", "locked.text": "\u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 BitPull \u0910\u092A \u0938\u0947 \u0916\u094B\u0932\u0947\u0902: \u0909\u0938\u0915\u0947 \u0932\u093F\u0902\u0915 \u092E\u0947\u0902 \u090F\u0915\u094D\u0938\u0947\u0938 \u0915\u0941\u0902\u091C\u0940 \u0939\u094B\u0924\u0940 \u0939\u0948\u0964", "pill.online": "\u0911\u0928\u0932\u093E\u0907\u0928", "pill.offline": "\u0911\u092B\u093C\u0932\u093E\u0907\u0928", "pill.direct": "\u0938\u0940\u0927\u093E \u092A\u0924\u093E", "pill.relay_on": "\u0930\u093F\u0932\u0947 \u091C\u0941\u0921\u093C\u093E \u0939\u0948", "pill.relay_off": "\u0930\u093F\u0932\u0947 \u0928\u0939\u0940\u0902 \u091C\u0941\u0921\u093C\u093E", "pill.cached": "{n} \u0915\u0948\u0936 \u0915\u0940 \u0917\u0908 \u092A\u094D\u0930\u0924\u093F\u092F\u093E\u0901", "net.title": "\u0932\u093E\u0907\u0935 \u0928\u0947\u091F\u0935\u0930\u094D\u0915", "net.online": "{n} \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0911\u0928\u0932\u093E\u0907\u0928", "net.lending": "{n} \u0905\u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0930\u0939\u0947 \u0939\u0948\u0902", "net.cpu": "{n} CPU \u0915\u094B\u0930", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPU", "net.models": "{n} AI \u092E\u0949\u0921\u0932", "net.jobs": "{n} \u091C\u0949\u092C \u091A\u0932 \u0930\u0939\u0947 \u0939\u0948\u0902", "credits.title": "\u0915\u094D\u0930\u0947\u0921\u093F\u091F \u092C\u0948\u0932\u0947\u0902\u0938", "credits.plan": "{plan} \u092A\u094D\u0932\u093E\u0928 \xB7 {n} \u0924\u0915 \u0928\u0940\u091A\u0947 \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948", "plan.free": "\u092E\u0941\u092B\u093C\u094D\u0924", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "\u20AC5 \u0930\u093F\u091A\u093E\u0930\u094D\u091C", "buy.ok": "\u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 \u0916\u0941\u0932 \u0917\u092F\u093E\u0964", "lend.title": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902", "lend.hint": "\u091C\u0949\u092C \u0905\u0932\u0917-\u0925\u0932\u0917 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u090F\u0902\u0921-\u091F\u0942-\u090F\u0902\u0921 \u090F\u0928\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F\u0947\u0921 \u091A\u0932\u0924\u0947 \u0939\u0948\u0902, \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u0915\u0947 \u092C\u093F\u0928\u093E\u0964 \u0906\u092A \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u0947 \u0939\u0948\u0902\u0964", "lend.state.off": "\u092C\u0902\u0926", "lend.state.waiting": "\u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u092E\u0947\u0902", "lend.state.working": "\u0915\u093E\u092E \u0915\u0930 \u0930\u0939\u093E \u0939\u0948", "lend.reason.lending_off": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0939\u0948", "lend.reason.paused": "\u0930\u0941\u0915\u093E \u0939\u0941\u0906", "lend.reason.outside_hours": "\u0906\u092A\u0915\u0947 \u0924\u092F \u0918\u0902\u091F\u094B\u0902 \u0938\u0947 \u092C\u093E\u0939\u0930", "lend.reason.on_battery": "\u092C\u0948\u091F\u0930\u0940 \u092A\u0930", "lend.reason.computer_in_use": "\u0906\u092A \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902", "lend.reason.no_jobs": "\u0915\u0924\u093E\u0930 \u092E\u0947\u0902 \u0915\u094B\u0908 \u091C\u0949\u092C \u0928\u0939\u0940\u0902", "lend.running": "{time} \u0938\u0947 \u090F\u0915 {kind} \u091C\u0949\u092C \u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "lend.detail": "{reason} \xB7 {n} \u091C\u0949\u092C \u092A\u0942\u0930\u0947 \xB7 {cpus} CPU, {ram} GB \u0909\u092A\u0932\u092C\u094D\u0927", "lend.detail.sandbox": ", \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 {name}", "lend.detail.models": ", {n} \u092E\u0949\u0921\u0932", "lend.pause": "\u0930\u094B\u0915\u0947\u0902", "lend.resume": "\u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "lend.paused_ok": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0930\u094B\u0915\u093E \u0917\u092F\u093E\u0964 \u091A\u0932 \u0930\u0939\u093E \u091C\u0949\u092C \u0926\u0942\u0938\u0930\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u094C\u0902\u092A \u0926\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "lend.resumed_ok": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964", "setup.title": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0938\u0947\u091F \u0915\u0930\u0947\u0902", "setup.hint": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F\u0964 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0914\u0930 \u0915\u0941\u091B \u0928\u0939\u0940\u0902 \u091A\u093E\u0939\u093F\u090F\u0964 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u0938\u093E\u0907\u091F\u094B\u0902 \u0938\u0947 \u0906\u0924\u0947 \u0939\u0948\u0902; \u0906\u092A\u0915\u093E \u0938\u093F\u0938\u094D\u091F\u092E \u092A\u0941\u0937\u094D\u091F\u093F \u092E\u093E\u0901\u0917\u0947\u0917\u093E\u0964", "setup.checking": "\u091C\u093E\u0901\u091A \u0939\u094B \u0930\u0939\u0940 \u0939\u0948\u2026", "setup.docker.help": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u091C\u0949\u092C \u0905\u0932\u0917-\u0925\u0932\u0917 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 \u0915\u0902\u091F\u0947\u0928\u0930 \u091C\u0949\u092C \u0915\u0947 \u0932\u093F\u090F \u091C\u093C\u0930\u0942\u0930\u0940\u0964 \u0928\u093F\u091C\u0940 \u0909\u092A\u092F\u094B\u0917 \u0914\u0930 \u091B\u094B\u091F\u0947 \u0935\u094D\u092F\u0935\u0938\u093E\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u092E\u0941\u092B\u093C\u094D\u0924\u0964", "setup.docker.download": "Docker \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902", "setup.docker.start": "Docker \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.apple.title": "Apple Container (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)", "setup.apple.help": "\u091C\u093C\u094D\u092F\u093E\u0926\u093E \u092E\u091C\u093C\u092C\u0942\u0924 \u0905\u0932\u0917\u093E\u0935: \u0939\u0930 \u091C\u0949\u092C \u0905\u092A\u0928\u0940 \u0935\u0930\u094D\u091A\u0941\u0905\u0932 \u092E\u0936\u0940\u0928 \u092E\u0947\u0902\u0964 \u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915; \u0936\u0941\u0930\u0941\u0906\u0924 \u0915\u0947 \u0932\u093F\u090F Docker \u0915\u093E\u092B\u093C\u0940 \u0939\u0948\u0964", "setup.apple.get": "Apple Container \u092A\u093E\u090F\u0901", "setup.ollama.help": "\u0913\u092A\u0928 AI \u092E\u0949\u0921\u0932 (Qwen, Llama, Mistral\u2026) \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 AI \u092E\u0949\u0921\u0932 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091C\u093C\u0930\u0942\u0930\u0940\u0964", "setup.ollama.download": "Ollama \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902", "setup.ollama.start": "Ollama \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.model.title": "AI \u092E\u0949\u0921\u0932", "setup.model.help": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u091C\u094B \u092E\u0949\u0921\u0932 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 {ram} GB \u092E\u0947\u092E\u094B\u0930\u0940 \u0915\u0947 \u0932\u093F\u090F \u0938\u0941\u091D\u093E\u092F\u093E \u0917\u092F\u093E: {model}\u0964", "setup.model.download": "{model} \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902 ({size} GB)", "setup.model.none": "\u0905\u092D\u0940 \u0915\u094B\u0908 \u0928\u0939\u0940\u0902", "setup.model.need_ollama": "\u092A\u0939\u0932\u0947 Ollama \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0915\u0947 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.nvidia.title": "NVIDIA GPU \u0921\u094D\u0930\u093E\u0907\u0935\u0930 (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)", "setup.nvidia.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0924\u092C, \u091C\u092C \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092E\u0947\u0902 NVIDIA \u0917\u094D\u0930\u093E\u092B\u093C\u093F\u0915\u094D\u0938 \u0915\u093E\u0930\u094D\u0921 \u0939\u0948 \u091C\u093F\u0938\u0947 \u0906\u092A \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902\u0964", "setup.nvidia.get": "NVIDIA \u0921\u094D\u0930\u093E\u0907\u0935\u0930 \u092A\u093E\u090F\u0901", "setup.status.running": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0914\u0930 \u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "setup.status.installed": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948", "setup.status.stopped": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948, \u091A\u0932 \u0928\u0939\u0940\u0902 \u0930\u0939\u093E", "setup.status.missing": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0928\u0939\u0940\u0902 \u0939\u0948", "setup.status.found": "\u092E\u093F\u0932\u093E", "setup.status.not_found": "\u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E", "setup.terminal": "\u091F\u0930\u094D\u092E\u093F\u0928\u0932 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901:", "setup.done": "\u0939\u094B \u0917\u092F\u093E", "setup.opened": "\u0939\u094B \u0917\u092F\u093E: {file} \u0916\u094B\u0932\u0940 \u0917\u0908, \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902", "setup.recheck": "\u092B\u093F\u0930 \u091C\u093E\u0901\u091A\u0947\u0902", "setup.ok.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964 \u092A\u0942\u0930\u093E \u0939\u094B\u0928\u0947 \u092A\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0905\u092A\u0928\u0947 \u0906\u092A \u0916\u0941\u0932\u0947\u0917\u093E: \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902\u0964", "setup.ok.start": "\u0936\u0941\u0930\u0942 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026 \u0907\u0938\u092E\u0947\u0902 \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u0932\u0917 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u092F\u0939 \u0938\u0942\u091A\u0940 \u0905\u092A\u0928\u0947 \u0906\u092A \u0905\u092A\u0921\u0947\u091F \u0939\u094B\u0924\u0940 \u0939\u0948\u0964", "setup.ok.pull": "\u092E\u0949\u0921\u0932 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964 \u092A\u094D\u0930\u0917\u0924\u093F \u090A\u092A\u0930 \u0926\u093F\u0916 \u0930\u0939\u0940 \u0939\u0948\u0964", "setup.ok.page": "\u092A\u0947\u091C \u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 \u0916\u0941\u0932 \u0917\u092F\u093E\u0964", "setup.ok.recheck": "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A \u0932\u0940 \u0917\u0908\u0964", "rules.title": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E", "rules.enabled": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0932\u0942", "rules.enabled.help": "\u092E\u0941\u0916\u094D\u092F \u0938\u094D\u0935\u093F\u091A\u0964 \u092C\u0902\u0926 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u092D\u0940 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u091C\u0949\u092C \u0928\u0939\u0940\u0902 \u091A\u0932\u093E\u0924\u093E\u0964 \u0906\u092A \u092B\u093F\u0930 \u092D\u0940 \u0916\u0941\u0926 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "rules.cpus": "\u0905\u0927\u093F\u0915\u0924\u092E CPU", "rules.cpus.help": "\u090F\u0915 \u091C\u0949\u092C \u0905\u0927\u093F\u0915\u0924\u092E \u0915\u093F\u0924\u0928\u0947 \u092A\u094D\u0930\u094B\u0938\u0947\u0938\u0930 \u0915\u094B\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0909\u0926\u093E\u0939\u0930\u0923: 8-\u0915\u094B\u0930 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 2 \u0930\u0916\u0928\u0947 \u0938\u0947 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F 6 \u0915\u094B\u0930 \u0916\u093E\u0932\u0940 \u0930\u0939\u0924\u0947 \u0939\u0948\u0902\u0964", "rules.memory": "\u0905\u0927\u093F\u0915\u0924\u092E \u092E\u0947\u092E\u094B\u0930\u0940 (MB)", "rules.memory.help": "\u090F\u0915 \u091C\u0949\u092C \u0915\u093F\u0924\u0928\u0940 RAM \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0948, \u092E\u0947\u0917\u093E\u092C\u093E\u0907\u091F \u092E\u0947\u0902 (1024 MB = 1 GB)\u0964 BitPull \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0940 \u0906\u0927\u0940 \u092E\u0947\u092E\u094B\u0930\u0940 \u0938\u0947 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u092D\u0940 \u0928\u0939\u0940\u0902 \u0926\u0947\u0924\u093E\u0964", "rules.gpu": "GPU", "rules.gpu.none": "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902", "rules.gpu.consumer": "\u0938\u093E\u092E\u093E\u0928\u094D\u092F (8\u201312 GB)", "rules.gpu.high": "\u0939\u093E\u0908-\u090F\u0902\u0921 (16\u201324 GB)", "rules.gpu.datacenter": "\u0921\u0947\u091F\u093E \u0938\u0947\u0902\u091F\u0930 (40 GB+)", "rules.gpu.help": '\u0906\u092A \u091C\u094B \u0917\u094D\u0930\u093E\u092B\u093C\u093F\u0915\u094D\u0938 \u0915\u093E\u0930\u094D\u0921 \u0909\u0927\u093E\u0930 \u0926\u0947\u0924\u0947 \u0939\u0948\u0902, \u0935\u0940\u0921\u093F\u092F\u094B \u092E\u0947\u092E\u094B\u0930\u0940 \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930\u0964 \u0905\u0917\u0930 \u0905\u0932\u0917 GPU \u0928\u0939\u0940\u0902 \u0939\u0948 \u092F\u093E \u0909\u0927\u093E\u0930 \u0928\u0939\u0940\u0902 \u0926\u0947\u0928\u093E \u091A\u093E\u0939\u0924\u0947, \u0924\u094B "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902" \u0930\u0939\u0928\u0947 \u0926\u0947\u0902\u0964 GPU \u0938\u092C\u0938\u0947 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u093E \u0939\u0948\u0964', "rules.containers": "\u0915\u0902\u091F\u0947\u0928\u0930 \u091C\u0949\u092C", "rules.containers.help": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u092C\u093F\u0932\u094D\u0921, \u091F\u0947\u0938\u094D\u091F \u0914\u0930 \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u0910\u0938\u0947 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901 \u091C\u093F\u0938\u092E\u0947\u0902 \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0914\u0930 \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 Docker (\u092F\u093E Apple Container) \u091C\u093C\u0930\u0942\u0930\u0940: \u201C\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0938\u0947\u091F \u0915\u0930\u0947\u0902\u201D \u0926\u0947\u0916\u0947\u0902\u0964", "rules.models": "\u0913\u092A\u0928 \u092E\u0949\u0921\u0932 (Ollama)", "rules.models.help": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 Ollama \u092E\u0947\u0902 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0938\u0947 AI \u0905\u0928\u0941\u0930\u094B\u0927\u094B\u0902 \u0915\u093E \u091C\u0935\u093E\u092C \u0926\u0947\u0902\u0964 Ollama \u0914\u0930 \u0915\u092E \u0938\u0947 \u0915\u092E \u090F\u0915 \u092E\u0949\u0921\u0932 \u091C\u093C\u0930\u0942\u0930\u0940\u0964", "rules.idle": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0924\u0928\u0947 \u092E\u093F\u0928\u091F \u0928\u093F\u0937\u094D\u0915\u094D\u0930\u093F\u092F \u0930\u0939\u0928\u0947 \u0915\u0947 \u092C\u093E\u0926", "rules.idle.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0924\u092C \u0909\u0927\u093E\u0930 \u0926\u0947\u0902 \u091C\u092C \u0906\u092A\u0928\u0947 \u0907\u0924\u0928\u0947 \u092E\u093F\u0928\u091F \u0924\u0915 \u0915\u0940\u092C\u094B\u0930\u094D\u0921 \u092F\u093E \u092E\u093E\u0909\u0938 \u0928 \u091B\u0941\u0906 \u0939\u094B\u0964 0 = \u0915\u093E\u092E \u0915\u0930\u0924\u0947 \u0938\u092E\u092F \u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902\u0964", "rules.ac": "\u0938\u093F\u0930\u094D\u092B\u093C \u091A\u093E\u0930\u094D\u091C\u0930 \u0932\u0917\u0947 \u0939\u094B\u0928\u0947 \u092A\u0930", "rules.ac.help": "\u0932\u0948\u092A\u091F\u0949\u092A \u092A\u0930, \u092C\u0948\u091F\u0930\u0940 \u092A\u0930 \u091A\u0932\u0924\u0947 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0915\u0930\u0947\u0902, \u0924\u093E\u0915\u093F \u092C\u0948\u091F\u0930\u0940 \u0916\u0924\u094D\u092E \u0928 \u0939\u094B\u0964", "rules.hours": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0938 \u0918\u0902\u091F\u0947 \u0938\u0947 / \u0924\u0915 (\u0916\u093E\u0932\u0940 = \u0939\u092E\u0947\u0936\u093E)", "rules.hours.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0938 \u0938\u092E\u092F \u092E\u0947\u0902 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902, 24-\u0918\u0902\u091F\u0947 \u0915\u0947 \u092B\u093C\u0949\u0930\u094D\u092E\u0948\u091F \u092E\u0947\u0902\u0964 \u0909\u0926\u093E\u0939\u0930\u0923: 22 \u0914\u0930 8 = \u0930\u093E\u0924 10 \u092C\u091C\u0947 \u0938\u0947 \u0938\u0941\u092C\u0939 8 \u092C\u091C\u0947 \u0924\u0915\u0964 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u0928\u094B\u0902 \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964", "rules.cache": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0930\u093F\u092A\u094B \u0915\u0940 \u0915\u0948\u0936 \u092A\u094D\u0930\u0924\u093F\u092F\u093E\u0901", "rules.cache.help": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u0947 \u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E\u0913\u0902 \u0915\u0947 \u0915\u093F\u0924\u0928\u0947 \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0930\u093F\u092A\u094B \u0915\u0940 \u092A\u094D\u0930\u0924\u093F \u0930\u0916\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u0909\u0928\u0915\u0947 \u0932\u0947\u0916\u0915 \u0911\u092B\u093C\u0932\u093E\u0907\u0928 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092D\u0940 \u0935\u0947 \u0909\u092A\u0932\u092C\u094D\u0927 \u0930\u0939\u0947\u0902\u0964 \u0925\u094B\u0921\u093C\u0940 \u0921\u093F\u0938\u094D\u0915 \u091C\u0917\u0939 \u0932\u0947\u0924\u093E \u0939\u0948 \u0914\u0930 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u093E \u0939\u0948\u0964 0 = \u0915\u094B\u0908 \u0928\u0939\u0940\u0902\u0964", "rules.save": "\u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0947\u0902", "rules.saved": "\u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0947 \u0917\u090F\u0964 \u0915\u0941\u091B \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0932\u093E\u0917\u0942 \u0939\u094B\u0902\u0917\u0947\u0964", "rules.hours_both": "\u0926\u094B\u0928\u094B\u0902 \u0918\u0902\u091F\u0947 \u092D\u0930\u0947\u0902, \u092F\u093E \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u0928\u094B\u0902 \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964", "folders.title": "\u0905\u0927\u093F\u0915\u0943\u0924 \u092B\u093C\u094B\u0932\u094D\u0921\u0930", "folders.hint": "BitPull \u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0928 \u092B\u093C\u094B\u0932\u094D\u0921\u0930\u094B\u0902 \u0915\u094B \u092A\u0922\u093C\u0924\u093E \u0939\u0948\u0964 \u0915\u093F\u0938\u0940 \u0915\u094B \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092A\u0942\u0930\u0940 bitpull.json \u091A\u093E\u0939\u093F\u090F\u0964", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0905\u0927\u093F\u0915\u0943\u0924 \u0915\u0930\u0947\u0902", "folders.none": "\u0915\u094B\u0908 \u0905\u0927\u093F\u0915\u0943\u0924 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0928\u0939\u0940\u0902\u0964", "folders.draft": "\u0921\u094D\u0930\u093E\u092B\u093C\u094D\u091F", "folders.publish": "\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0947\u0902", "folders.remove": "\u0939\u091F\u093E\u090F\u0901", "folders.need_path": "\u092A\u0939\u0932\u0947 \u0915\u093F\u0938\u0940 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u093E \u092A\u0942\u0930\u093E \u092A\u0925 \u0932\u093F\u0916\u0947\u0902, \u091C\u0948\u0938\u0947 /Users/you/projects/my-library\u0964", "folders.added": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0905\u0927\u093F\u0915\u0943\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "folders.removed": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0939\u091F\u093E\u092F\u093E \u0917\u092F\u093E\u0964 BitPull \u0905\u092C \u0907\u0938\u0947 \u0928\u0939\u0940\u0902 \u092A\u0922\u093C\u0924\u093E\u0964", "folders.drafted": '\u0921\u094D\u0930\u093E\u092B\u093C\u094D\u091F \u0924\u0948\u092F\u093E\u0930: {n} \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u092E\u093F\u0932\u0940\u0902\u0964 \u0905\u092A\u0928\u0947 AI \u0938\u0947 \u0938\u093E\u0930\u093E\u0902\u0936 \u0914\u0930 \u0935\u093F\u0935\u0930\u0923 \u092D\u0930\u0935\u093E\u090F\u0901 (prepare_publish \u091F\u0942\u0932), \u092B\u093F\u0930 "\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0947\u0902" \u0926\u092C\u093E\u090F\u0901\u0964', "folders.published": '"{name}" {n} \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u0947 \u0938\u093E\u0925 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0939\u0941\u0906\u0964', "folders.secrets_in": "\u092F\u0939\u093E\u0901 \u092E\u093F\u0932\u093E: {where}", "folders.line": "{file} \u092A\u0902\u0915\u094D\u0924\u093F {line}", "repos.title": "\u0906\u092A\u0915\u0947 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B", "repos.hint": "\u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u092C\u0926\u0932\u0928\u0947 \u092A\u0930 \u092F\u0947 \u0905\u092A\u0928\u0947 \u0906\u092A \u0905\u092A\u0921\u0947\u091F \u0939\u094B\u0924\u0947 \u0939\u0948\u0902 (\u0939\u0930 5 \u092E\u093F\u0928\u091F \u092E\u0947\u0902)\u0964", "repos.none": "\u0915\u094B\u0908 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B \u0928\u0939\u0940\u0902\u0964", "repos.withdraw": "\u0935\u093E\u092A\u0938 \u0932\u0947\u0902", "repos.withdrawn": "\u0930\u093F\u092A\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0938\u0947 \u0935\u093E\u092A\u0938 \u0932\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "ask.title": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932", "ask.offers": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0947\u0924\u093E \u0939\u0948: {models}\u0964", "ask.offers_none": "\u0915\u094B\u0908 \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 (\u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F Ollama \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902)", "ask.placeholder": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0915\u093F\u0938\u0940 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0938\u0947 \u092A\u0942\u091B\u0947\u0902\u2026", "ask.small": "\u091B\u094B\u091F\u093E", "ask.medium": "\u092E\u0927\u094D\u092F\u092E", "ask.large": "\u092C\u0921\u093C\u093E", "ask.button": "\u092A\u0942\u091B\u0947\u0902", "ask.empty": "\u092A\u0939\u0932\u0947 \u090F\u0915 \u0938\u0935\u093E\u0932 \u0932\u093F\u0916\u0947\u0902\u0964", "ask.waiting": "\u092E\u0949\u0921\u0932 \u0935\u093E\u0932\u093E \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0916\u094B\u091C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026 \u0907\u0938\u092E\u0947\u0902 \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u0932\u0917 \u0938\u0915\u0924\u093E \u0939\u0948\u0964", "ask.credits": "{n} \u0915\u094D\u0930\u0947\u0921\u093F\u091F", "tools.title": "\u0905\u092A\u0928\u0947 \u091F\u0942\u0932 \u091C\u094B\u0921\u093C\u0947\u0902", "tools.mcp": "Claude Code \u0914\u0930 MCP \u0915\u094D\u0932\u093E\u0907\u0902\u091F \u0915\u0947 \u0932\u093F\u090F, \u091F\u0930\u094D\u092E\u093F\u0928\u0932 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901:", "tools.openai": "OpenAI-\u0938\u0902\u0917\u0924 \u091F\u0942\u0932 \u0915\u0947 \u0932\u093F\u090F: \u092C\u0947\u0938 URL", "tools.key": "API \u0915\u0941\u0902\u091C\u0940", "tools.show": "\u0926\u093F\u0916\u093E\u090F\u0901", "jobs.title": "\u0906\u092A\u0915\u0947 \u0939\u093E\u0932 \u0915\u0947 \u091C\u0949\u092C", "jobs.none": "\u0915\u094B\u0908 \u091C\u0949\u092C \u0928\u0939\u0940\u0902\u0964", "jobs.model": "\u092E\u0949\u0921\u0932", "jobs.container": "\u0915\u0902\u091F\u0947\u0928\u0930", "jobs.status.queued": "\u0915\u0924\u093E\u0930 \u092E\u0947\u0902", "jobs.status.running": "\u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "jobs.status.done": "\u092A\u0942\u0930\u093E", "jobs.status.failed": "\u0935\u093F\u092B\u0932", "jobs.status.canceled": "\u0930\u0926\u094D\u0926", "jobs.cost": "{n} \u0915\u094D\u0930\u0947\u0921\u093F\u091F", working: "\u0915\u093E\u092E \u091A\u0932 \u0930\u0939\u093E \u0939\u0948\u2026", "err.agent_down": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 BitPull \u091C\u0935\u093E\u092C \u0928\u0939\u0940\u0902 \u0926\u0947 \u0930\u0939\u093E\u0964 \u092F\u0939 30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0906\u092A \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0939\u094B\u0924\u093E \u0939\u0948: \u0925\u094B\u0921\u093C\u0940 \u0926\u0947\u0930 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.server": "BitPull \u0938\u0930\u094D\u0935\u0930 \u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0928\u0939\u0940\u0902 \u0939\u094B \u092A\u093E \u0930\u0939\u093E\u0964 \u0905\u092A\u0928\u093E \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.session": "\u0907\u0938 \u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 \u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E\u0964 \u0907\u0938\u0947 BitPull \u0910\u092A \u0938\u0947 \u092B\u093F\u0930 \u0916\u094B\u0932\u0947\u0902\u0964", "err.billing": "\u092D\u0941\u0917\u0924\u093E\u0928 \u0905\u092D\u0940 \u0938\u0915\u094D\u0930\u093F\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964", "err.no_folder": "\u092F\u0939 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u092E\u094C\u091C\u0942\u0926 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092A\u0925 \u091C\u093E\u0901\u091A\u0947\u0902\u0964", "err.not_folder": "\u092F\u0939 \u092A\u0925 \u090F\u0915 \u092B\u093C\u093E\u0907\u0932 \u0939\u0948, \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0928\u0939\u0940\u0902\u0964", "err.credits": "\u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964", "err.device": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0905\u092D\u0940 \u091C\u0941\u0921\u093C\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 BitPull \u0910\u092A \u0916\u0941\u0932\u093E \u0930\u0916\u0947\u0902 \u0914\u0930 \u090F\u0915 \u092E\u093F\u0928\u091F \u092C\u093E\u0926 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.no_model": "\u0905\u092D\u0940 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0915\u094B\u0908 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 AI \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 \u0926\u0947 \u0930\u0939\u093E\u0964 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.invalid": "\u0915\u0941\u091B \u092E\u093E\u0928 \u092E\u093E\u0928\u094D\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 \u092B\u093C\u0940\u0932\u094D\u0921 \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "tip.lang": "\u0910\u092A \u0915\u0940 \u092D\u093E\u0937\u093E\u0964 \u0906\u092A\u0915\u0940 \u092A\u0938\u0902\u0926 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u092F\u093E\u0926 \u0930\u0916\u0940 \u091C\u093E\u0924\u0940 \u0939\u0948\u0964", "tip.buy.base": "Base \u092A\u094D\u0932\u093E\u0928 \u0915\u093E \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948: \u20AC4.50 \u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939, \u0939\u0930 \u092E\u0939\u0940\u0928\u0947 80 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u0947 \u0938\u093E\u0925\u0964 \u0906\u092A \u0915\u092D\u0940 \u092D\u0940 \u0930\u0926\u094D\u0926 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.buy.pro": "Pro \u092A\u094D\u0932\u093E\u0928 \u0915\u093E \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948: \u20AC9.90 \u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939, \u0939\u0930 \u092E\u0939\u0940\u0928\u0947 200 \u0915\u094D\u0930\u0947\u0921\u093F\u091F, \u0938\u092C\u0938\u0947 \u090A\u0901\u091A\u0940 \u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915\u0924\u093E \u0914\u0930 \u0938\u092D\u0940 GPU \u0915\u0947 \u0938\u093E\u0925\u0964 \u0906\u092A \u0915\u092D\u0940 \u092D\u0940 \u0930\u0926\u094D\u0926 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.buy.recharge": "\u20AC5 \u092E\u0947\u0902 \u090F\u0915 \u092C\u093E\u0930 80 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0916\u0930\u0940\u0926\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964 \u092F\u0947 \u0915\u092D\u0940 \u0938\u092E\u093E\u092A\u094D\u0924 \u0928\u0939\u0940\u0902 \u0939\u094B\u0924\u0947\u0964", "tip.pause": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0905\u092D\u0940 \u0930\u094B\u0915 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0907\u0938 \u0938\u092E\u092F \u091A\u0932 \u0930\u0939\u093E \u091C\u0949\u092C \u0926\u0942\u0938\u0930\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u094C\u0902\u092A \u0926\u093F\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964 \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u092C\u093E\u0930\u093E \u0926\u092C\u093E\u090F\u0901\u0964", "tip.resume": "\u0906\u092A\u0915\u0947 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E\u094B\u0902 \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0924\u093E \u0939\u0948\u0964", "tip.rules.save": "\u090A\u092A\u0930 \u0926\u093F\u090F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0924\u093E \u0939\u0948\u0964 \u092F\u0947 \u0915\u0941\u091B \u0939\u0940 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0932\u093E\u0917\u0942 \u0939\u094B\u0924\u0947 \u0939\u0948\u0902; \u091C\u092C \u0924\u0915 \u0906\u092A \u0907\u0938\u0947 \u0928\u0939\u0940\u0902 \u0926\u092C\u093E\u0924\u0947, \u0915\u0941\u091B \u0928\u0939\u0940\u0902 \u092C\u0926\u0932\u0924\u093E\u0964", "tip.folder.add": "BitPull \u0915\u094B \u092C\u093E\u0908\u0902 \u0913\u0930 \u0932\u093F\u0916\u093E \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092A\u0922\u093C\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0905\u0928\u0941\u092E\u0924\u093F \u0935\u093E\u0932\u0947 \u092B\u093C\u094B\u0932\u094D\u0921\u0930\u094B\u0902 \u0938\u0947 \u092C\u093E\u0939\u0930 \u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0915\u092D\u0940 \u092A\u0922\u093C\u0940 \u092F\u093E \u0938\u093E\u091D\u093E \u0928\u0939\u0940\u0902 \u0915\u0940 \u091C\u093E\u0924\u0940\u0902\u0964", "tip.folder.draft": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092E\u0947\u0902 bitpull.json \u092C\u0928\u093E\u0924\u093E \u0939\u0948: \u0909\u0938\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u0940 \u0938\u0942\u091A\u0940, \u0916\u093E\u0932\u0940 \u0935\u093F\u0935\u0930\u0923\u094B\u0902 \u0915\u0947 \u0938\u093E\u0925 \u091C\u093F\u0928\u094D\u0939\u0947\u0902 \u0906\u092A\u0915\u093E AI \u092D\u0930\u0947\u0917\u093E\u0964 \u0905\u092D\u0940 \u0915\u0941\u091B \u092D\u0940 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u094B\u0924\u093E\u0964", "tip.folder.publish": "\u0907\u0938 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u090F\u0915 \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0930\u093F\u092A\u094B \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u093E\u091D\u093E \u0915\u0930\u0924\u093E \u0939\u0948, \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 \u0939\u0938\u094D\u0924\u093E\u0915\u094D\u0937\u0930 \u0915\u0947 \u0938\u093E\u0925\u0964 \u0905\u0917\u0930 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u092E\u0947\u0902 \u0915\u0941\u0902\u091C\u093F\u092F\u093E\u0901 \u092F\u093E \u092A\u093E\u0938\u0935\u0930\u094D\u0921 \u092E\u093F\u0932\u0924\u0947 \u0939\u0948\u0902, \u0924\u094B \u092A\u094D\u0930\u0915\u093E\u0936\u0928 \u0930\u094B\u0915 \u0926\u093F\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964", "tip.folder.remove": "BitPull \u0907\u0938 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u094B \u092A\u0922\u093C\u0928\u093E \u092C\u0902\u0926 \u0915\u0930 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0907\u0938\u0938\u0947 \u092A\u0939\u0932\u0947 \u0938\u0947 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B \u0924\u092C \u0924\u0915 \u0911\u0928\u0932\u093E\u0907\u0928 \u0930\u0939\u0924\u0947 \u0939\u0948\u0902 \u091C\u092C \u0924\u0915 \u0906\u092A \u0909\u0928\u094D\u0939\u0947\u0902 \u0935\u093E\u092A\u0938 \u0928\u0939\u0940\u0902 \u0932\u0947\u0924\u0947\u0964", "tip.repo.withdraw": "\u0907\u0938 \u0930\u093F\u092A\u094B \u0915\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0938\u0947 \u0939\u091F\u093E \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0926\u0942\u0938\u0930\u0947 \u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0907\u0938\u0947 \u0905\u092C \u0928 \u0922\u0942\u0901\u0922 \u092A\u093E\u090F\u0901\u0917\u0947, \u0928 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930 \u092A\u093E\u090F\u0901\u0917\u0947\u0964 \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0906\u092A\u0915\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0939\u0940 \u0930\u0939\u0924\u0940 \u0939\u0948\u0902\u0964", "tip.ask": "\u0906\u092A\u0915\u093E \u0938\u0935\u093E\u0932 \u090F\u0902\u0921-\u091F\u0942-\u090F\u0902\u0921 \u090F\u0928\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F\u0947\u0921 \u0930\u0942\u092A \u092E\u0947\u0902 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u0947 \u0910\u0938\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u092D\u0947\u091C\u0924\u093E \u0939\u0948 \u091C\u094B \u090F\u0915 \u0913\u092A\u0928 AI \u092E\u0949\u0921\u0932 \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 \u0907\u0938\u092E\u0947\u0902 \u0915\u0941\u091B \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0932\u0917\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.tier": "\u092E\u0949\u0921\u0932 \u0915\u093E \u0906\u0915\u093E\u0930: \u091B\u094B\u091F\u093E \u0924\u0947\u091C\u093C \u0914\u0930 \u0938\u0938\u094D\u0924\u093E \u0939\u0948, \u092C\u0921\u093C\u093E \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0938\u092E\u091D\u0926\u093E\u0930 \u0939\u0948 \u0914\u0930 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0932\u0947\u0924\u093E \u0939\u0948\u0964", "tip.show_key": "\u0935\u0939 \u0915\u0941\u0902\u091C\u0940 \u0926\u093F\u0916\u093E\u0924\u093E \u0939\u0948 \u091C\u093F\u0938\u0938\u0947 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 AI \u091F\u0942\u0932 BitPull \u0938\u0947 \u092C\u093E\u0924 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902\u0964 \u0907\u0938\u0947 \u0915\u093F\u0938\u0940 \u0938\u0947 \u0938\u093E\u091D\u093E \u0928 \u0915\u0930\u0947\u0902\u0964", "tip.setup.download": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 \u0932\u093F\u090F {name} \u0915\u093E \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0906\u092A\u0915\u0947 Downloads \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0915\u0947 \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964 \u092A\u0942\u0930\u093E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902\u0964", "tip.setup.start": "{name} \u0936\u0941\u0930\u0942 \u0915\u0930\u0924\u093E \u0939\u0948, \u091C\u094B \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0932\u0947\u0915\u093F\u0928 \u091A\u0932 \u0928\u0939\u0940\u0902 \u0930\u0939\u093E\u0964", "tip.setup.pull": "AI \u092E\u0949\u0921\u0932 {model} ({size} GB) \u0915\u094B Ollama \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u0947 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0926\u0947 \u0938\u0915\u0947\u0964", "tip.setup.open": "\u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 {name} \u0915\u093E \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964", "tip.setup.recheck": "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A\u0924\u093E \u0939\u0948 \u0915\u093F \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0915\u094D\u092F\u093E \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0914\u0930 \u0915\u094D\u092F\u093E \u091A\u0932 \u0930\u0939\u093E \u0939\u0948\u0964", "update.title": "\u0910\u092A \u0905\u092A\u0921\u0947\u091F", "update.current": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0938\u0902\u0938\u094D\u0915\u0930\u0923: {v}", "update.latest": "\u0928\u0935\u0940\u0928\u0924\u092E \u0938\u0902\u0938\u094D\u0915\u0930\u0923: {v}", "update.button": "\u0905\u092A\u0921\u0947\u091F \u091C\u093E\u0901\u091A\u0947\u0902", "update.install": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0905\u092D\u0940 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "update.available": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0909\u092A\u0932\u092C\u094D\u0927 \u0939\u0948\u0964", "update.not_in_app": "\u0905\u092A\u0921\u0947\u091F BitPull \u0910\u092A \u0926\u094D\u0935\u093E\u0930\u093E \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u093F\u090F \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964 \u0905\u092A\u0921\u0947\u091F \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092F\u0939 \u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 \u0910\u092A \u0938\u0947 \u0916\u094B\u0932\u0947\u0902\u0964", "update.state.requested": "\u0910\u092A \u0938\u0947 \u091C\u093E\u0901\u091A\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u0939\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026", "update.state.checking": "\u0905\u092A\u0921\u0947\u091F \u091C\u093E\u0901\u091A\u0947 \u091C\u093E \u0930\u0939\u0947 \u0939\u0948\u0902\u2026", "update.state.up_to_date": "\u0906\u092A\u0915\u0947 \u092A\u093E\u0938 \u0928\u0935\u0940\u0928\u0924\u092E \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0939\u0948\u0964", "update.state.installing": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0914\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026 \u0910\u092A \u0905\u092A\u0928\u0947-\u0906\u092A \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0939\u094B\u0917\u093E\u0964", "update.state.restarting": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0915\u0947 \u0938\u093E\u0925 \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026", "update.state.error": "\u0905\u092A\u0921\u0947\u091F \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E: {msg}\u0964 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "tip.update": "\u091C\u093E\u0901\u091A\u0924\u093E \u0939\u0948 \u0915\u093F BitPull \u0915\u093E \u0928\u092F\u093E \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0939\u0948 \u092F\u093E \u0928\u0939\u0940\u0902\u0964 \u0905\u0917\u0930 \u0939\u0948, \u0924\u094B \u0909\u0938\u0947 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0909\u0938\u0915\u0947 \u0939\u0938\u094D\u0924\u093E\u0915\u094D\u0937\u0930 \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0924\u093E \u0939\u0948, \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0924\u093E \u0939\u0948 \u0914\u0930 \u0910\u092A \u0915\u094B \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0915\u0930\u0924\u093E \u0939\u0948\u0964 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0915\u0941\u091B \u0938\u0947\u0915\u0902\u0921 \u0915\u0947 \u0932\u093F\u090F \u0930\u0941\u0915\u0924\u093E \u0939\u0948\u0964", "tools.hint": "\u0905\u092A\u0928\u0947 AI \u0938\u0939\u093E\u092F\u0915 \u0915\u094B \u0938\u093E\u091D\u093E \u0915\u094B\u0921 \u0916\u094B\u091C\u0928\u0947 \u0914\u0930 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u0947 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0914\u0930 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0926\u0947\u0902\u0964 \u0905\u092A\u0928\u093E \u091F\u0942\u0932 \u091A\u0941\u0928\u0947\u0902:", "tools.connect": "\u091C\u094B\u0921\u093C\u0947\u0902", "tools.connected": "\u091C\u0941\u0921\u093C\u093E \u0939\u0941\u0906", "tools.copy": "\u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902", "tools.copied": "\u0915\u0949\u092A\u0940 \u0939\u094B \u0917\u092F\u093E\u0964", "tools.installed": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948", "tools.not_found": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E", "tools.done": "\u0939\u094B \u0917\u092F\u093E\u0964 BitPull \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u093E \u0936\u0941\u0930\u0942 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F {name} \u0915\u094B \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0915\u0930\u0947\u0902\u0964", "tools.manual": "\u0907\u0938\u0947 \u0916\u0941\u0926 \u091C\u094B\u0921\u093C\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F:", "tools.config_invalid": '{name} \u0915\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u092B\u093C\u093E\u0907\u0932 \u092E\u093E\u0928\u094D\u092F JSON \u0928\u0939\u0940\u0902 \u0939\u0948, \u0907\u0938\u0932\u093F\u090F BitPull \u0928\u0947 \u0909\u0938\u0947 \u0928\u0939\u0940\u0902 \u091B\u0941\u0906\u0964 \u092B\u093C\u093E\u0907\u0932 \u0920\u0940\u0915 \u0915\u0930\u0947\u0902 \u092F\u093E "\u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902" \u0938\u0947 BitPull \u0915\u094B \u0916\u0941\u0926 \u091C\u094B\u0921\u093C\u0947\u0902\u0964', "tip.tools.connect": "BitPull \u0915\u094B \u0905\u092A\u0928\u0947-\u0906\u092A {name} \u0915\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u0924\u093E \u0939\u0948\u0964 \u092A\u093F\u091B\u0932\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u093E \u092C\u0948\u0915\u0905\u092A \u0909\u0928\u094D\u0939\u0940\u0902 \u0915\u0947 \u092A\u093E\u0938 \u0930\u0916\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964", "tip.tools.copy": "\u0915\u092E\u093E\u0902\u0921 \u092F\u093E \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u094B \u0915\u094D\u0932\u093F\u092A\u092C\u094B\u0930\u094D\u0921 \u092A\u0930 \u0915\u0949\u092A\u0940 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u0906\u092A BitPull \u0915\u094B \u0916\u0941\u0926 {name} \u092E\u0947\u0902 \u091C\u094B\u0921\u093C \u0938\u0915\u0947\u0902\u0964", "models.title": "\u0938\u093E\u091D\u093E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F AI \u092E\u0949\u0921\u0932", "models.hint": "\u0939\u0930 \u092A\u094D\u0930\u0915\u093E\u0930 \u0915\u0947 \u0916\u0941\u0932\u0947 \u092E\u0949\u0921\u0932 \u091C\u093F\u0928\u094D\u0939\u0947\u0902 \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0915\u0947\u0935\u0932 \u0935\u0947 \u092E\u0949\u0921\u0932 \u0926\u093F\u0916\u093E\u090F \u0917\u090F \u0939\u0948\u0902 \u091C\u093F\u0928\u0915\u093E \u0932\u093E\u0907\u0938\u0947\u0902\u0938 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0938\u0947\u0935\u093E \u0926\u0947\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0932\u0942 \u0930\u0939\u0928\u0947 \u092A\u0930 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u093F\u090F \u0917\u090F \u092E\u0949\u0921\u0932 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u094B \u0926\u093F\u090F \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964", "models.engine.title": "\u091B\u0935\u093F, \u0906\u0935\u093E\u091C\u093C \u0914\u0930 \u0938\u0902\u0917\u0940\u0924 \u0907\u0902\u091C\u0928", "models.engine.help": "Lemonade (\u0913\u092A\u0928 \u0938\u094B\u0930\u094D\u0938): \u091B\u0935\u093F \u0928\u093F\u0930\u094D\u092E\u093E\u0923, \u0906\u0935\u093E\u091C\u093C \u0938\u0947 \u091F\u0947\u0915\u094D\u0938\u094D\u091F, \u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0938\u0947 \u0906\u0935\u093E\u091C\u093C, \u0938\u0902\u0917\u0940\u0924, \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u0915\u0940 \u0930\u0948\u0902\u0915\u093F\u0902\u0917 \u0914\u0930 \u091B\u0935\u093F \u092C\u0921\u093C\u093E \u0915\u0930\u0928\u093E\u0964 BitPull \u0915\u0947 \u0905\u0902\u0926\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932, \u090F\u0921\u092E\u093F\u0928 \u0905\u0927\u093F\u0915\u093E\u0930 \u0915\u0940 \u091C\u093C\u0930\u0942\u0930\u0924 \u0928\u0939\u0940\u0902\u0964", "models.engine.install": "\u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.engine.repair": "\u0907\u0902\u091C\u0928 \u092B\u093F\u0930 \u0938\u0947 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.engine.unsupported": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 (Apple silicon, \u092F\u093E Windows/Linux x64 \u091A\u093E\u0939\u093F\u090F)", "models.need_engine": "\u092A\u0939\u0932\u0947 \u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.not_here": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902", "models.shared": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0939\u0941\u0906 \xB7 \u0938\u093E\u091D\u093E", "models.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902 ({size} GB)", "models.needs_ram": "\u0932\u0917\u092D\u0917 {ram} GB \u092E\u0947\u092E\u094B\u0930\u0940 \u091A\u093E\u0939\u093F\u090F: \u092F\u0939\u093E\u0901 \u0927\u0940\u092E\u093E \u0939\u094B \u0938\u0915\u0924\u093E \u0939\u0948", "models.recommended": "\u0905\u0928\u0941\u0936\u0902\u0938\u093F\u0924", "models.license": "\u0932\u093E\u0907\u0938\u0947\u0902\u0938", "models.ok.engine": "\u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026", "task.chat": "\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0914\u0930 \u0915\u094B\u0921", "task.vision": "\u091B\u0935\u093F \u2192 \u091F\u0947\u0915\u094D\u0938\u094D\u091F", "task.ocr": "\u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C (OCR)", "task.translate": "\u0905\u0928\u0941\u0935\u093E\u0926", "task.embed": "\u090F\u092E\u094D\u092C\u0947\u0921\u093F\u0902\u0917 (\u0916\u094B\u091C)", "task.rerank": "\u0930\u0940\u0930\u0948\u0902\u0915\u093F\u0902\u0917", "task.image": "\u091B\u0935\u093F \u0928\u093F\u0930\u094D\u092E\u093E\u0923", "task.upscale": "\u091B\u0935\u093F \u092C\u0921\u093C\u093E \u0915\u0930\u0928\u093E", "task.stt": "\u0906\u0935\u093E\u091C\u093C \u0938\u0947 \u091F\u0947\u0915\u094D\u0938\u094D\u091F", "task.tts": "\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0938\u0947 \u0906\u0935\u093E\u091C\u093C", "task.music": "\u0938\u0902\u0917\u0940\u0924", "limits.title": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0906\u092A\u0915\u0940 \u0938\u0940\u092E\u093E\u090F\u0901", "limits.hint": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0915\u093F\u0924\u0928\u093E AI \u0915\u093E\u092E \u0915\u0930\u0924\u093E \u0939\u0948\u0964 \u0915\u094B\u0908 \u0938\u0940\u092E\u093E \u0928 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964 \u0938\u0940\u092E\u093E \u092A\u0942\u0930\u0940 \u0939\u094B\u0928\u0947 \u092A\u0930 \u0905\u0917\u0932\u0940 \u0905\u0935\u0927\u093F \u0936\u0941\u0930\u0942 \u0939\u094B\u0928\u0947 \u0924\u0915 \u0906\u092A\u0915\u0947 \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 \u0926\u093F\u090F \u091C\u093E\u0924\u0947\u0964", "limits.save": "\u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0947\u0902", "limits.requests": "\u0905\u0928\u0941\u0930\u094B\u0927", "limits.tokens": "\u091F\u094B\u0915\u0928", "limits.used": "\u0909\u092A\u092F\u094B\u0917", "limits.day": "\u092A\u094D\u0930\u0924\u093F\u0926\u093F\u0928", "limits.week": "\u092A\u094D\u0930\u0924\u093F \u0938\u092A\u094D\u0924\u093E\u0939", "limits.month": "\u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939", "limits.none": "\u0915\u094B\u0908 \u0938\u0940\u092E\u093E \u0928\u0939\u0940\u0902", "limits.usage": "{requests} \u0905\u0928\u0941\u0930\u094B\u0927 \xB7 {tokens} \u091F\u094B\u0915\u0928", "limits.saved": "\u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0940 \u0917\u0908\u0902\u0964", "tip.models.engine": "\u0913\u092A\u0928 \u0938\u094B\u0930\u094D\u0938 Lemonade \u0907\u0902\u091C\u0928 \u0915\u094B BitPull \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u091B\u0935\u093F, \u0906\u0935\u093E\u091C\u093C \u0914\u0930 \u0938\u0902\u0917\u0940\u0924 \u092E\u0949\u0921\u0932 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0938\u0915\u0947\u0964", "tip.models.download": "{model} ({size} GB) \u0915\u094B \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948 \u0924\u093E\u0915\u093F \u0907\u0938\u0947 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0926\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0947\u0964 \u0906\u092A \u0907\u0938\u0947 \u092C\u093E\u0926 \u092E\u0947\u0902 \u0939\u091F\u093E \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.limits.save": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F AI \u0915\u093E\u092E \u0915\u0940 \u0926\u0948\u0928\u093F\u0915, \u0938\u093E\u092A\u094D\u0924\u093E\u0939\u093F\u0915 \u0914\u0930 \u092E\u093E\u0938\u093F\u0915 \u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0924\u093E \u0939\u0948\u0964", "lend.visible": "\u2713 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0926\u0947\u0916 \u0930\u0939\u093E \u0939\u0948: \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F {cpus} CPU, {ram} GB \u0909\u092A\u0932\u092C\u094D\u0927\u0964", "lend.invisible": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0905\u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0928\u0939\u0940\u0902 \u0926\u0947\u0916 \u0930\u0939\u093E: \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902; \u0905\u0917\u0930 \u0910\u0938\u093E \u0939\u0940 \u0930\u0939\u0947 \u0924\u094B \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u091C\u093E\u0901\u091A\u0947\u0902\u0964", "lend.unusable": "\u26A0 \u0905\u092D\u0940 \u0915\u094B\u0908 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u093E: \u092F\u0939\u093E\u0901 \u0915\u094B\u0908 \u0915\u093E\u092E \u0928\u0939\u0940\u0902 \u091A\u0932 \u0938\u0915\u0924\u093E\u0964 {reason}", "lend.unusable.docker": 'Docker, BitPull \u0915\u0940 \u0906\u0907\u0938\u094B\u0932\u0947\u0936\u0928 \u091C\u093E\u0901\u091A \u092A\u093E\u0938 \u0928\u0939\u0940\u0902 \u0915\u0930\u0924\u093E: "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u0947\u091F \u0905\u092A \u0915\u0930\u0947\u0902" \u0926\u0947\u0916\u0947\u0902\u0964', "lend.unusable.off": '\u0915\u0902\u091F\u0947\u0928\u0930 \u0915\u093E\u092E \u092C\u0902\u0926 \u0939\u0948\u0902 \u0914\u0930 \u0915\u094B\u0908 AI \u092E\u0949\u0921\u0932 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0928\u0939\u0940\u0902 \u0939\u0948: "\u0915\u0902\u091F\u0947\u0928\u0930 \u0915\u093E\u092E" \u091A\u093E\u0932\u0942 \u0915\u0930\u0947\u0902 \u092F\u093E \u0915\u094B\u0908 \u092E\u0949\u0921\u0932 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902\u0964', "lend.docker_login": 'Docker \u0907\u092E\u0947\u091C \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0915\u0930 \u092A\u093E \u0930\u0939\u093E \u0915\u094D\u092F\u094B\u0902\u0915\u093F \u0909\u0938\u0915\u093E Docker Hub \u0932\u0949\u0917\u093F\u0928 \u0905\u092C \u092E\u093E\u0928\u094D\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 Docker Desktop \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0916\u093E\u0924\u0947 (\u090A\u092A\u0930 \u0926\u093E\u0908\u0902 \u0913\u0930) \u2192 Sign out \u092A\u0930 \u0915\u094D\u0932\u093F\u0915 \u0915\u0930\u0947\u0902, \u092B\u093F\u0930 \u0926\u094B\u092C\u093E\u0930\u093E \u0932\u0949\u0917 \u0907\u0928 \u0915\u0930\u0947\u0902 \u092F\u093E \u0932\u0949\u0917 \u0906\u0909\u091F \u0939\u0940 \u0930\u0939\u0947\u0902\u0964 \u092B\u093F\u0930 "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A\u0947\u0902" \u0926\u092C\u093E\u090F\u0901\u0964', "lend.off_hint": '\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0939\u0948: \u0928\u0940\u091A\u0947 "{rules}" \u092E\u0947\u0902 "{enabled}" \u092A\u0930 \u091F\u093F\u0915 \u0915\u0930\u0947\u0902 \u0914\u0930 "{save}" \u0926\u092C\u093E\u090F\u0901\u0964 (\u0930\u094B\u0915\u0947\u0902 / \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 \u0915\u0947\u0935\u0932 \u092A\u0939\u0932\u0947 \u0938\u0947 \u091A\u093E\u0932\u0942 \u0909\u0927\u093E\u0930 \u0915\u094B \u0930\u094B\u0915\u0924\u093E \u0939\u0948\u0964)', "lend.low_memory": '\u0915\u0947\u0935\u0932 {mb} MB \u092E\u0947\u092E\u094B\u0930\u0940 \u0926\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948: \u092C\u0939\u0941\u0924 \u0915\u092E \u0915\u093E\u092E \u091A\u0932 \u092A\u093E\u090F\u0901\u0917\u0947\u0964 "{rules}" \u092E\u0947\u0902 "{memory}" \u0915\u094B \u0909\u0926\u093E\u0939\u0930\u0923 \u0915\u0947 \u0932\u093F\u090F 4096 (= 4 GB) \u0915\u0930\u0947\u0902 \u0914\u0930 "{save}" \u0926\u092C\u093E\u090F\u0901\u0964' }, id: { "lang.name": "Bahasa Indonesia", "app.title": "BitPull", "locked.text": "Buka dasbor dari aplikasi BitPull: tautannya berisi kunci akses.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Alamat langsung", "pill.relay_on": "Relay terhubung", "pill.relay_off": "Relay tidak terhubung", "pill.cached": "{n} salinan tersimpan", "net.title": "Jaringan langsung", "net.online": "{n} komputer online", "net.lending": "{n} sedang meminjamkan", "net.cpu": "{n} core CPU", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPU", "net.models": "{n} model AI", "net.jobs": "{n} tugas berjalan", "credits.title": "Saldo kredit", "credits.plan": "Paket {plan} \xB7 bisa turun hingga {n}", "plan.free": "Gratis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Isi ulang \u20AC5", "buy.ok": "Halaman pembayaran dibuka di browser Anda.", "lend.title": "Pinjamkan komputer ini", "lend.hint": "Tugas berjalan dengan enkripsi end-to-end di sandbox terisolasi, tanpa akses ke file Anda. Anda mendapat kredit.", "lend.state.off": "Mati", "lend.state.waiting": "Menunggu", "lend.state.working": "Bekerja", "lend.reason.lending_off": "Peminjaman mati", "lend.reason.paused": "Dijeda", "lend.reason.outside_hours": "Di luar jam Anda", "lend.reason.on_battery": "Memakai baterai", "lend.reason.computer_in_use": "Anda sedang memakai komputer", "lend.reason.no_jobs": "Tidak ada tugas di antrean", "lend.running": "Menjalankan tugas {kind} sejak {time}", "lend.detail": "{reason} \xB7 {n} tugas selesai \xB7 menawarkan {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} model", "lend.pause": "Jeda", "lend.resume": "Lanjutkan", "lend.paused_ok": "Peminjaman dijeda. Tugas yang berjalan dialihkan ke komputer lain.", "lend.resumed_ok": "Peminjaman dilanjutkan.", "setup.title": "Siapkan komputer ini", "setup.hint": "Yang dibutuhkan komputer ini untuk meminjamkan. Untuk memakai jaringan tidak perlu apa-apa lagi. Installer berasal dari situs resmi; sistem akan meminta konfirmasi Anda.", "setup.checking": "Memeriksa\u2026", "setup.docker.help": "Menjalankan tugas orang lain di sandbox terisolasi. Diperlukan untuk tugas kontainer. Gratis untuk penggunaan pribadi dan usaha kecil.", "setup.docker.download": "Unduh Docker", "setup.docker.start": "Jalankan Docker", "setup.apple.title": "Apple Container (opsional)", "setup.apple.help": "Isolasi lebih kuat: setiap tugas di mesin virtualnya sendiri. Opsional; Docker sudah cukup untuk mulai.", "setup.apple.get": "Dapatkan Apple Container", "setup.ollama.help": "Menjalankan model AI terbuka (Qwen, Llama, Mistral\u2026). Diperlukan untuk meminjamkan model AI.", "setup.ollama.download": "Unduh Ollama", "setup.ollama.start": "Jalankan Ollama", "setup.model.title": "Model AI", "setup.model.help": "Model yang ditawarkan komputer ini ke orang lain. Disarankan untuk memori {ram} GB: {model}.", "setup.model.download": "Unduh {model} ({size} GB)", "setup.model.none": "belum ada", "setup.model.need_ollama": "Pasang dan jalankan Ollama dulu", "setup.nvidia.title": "Driver GPU NVIDIA (opsional)", "setup.nvidia.help": "Hanya jika komputer ini punya kartu grafis NVIDIA yang ingin Anda pinjamkan.", "setup.nvidia.get": "Dapatkan driver NVIDIA", "setup.status.running": "terpasang dan berjalan", "setup.status.installed": "terpasang", "setup.status.stopped": "terpasang, tidak berjalan", "setup.status.missing": "belum terpasang", "setup.status.found": "ditemukan", "setup.status.not_found": "tidak ditemukan", "setup.terminal": "Jalankan di terminal:", "setup.done": "Selesai", "setup.opened": "Selesai: {file} dibuka, ikuti langkahnya", "setup.recheck": "Periksa lagi", "setup.ok.download": "Unduhan dimulai. Installer terbuka sendiri setelah selesai: ikuti langkahnya.", "setup.ok.start": "Menjalankan\u2026 bisa memakan waktu hingga satu menit. Daftar ini diperbarui sendiri.", "setup.ok.pull": "Unduhan model dimulai. Progres ditampilkan di atas.", "setup.ok.page": "Halaman dibuka di browser Anda.", "setup.ok.recheck": "Sudah diperiksa lagi.", "rules.title": "Aturan peminjaman", "rules.enabled": "Peminjaman aktif", "rules.enabled.help": "Sakelar utama. Saat mati, komputer ini tidak pernah menjalankan tugas orang lain. Anda tetap bisa memakai jaringan.", "rules.cpus": "CPU maks.", "rules.cpus.help": "Berapa core prosesor yang boleh dipakai satu tugas. Contoh: di komputer 8 core, nilai 2 menyisakan 6 core untuk Anda.", "rules.memory": "Memori maks. (MB)", "rules.memory.help": "RAM yang boleh dipakai satu tugas, dalam megabyte (1024 MB = 1 GB). BitPull tidak pernah menawarkan lebih dari separuh memori komputer ini.", "rules.gpu": "GPU", "rules.gpu.none": "Tidak ada", "rules.gpu.consumer": "Konsumen (8\u201312 GB)", "rules.gpu.high": "Kelas atas (16\u201324 GB)", "rules.gpu.datacenter": "Pusat data (40 GB+)", "rules.gpu.help": "Kartu grafis yang Anda pinjamkan, menurut memori videonya. Biarkan Tidak ada jika tidak punya GPU khusus atau tidak ingin meminjamkannya. GPU menghasilkan kredit paling banyak.", "rules.containers": "Tugas kontainer", "rules.containers.help": "Menjalankan build, tes, dan skrip orang lain di sandbox tanpa internet dan tanpa akses ke file Anda. Perlu Docker (atau Apple Container): lihat \u201CSiapkan komputer ini\u201D.", "rules.models": "Model terbuka (Ollama)", "rules.models.help": "Menjawab permintaan AI dengan model terbuka yang terpasang di Ollama pada komputer ini. Perlu Ollama dan minimal satu model.", "rules.idle": "Hanya setelah menit menganggur", "rules.idle.help": "Pinjamkan hanya jika Anda tidak menyentuh keyboard atau mouse selama sekian menit. 0 = tetap meminjamkan saat Anda bekerja.", "rules.ac": "Hanya saat dicas", "rules.ac.help": "Di laptop, berhenti meminjamkan saat memakai baterai, agar baterai tidak terkuras.", "rules.hours": "Hanya dari / sampai jam (kosong = selalu)", "rules.hours.help": "Pinjamkan hanya dalam rentang waktu ini, format 24 jam. Contoh: 22 dan 8 = dari pukul 22.00 sampai 08.00. Kosongkan keduanya untuk meminjamkan kapan saja.", "rules.cache": "Salinan repo orang lain", "rules.cache.help": "Berapa repo publik pengguna lain yang disalin di komputer ini, agar tetap tersedia saat pemiliknya offline. Memakai sedikit ruang disk dan menghasilkan kredit. 0 = tidak ada.", "rules.save": "Simpan aturan", "rules.saved": "Aturan disimpan. Berlaku dalam beberapa detik.", "rules.hours_both": "Isi kedua jam, atau kosongkan keduanya untuk meminjamkan kapan saja.", "folders.title": "Folder yang diizinkan", "folders.hint": "BitPull hanya membaca folder ini. Untuk memublikasikan folder, diperlukan bitpull.json yang lengkap.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Izinkan", "folders.none": "Tidak ada folder yang diizinkan.", "folders.draft": "Draf", "folders.publish": "Publikasikan", "folders.remove": "Hapus", "folders.need_path": "Tulis dulu path lengkap folder, mis. /Users/you/projects/my-library.", "folders.added": "Folder diizinkan.", "folders.removed": "Folder dihapus. BitPull tidak lagi membacanya.", "folders.drafted": "Draf siap: {n} file ditemukan. Biarkan AI Anda mengisi ringkasan dan deskripsi (alat prepare_publish), lalu tekan Publikasikan.", "folders.published": '"{name}" dipublikasikan dengan {n} file.', "folders.secrets_in": "Ditemukan di: {where}", "folders.line": "{file} baris {line}", "repos.title": "Repo Anda yang dipublikasikan", "repos.hint": "Diperbarui sendiri saat Anda mengubah file (setiap 5 menit).", "repos.none": "Belum ada repo yang dipublikasikan.", "repos.withdraw": "Tarik", "repos.withdrawn": "Repo ditarik dari jaringan.", "ask.title": "Model terbuka di jaringan", "ask.offers": "Komputer ini menawarkan: {models}.", "ask.offers_none": "tidak ada model (pasang Ollama untuk menawarkan)", "ask.placeholder": "Tanya model terbuka di jaringan\u2026", "ask.small": "Kecil", "ask.medium": "Sedang", "ask.large": "Besar", "ask.button": "Tanya", "ask.empty": "Tulis pertanyaan dulu.", "ask.waiting": "Mencari komputer dengan model tersebut\u2026 bisa memakan waktu hingga satu menit.", "ask.credits": "{n} kredit", "tools.title": "Hubungkan alat Anda", "tools.mcp": "Untuk Claude Code dan klien MCP, jalankan di terminal:", "tools.openai": "Untuk alat yang kompatibel dengan OpenAI: URL dasar", "tools.key": "Kunci API", "tools.show": "Tampilkan", "jobs.title": "Tugas terbaru Anda", "jobs.none": "Tidak ada tugas.", "jobs.model": "Model", "jobs.container": "Kontainer", "jobs.status.queued": "Antre", "jobs.status.running": "Berjalan", "jobs.status.done": "Selesai", "jobs.status.failed": "Gagal", "jobs.status.canceled": "Dibatalkan", "jobs.cost": "{n} kredit", working: "Memproses\u2026", "err.agent_down": "BitPull di komputer ini tidak merespons. Ia akan memulai ulang sendiri dalam 30 detik: coba lagi sebentar lagi.", "err.server": "Tidak dapat menjangkau server BitPull. Periksa koneksi internet Anda dan coba lagi.", "err.session": "Sesi dasbor ini kedaluwarsa. Buka lagi dari aplikasi BitPull.", "err.billing": "Pembayaran belum aktif.", "err.no_folder": "Folder ini tidak ada di komputer ini. Periksa path-nya.", "err.not_folder": "Path ini adalah file, bukan folder.", "err.credits": "Kredit tidak cukup.", "err.device": "Komputer ini belum terhubung. Biarkan aplikasi BitPull terbuka dan coba lagi dalam satu menit.", "err.no_model": "Saat ini tidak ada komputer di jaringan yang menawarkan model AI. Coba lagi nanti.", "err.invalid": "Beberapa nilai tidak valid. Periksa kolom dan coba lagi.", "tip.lang": "Bahasa aplikasi. Pilihan Anda disimpan di komputer ini.", "tip.buy.base": "Membuka halaman pembayaran aman untuk paket Base: \u20AC4.50 per bulan dengan 80 kredit setiap bulan. Anda bisa membatalkan kapan saja.", "tip.buy.pro": "Membuka halaman pembayaran aman untuk paket Pro: \u20AC9.90 per bulan dengan 200 kredit setiap bulan, prioritas tertinggi, dan semua GPU. Anda bisa membatalkan kapan saja.", "tip.buy.recharge": "Membuka halaman pembayaran aman untuk membeli 80 kredit sekali saja, seharga \u20AC5. Kreditnya tidak pernah kedaluwarsa.", "tip.pause": "Menghentikan peminjaman sekarang juga. Tugas yang sedang berjalan saat ini dialihkan ke komputer lain. Tekan lagi untuk melanjutkan.", "tip.resume": "Memulai peminjaman lagi, sesuai aturan peminjaman Anda.", "tip.rules.save": "Menyimpan aturan peminjaman di atas. Aturan berlaku dalam beberapa detik; tidak ada yang berubah sampai Anda menekan tombol ini.", "tip.folder.add": "Mengizinkan BitPull membaca folder yang ditulis di sebelah kiri. File di luar folder yang diizinkan tidak pernah dibaca atau dibagikan.", "tip.folder.draft": "Membuat bitpull.json di folder: daftar file-nya dengan deskripsi kosong untuk dilengkapi AI Anda. Belum ada yang dipublikasikan.", "tip.folder.publish": "Membagikan folder ini di jaringan sebagai repo publik, ditandatangani oleh komputer ini. Publikasi diblokir jika ditemukan kunci atau kata sandi di dalam file.", "tip.folder.remove": "BitPull berhenti membaca folder ini. Repo yang sudah dipublikasikan dari folder ini tetap online sampai Anda menariknya.", "tip.repo.withdraw": "Menghapus repo ini dari jaringan. Pengguna lain tidak bisa lagi menemukan atau mengunduhnya. File Anda tetap ada di komputer Anda.", "tip.ask": "Mengirim pertanyaan Anda, dengan enkripsi end-to-end, ke komputer di jaringan yang menjalankan model AI terbuka. Memakai beberapa kredit.", "tip.tier": "Ukuran model: yang kecil cepat dan murah, yang besar lebih pintar dan memakai lebih banyak kredit.", "tip.show_key": "Menampilkan kunci yang dipakai alat AI di komputer ini untuk berkomunikasi dengan BitPull. Jangan bagikan kunci ini.", "tip.setup.download": "Mengunduh installer resmi {name} untuk komputer ini ke folder Downloads Anda lalu membukanya. Ikuti langkah-langkahnya untuk menyelesaikan.", "tip.setup.start": "Menjalankan {name}, yang sudah terpasang di komputer ini tetapi belum berjalan.", "tip.setup.pull": "Mengunduh model AI {model} ({size} GB) ke Ollama, agar komputer ini bisa menawarkannya kepada orang lain.", "tip.setup.open": "Membuka halaman resmi {name} di browser Anda.", "tip.setup.recheck": "Memeriksa lagi apa yang terpasang dan berjalan di komputer ini.", "update.title": "Pembaruan aplikasi", "update.current": "Versi terpasang: {v}", "update.latest": "Versi terbaru: {v}", "update.button": "Periksa pembaruan", "update.install": "Pasang versi {v} sekarang", "update.available": "Versi {v} tersedia.", "update.not_in_app": "Pembaruan dipasang oleh aplikasi BitPull. Buka dasbor ini dari aplikasi untuk memperbarui.", "update.state.requested": "Meminta aplikasi untuk memeriksa\u2026", "update.state.checking": "Memeriksa pembaruan\u2026", "update.state.up_to_date": "Anda sudah memakai versi terbaru.", "update.state.installing": "Mengunduh dan memasang versi {v}\u2026 aplikasi akan memulai ulang sendiri.", "update.state.restarting": "Memulai ulang dengan versi {v}\u2026", "update.state.error": "Pembaruan gagal: {msg}. Coba lagi nanti.", "tip.update": "Memeriksa apakah ada versi BitPull yang lebih baru. Jika ada, mengunduhnya, memverifikasi tanda tangannya, memasangnya, dan memulai ulang aplikasi. Peminjaman berhenti sejenak selama beberapa detik.", "tools.hint": "Biarkan asisten AI Anda mencari kode bersama dan memakai model terbuka serta komputer di jaringan. Pilih alat Anda:", "tools.connect": "Hubungkan", "tools.connected": "Terhubung", "tools.copy": "Salin", "tools.copied": "Disalin.", "tools.installed": "Terpasang", "tools.not_found": "Tidak ditemukan di komputer ini", "tools.done": "Selesai. Mulai ulang {name} untuk mulai memakai BitPull.", "tools.manual": "Untuk menambahkannya secara manual:", "tools.config_invalid": "File pengaturan {name} bukan JSON yang valid, jadi BitPull tidak mengubahnya. Perbaiki file tersebut atau tambahkan BitPull secara manual dengan Salin.", "tip.tools.connect": "Menambahkan BitPull ke pengaturan {name} secara otomatis. Cadangan pengaturan sebelumnya disimpan di sebelahnya.", "tip.tools.copy": "Menyalin perintah atau pengaturan ke papan klip, agar Anda bisa menambahkan BitPull ke {name} sendiri.", "models.title": "Model AI untuk dibagikan", "models.hint": "Model terbuka dari segala jenis yang dapat dipinjamkan komputer ini. Hanya model yang lisensinya mengizinkan melayani orang lain yang ditampilkan. Model yang diunduh ditawarkan ke jaringan selama peminjaman aktif.", "models.engine.title": "Mesin gambar, suara, dan musik", "models.engine.help": "Lemonade (sumber terbuka): membuat gambar, suara ke teks, teks ke suara, musik, pemeringkatan ulang dokumen, dan memperbesar gambar. Dipasang di dalam BitPull, tanpa hak administrator.", "models.engine.install": "Pasang mesin", "models.engine.repair": "Pasang ulang mesin", "models.engine.unsupported": "Tidak tersedia di komputer ini (perlu Apple silicon, atau Windows/Linux x64)", "models.need_engine": "Pasang mesin terlebih dahulu", "models.not_here": "Tidak tersedia di komputer ini", "models.shared": "Terunduh \xB7 dibagikan", "models.download": "Unduh ({size} GB)", "models.needs_ram": "Perlu sekitar {ram} GB memori: mungkin lambat di sini", "models.recommended": "Disarankan", "models.license": "Lisensi", "models.ok.engine": "Memasang mesin\u2026", "task.chat": "Teks dan kode", "task.vision": "Gambar \u2192 teks", "task.ocr": "Dokumen (OCR)", "task.translate": "Terjemahan", "task.embed": "Embedding (pencarian)", "task.rerank": "Pemeringkatan ulang", "task.image": "Pembuatan gambar", "task.upscale": "Perbesar gambar", "task.stt": "Suara ke teks", "task.tts": "Teks ke suara", "task.music": "Musik", "limits.title": "Batas Anda untuk orang lain", "limits.hint": "Seberapa banyak pekerjaan AI yang dilakukan komputer ini untuk orang lain. Kosongkan untuk tanpa batas. Saat batas tercapai, model Anda tidak ditawarkan lagi hingga periode berikutnya.", "limits.save": "Simpan batas", "limits.requests": "Permintaan", "limits.tokens": "Token", "limits.used": "Terpakai", "limits.day": "Per hari", "limits.week": "Per minggu", "limits.month": "Per bulan", "limits.none": "tanpa batas", "limits.usage": "{requests} permintaan \xB7 {tokens} token", "limits.saved": "Batas disimpan.", "tip.models.engine": "Mengunduh mesin sumber terbuka Lemonade ke dalam BitPull, agar komputer ini dapat meminjamkan model gambar, suara, dan musik.", "tip.models.download": "Mengunduh {model} ({size} GB) ke komputer ini agar dapat ditawarkan ke orang lain. Anda bisa menghapusnya nanti.", "tip.limits.save": "Menyimpan batas harian, mingguan, dan bulanan untuk pekerjaan AI bagi orang lain.", "lend.visible": "\u2713 Jaringan melihat komputer ini: {cpus} CPU, {ram} GB tersedia untuk orang lain.", "lend.invisible": "Jaringan belum melihat peminjaman: tunggu hingga satu menit; jika tetap begini, periksa koneksi internet.", "lend.unusable": "\u26A0 Belum ada yang bisa memakai komputer ini: tidak ada pekerjaan yang bisa berjalan di sini. {reason}", "lend.unusable.docker": 'Docker tidak lolos pemeriksaan isolasi BitPull: lihat "Atur komputer ini".', "lend.unusable.off": 'Pekerjaan kontainer mati dan tidak ada model AI terpasang: aktifkan "Pekerjaan kontainer" atau unduh model.', "lend.docker_login": "Docker tidak dapat mengunduh image karena login Docker Hub-nya sudah tidak berlaku. Di Docker Desktop klik akun Anda (kanan atas) \u2192 Sign out, lalu masuk lagi atau tetap keluar. Lalu tekan Periksa lagi.", "lend.off_hint": 'Peminjaman mati: centang "{enabled}" di "{rules}" di bawah lalu tekan "{save}". (Jeda / Lanjutkan hanya menjeda peminjaman yang sudah aktif.)', "lend.low_memory": 'Hanya {mb} MB memori yang ditawarkan: hanya sedikit pekerjaan yang muat. Di "{rules}" atur "{memory}" misalnya 4096 (= 4 GB) lalu tekan "{save}".' }, it: { "lang.name": "Italiano", "app.title": "BitPull", "locked.text": "Apri la dashboard dall'app BitPull: il suo link contiene la chiave di accesso.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Indirizzo diretto", "pill.relay_on": "Relay connesso", "pill.relay_off": "Relay non connesso", "pill.cached": "{n} copie in cache", "net.title": "Rete in tempo reale", "net.online": "{n} computer online", "net.lending": "{n} in prestito ora", "net.cpu": "{n} core CPU", "net.ram": "{n} GB di RAM", "net.gpu": "{n} GPU", "net.models": "{n} modelli di IA", "net.jobs": "{n} lavori in corso", "credits.title": "Saldo crediti", "credits.plan": "Piano {plan} \xB7 puoi scendere fino a {n}", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Ricarica 5 \u20AC", "buy.ok": "Pagina di pagamento aperta nel browser.", "lend.title": "Presta questo computer", "lend.hint": "I lavori girano cifrati end-to-end in sandbox isolate, senza accesso ai tuoi file. Guadagni crediti.", "lend.state.off": "Spento", "lend.state.waiting": "In attesa", "lend.state.working": "Al lavoro", "lend.reason.lending_off": "Prestito disattivato", "lend.reason.paused": "In pausa", "lend.reason.outside_hours": "Fuori dai tuoi orari", "lend.reason.on_battery": "A batteria", "lend.reason.computer_in_use": "Stai usando il computer", "lend.reason.no_jobs": "Nessun lavoro in coda", "lend.running": "Esegue un lavoro {kind} dalle {time}", "lend.detail": "{reason} \xB7 {n} lavori completati \xB7 offre {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} modelli", "lend.pause": "Pausa", "lend.resume": "Riprendi", "lend.paused_ok": "Prestito in pausa. L'eventuale lavoro in corso \xE8 passato a un altro computer.", "lend.resumed_ok": "Prestito ripreso.", "setup.title": "Configura questo computer", "setup.hint": "Cosa serve a questo computer per prestare. Per usare la rete non serve altro. Gli installer arrivano dai siti ufficiali; il sistema ti chiede di confermare.", "setup.checking": "Verifica in corso\u2026", "setup.docker.help": "Esegue i lavori degli altri in sandbox isolate. Serve per i lavori in container. Gratis per uso personale e piccole aziende.", "setup.docker.download": "Scarica Docker", "setup.docker.start": "Avvia Docker", "setup.apple.title": "Apple Container (facoltativo)", "setup.apple.help": "Isolamento pi\xF9 forte: ogni lavoro nella sua macchina virtuale. Facoltativo; per iniziare basta Docker.", "setup.apple.get": "Ottieni Apple Container", "setup.ollama.help": "Esegue modelli di IA aperti (Qwen, Llama, Mistral\u2026). Serve per prestare modelli di IA.", "setup.ollama.download": "Scarica Ollama", "setup.ollama.start": "Avvia Ollama", "setup.model.title": "Modello di IA", "setup.model.help": "Il modello che questo computer offre agli altri. Consigliato per {ram} GB di memoria: {model}.", "setup.model.download": "Scarica {model} ({size} GB)", "setup.model.none": "ancora nessuno", "setup.model.need_ollama": "Prima installa e avvia Ollama", "setup.nvidia.title": "Driver GPU NVIDIA (facoltativi)", "setup.nvidia.help": "Solo se questo computer ha una scheda grafica NVIDIA che vuoi prestare.", "setup.nvidia.get": "Ottieni i driver NVIDIA", "setup.status.running": "installato e in esecuzione", "setup.status.installed": "installato", "setup.status.stopped": "installato, non in esecuzione", "setup.status.missing": "non installato", "setup.status.found": "trovato", "setup.status.not_found": "non trovato", "setup.terminal": "Esegui in un terminale:", "setup.done": "Fatto", "setup.opened": "Fatto: aperto {file}, segui i suoi passaggi", "setup.recheck": "Verifica di nuovo", "setup.ok.download": "Download avviato. L'installer si apre da solo quando finisce: segui i suoi passaggi.", "setup.ok.start": "Avvio in corso\u2026 pu\xF2 volerci fino a un minuto. Questo elenco si aggiorna da solo.", "setup.ok.pull": "Download del modello avviato. L'avanzamento \xE8 mostrato sopra.", "setup.ok.page": "Pagina aperta nel browser.", "setup.ok.recheck": "Verificato di nuovo.", "rules.title": "Regole di prestito", "rules.enabled": "Prestito attivo", "rules.enabled.help": "Interruttore generale. Se spento, questo computer non esegue mai i lavori degli altri. Puoi comunque usare la rete tu.", "rules.cpus": "CPU max", "rules.cpus.help": "Quanti core del processore pu\xF2 usare al massimo un lavoro. Esempio: su un computer con 8 core, con 2 te ne restano 6 liberi.", "rules.memory": "Memoria max (MB)", "rules.memory.help": "RAM che un lavoro pu\xF2 usare, in megabyte (1024 MB = 1 GB). BitPull non offre mai pi\xF9 della met\xE0 della memoria di questo computer.", "rules.gpu": "GPU", "rules.gpu.none": "Nessuna", "rules.gpu.consumer": "Consumer (8\u201312 GB)", "rules.gpu.high": "Fascia alta (16\u201324 GB)", "rules.gpu.datacenter": "Data center (40 GB+)", "rules.gpu.help": "La scheda grafica che presti, in base alla memoria video. Lascia Nessuna se non hai una GPU dedicata o non vuoi prestarla. Una GPU fa guadagnare pi\xF9 crediti.", "rules.containers": "Lavori in container", "rules.containers.help": "Esegue build, test e script per gli altri in una sandbox senza internet e senza accesso ai tuoi file. Serve Docker (o Apple Container): vedi \u201CConfigura questo computer\u201D.", "rules.models": "Modelli aperti (Ollama)", "rules.models.help": "Risponde alle richieste di IA con i modelli aperti installati in Ollama su questo computer. Servono Ollama e almeno un modello.", "rules.idle": "Solo dopo minuti di inattivit\xE0", "rules.idle.help": "Presta solo quando non tocchi tastiera o mouse da questi minuti. 0 = presta anche mentre lavori.", "rules.ac": "Solo con alimentatore collegato", "rules.ac.help": "Su un portatile, smette di prestare quando va a batteria, cos\xEC il prestito non la scarica mai.", "rules.hours": "Solo dalle / alle ore (vuoto = sempre)", "rules.hours.help": "Presta solo in questa fascia oraria, nel formato 24 ore. Esempio: 22 e 8 = dalle 22 alle 8. Lascia entrambi vuoti per prestare a qualsiasi ora.", "rules.cache": "Copie in cache dei repo altrui", "rules.cache.help": "Di quanti repo pubblici di altri utenti questo computer tiene una copia, cos\xEC restano disponibili quando i loro autori sono offline. Usa un po' di spazio su disco e fa guadagnare crediti. 0 = nessuno.", "rules.save": "Salva regole", "rules.saved": "Regole salvate. Si applicano entro pochi secondi.", "rules.hours_both": "Compila entrambe le ore, oppure lasciale vuote per prestare a qualsiasi ora.", "folders.title": "Cartelle autorizzate", "folders.hint": "BitPull legge solo queste cartelle. Per pubblicarne una serve un bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizza", "folders.none": "Nessuna cartella autorizzata.", "folders.draft": "Bozza", "folders.publish": "Pubblica", "folders.remove": "Rimuovi", "folders.need_path": "Prima scrivi il percorso completo di una cartella, ad es. /Users/you/projects/my-library.", "folders.added": "Cartella autorizzata.", "folders.removed": "Cartella rimossa. BitPull non la legge pi\xF9.", "folders.drafted": "Bozza pronta: {n} file trovati. Fai compilare alla tua IA il riepilogo e le descrizioni (strumento prepare_publish), poi premi Pubblica.", "folders.published": 'Pubblicato "{name}" con {n} file.', "folders.secrets_in": "Trovato in: {where}", "folders.line": "{file} riga {line}", "repos.title": "I tuoi repo pubblicati", "repos.hint": "Si aggiornano da soli quando modifichi i file (ogni 5 minuti).", "repos.none": "Nessun repo pubblicato.", "repos.withdraw": "Ritira", "repos.withdrawn": "Repo ritirato dalla rete.", "ask.title": "Modelli aperti sulla rete", "ask.offers": "Questo computer offre: {models}.", "ask.offers_none": "nessun modello (installa Ollama per offrirne)", "ask.placeholder": "Chiedi a un modello aperto sulla rete\u2026", "ask.small": "Piccolo", "ask.medium": "Medio", "ask.large": "Grande", "ask.button": "Chiedi", "ask.empty": "Prima scrivi una domanda.", "ask.waiting": "Cerco un computer con il modello\u2026 pu\xF2 volerci fino a un minuto.", "ask.credits": "{n} crediti", "tools.title": "Collega i tuoi strumenti", "tools.mcp": "Per Claude Code e i client MCP, esegui in un terminale:", "tools.openai": "Per strumenti compatibili con OpenAI: URL di base", "tools.key": "Chiave API", "tools.show": "Mostra", "jobs.title": "I tuoi lavori recenti", "jobs.none": "Nessun lavoro.", "jobs.model": "Modello", "jobs.container": "Container", "jobs.status.queued": "In coda", "jobs.status.running": "In corso", "jobs.status.done": "Completato", "jobs.status.failed": "Non riuscito", "jobs.status.canceled": "Annullato", "jobs.cost": "{n} crediti", working: "In corso\u2026", "err.agent_down": "BitPull su questo computer non risponde. Si riavvia da solo entro 30 secondi: riprova tra poco.", "err.server": "Impossibile raggiungere il server BitPull. Controlla la connessione a internet e riprova.", "err.session": "Questa sessione della dashboard \xE8 scaduta. Riaprila dall'app BitPull.", "err.billing": "I pagamenti non sono ancora attivi.", "err.no_folder": "Questa cartella non esiste su questo computer. Controlla il percorso.", "err.not_folder": "Questo percorso \xE8 un file, non una cartella.", "err.credits": "Crediti insufficienti.", "err.device": "Questo computer non \xE8 ancora connesso. Tieni aperta l'app BitPull e riprova tra un minuto.", "err.no_model": "Al momento nessun computer della rete offre un modello di IA. Riprova pi\xF9 tardi.", "err.invalid": "Alcuni valori non sono validi. Controlla i campi e riprova.", "tip.lang": "Lingua dell'app. La tua scelta viene ricordata su questo computer.", "tip.buy.base": "Apre la pagina di pagamento sicura per il piano Base: 4,50 \u20AC al mese con 80 crediti ogni mese. Puoi disdire in qualsiasi momento.", "tip.buy.pro": "Apre la pagina di pagamento sicura per il piano Pro: 9,90 \u20AC al mese con 200 crediti ogni mese, priorit\xE0 massima e tutte le GPU. Puoi disdire in qualsiasi momento.", "tip.buy.recharge": "Apre la pagina di pagamento sicura per comprare 80 crediti una tantum, a 5 \u20AC. Non scadono mai.", "tip.pause": "Ferma subito il prestito. Un lavoro in corso in quel momento passa a un altro computer. Premi di nuovo per riprendere.", "tip.resume": "Riprende il prestito, seguendo le tue regole di prestito.", "tip.rules.save": "Salva le regole di prestito qui sopra. Si applicano entro pochi secondi; non cambia nulla finch\xE9 non premi qui.", "tip.folder.add": "Permette a BitPull di leggere la cartella scritta a sinistra. I file fuori dalle cartelle autorizzate non vengono mai letti n\xE9 condivisi.", "tip.folder.draft": "Crea bitpull.json nella cartella: l'elenco dei suoi file con descrizioni vuote che la tua IA completer\xE0. Non viene ancora pubblicato nulla.", "tip.folder.publish": "Condivide questa cartella sulla rete come repo pubblico, firmato da questo computer. La pubblicazione viene bloccata se nei file ci sono chiavi o password.", "tip.folder.remove": "BitPull smette di leggere questa cartella. I repo gi\xE0 pubblicati da qui restano online finch\xE9 non li ritiri.", "tip.repo.withdraw": "Rimuove questo repo dalla rete. Gli altri utenti non possono pi\xF9 trovarlo n\xE9 scaricarlo. I tuoi file restano sul tuo computer.", "tip.ask": "Invia la tua domanda, cifrata end-to-end, a un computer della rete che esegue un modello di IA aperto. Costa pochi crediti.", "tip.tier": "Dimensione del modello: piccolo \xE8 veloce ed economico, grande \xE8 pi\xF9 intelligente e costa pi\xF9 crediti.", "tip.show_key": "Mostra la chiave che gli strumenti di IA su questo computer usano per parlare con BitPull. Non condividerla.", "tip.setup.download": "Scarica l'installer ufficiale di {name} per questo computer nella cartella Download e lo apre. Segui i suoi passaggi per finire.", "tip.setup.start": "Avvia {name}, che \xE8 installato su questo computer ma non \xE8 in esecuzione.", "tip.setup.pull": "Scarica il modello di IA {model} ({size} GB) in Ollama, cos\xEC questo computer pu\xF2 offrirlo agli altri.", "tip.setup.open": "Apre la pagina ufficiale di {name} nel browser.", "tip.setup.recheck": "Verifica di nuovo cosa \xE8 installato e in esecuzione su questo computer.", "update.title": "Aggiornamenti dell'app", "update.current": "Versione installata: {v}", "update.latest": "Ultima versione: {v}", "update.button": "Cerca aggiornamenti", "update.install": "Installa ora la versione {v}", "update.available": "\xC8 disponibile la versione {v}.", "update.not_in_app": "Gli aggiornamenti vengono installati dall'app BitPull. Apri questa dashboard dall'app per aggiornare.", "update.state.requested": "Chiedo all'app di verificare\u2026", "update.state.checking": "Ricerca aggiornamenti\u2026", "update.state.up_to_date": "Hai l'ultima versione.", "update.state.installing": "Download e installazione della versione {v}\u2026 l'app si riavvia da sola.", "update.state.restarting": "Riavvio con la versione {v}\u2026", "update.state.error": "L'aggiornamento non \xE8 riuscito: {msg}. Riprova pi\xF9 tardi.", "tip.update": "Verifica se esiste una versione pi\xF9 recente di BitPull. Se c'\xE8, la scarica, ne verifica la firma, la installa e riavvia l'app. Il prestito si ferma per qualche secondo.", "tools.hint": "Lascia che il tuo assistente di IA cerchi nel codice condiviso e usi i modelli aperti e i computer della rete. Scegli il tuo strumento:", "tools.connect": "Collega", "tools.connected": "Collegato", "tools.copy": "Copia", "tools.copied": "Copiato.", "tools.installed": "Installato", "tools.not_found": "Non trovato su questo computer", "tools.done": "Fatto. Riavvia {name} per iniziare a usare BitPull.", "tools.manual": "Per aggiungerlo a mano:", "tools.config_invalid": "Il file delle impostazioni di {name} non \xE8 un JSON valido, quindi BitPull non l'ha toccato. Correggi il file o aggiungi BitPull a mano con Copia.", "tip.tools.connect": "Aggiunge BitPull alle impostazioni di {name} automaticamente. Un backup delle impostazioni precedenti viene conservato accanto.", "tip.tools.copy": "Copia il comando o le impostazioni negli appunti, cos\xEC puoi aggiungere BitPull a {name} da solo.", "models.title": "Modelli AI da condividere", "models.hint": "Modelli open di ogni tipo che questo computer pu\xF2 prestare. Sono elencati solo i modelli la cui licenza permette di servirli ad altri. I modelli scaricati vengono offerti alla rete mentre il prestito \xE8 attivo.", "models.engine.title": "Motore per immagini, voce e musica", "models.engine.help": "Lemonade (open source): genera immagini, trascrive la voce, legge testi ad alta voce, crea musica, riordina documenti e ingrandisce immagini. Installato dentro BitPull, senza diritti di amministratore.", "models.engine.install": "Installa motore", "models.engine.repair": "Reinstalla motore", "models.engine.unsupported": "Non disponibile su questo computer (serve Apple silicon, oppure Windows/Linux x64)", "models.need_engine": "Installa prima il motore", "models.not_here": "Non disponibile su questo computer", "models.shared": "Scaricato \xB7 condiviso", "models.download": "Scarica ({size} GB)", "models.needs_ram": "Richiede circa {ram} GB di memoria: qui potrebbe essere lento", "models.recommended": "Consigliato", "models.license": "Licenza", "models.ok.engine": "Installazione del motore\u2026", "task.chat": "Testo e codice", "task.vision": "Immagini \u2192 testo", "task.ocr": "Documenti (OCR)", "task.translate": "Traduzione", "task.embed": "Embedding (ricerca)", "task.rerank": "Riordino documenti", "task.image": "Generazione immagini", "task.upscale": "Ingrandimento immagini", "task.stt": "Voce \u2192 testo", "task.tts": "Testo \u2192 voce", "task.music": "Musica", "limits.title": "I tuoi limiti per gli altri", "limits.hint": "Quanto lavoro AI questo computer fa per gli altri. Lascia vuoto per nessun limite. Quando un limite \xE8 raggiunto, i tuoi modelli non vengono pi\xF9 offerti fino all'inizio del periodo successivo.", "limits.save": "Salva limiti", "limits.requests": "Richieste", "limits.tokens": "Token", "limits.used": "Usati", "limits.day": "Al giorno", "limits.week": "A settimana", "limits.month": "Al mese", "limits.none": "nessun limite", "limits.usage": "{requests} richieste \xB7 {tokens} token", "limits.saved": "Limiti salvati.", "tip.models.engine": "Scarica in BitPull il motore open source Lemonade, cos\xEC questo computer pu\xF2 prestare modelli per immagini, voce e musica.", "tip.models.download": "Scarica {model} ({size} GB) su questo computer per offrirlo agli altri. Puoi rimuoverlo in seguito.", "tip.limits.save": "Salva i limiti giornalieri, settimanali e mensili del lavoro AI svolto per gli altri.", "lend.visible": "\u2713 La rete vede questo computer: {cpus} CPU, {ram} GB disponibili per gli altri.", "lend.invisible": "La rete non vede ancora il prestito: attendi fino a un minuto; se resta cos\xEC, controlla la connessione a internet.", "lend.unusable": "\u26A0 Nessuno pu\xF2 ancora usare questo computer: qui non pu\xF2 girare nessun lavoro. {reason}", "lend.unusable.docker": 'Docker non supera il controllo di isolamento di BitPull: vedi "Configura questo computer".', "lend.unusable.off": `I lavori in container sono spenti e non c'\xE8 nessun modello AI: attiva "Lavori in container" o scarica un modello.`, "lend.docker_login": "Docker non riesce a scaricare le immagini perch\xE9 il suo accesso a Docker Hub non \xE8 pi\xF9 valido. In Docker Desktop clicca il tuo account (in alto a destra) \u2192 Sign out, poi rientra oppure resta disconnesso. Poi premi Verifica di nuovo.", "lend.off_hint": 'Il prestito \xE8 spento: spunta "{enabled}" in "{rules}" qui sotto e premi "{save}". (Pausa / Riprendi sospende solo un prestito gi\xE0 acceso.)', "lend.low_memory": 'Offri solo {mb} MB di memoria: ci stanno pochi lavori. In "{rules}" imposta "{memory}" ad esempio a 4096 (= 4 GB) e premi "{save}".' }, pt: { "lang.name": "Portugu\xEAs", "app.title": "BitPull", "locked.text": "Abra o painel pelo app BitPull: o link dele cont\xE9m a chave de acesso.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Endere\xE7o direto", "pill.relay_on": "Relay conectado", "pill.relay_off": "Relay n\xE3o conectado", "pill.cached": "{n} c\xF3pias em cache", "net.title": "Rede ao vivo", "net.online": "{n} computadores online", "net.lending": "{n} emprestando agora", "net.cpu": "{n} n\xFAcleos de CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPUs", "net.models": "{n} modelos de IA", "net.jobs": "{n} tarefas em execu\xE7\xE3o", "credits.title": "Saldo de cr\xE9ditos", "credits.plan": "Plano {plan} \xB7 pode chegar a {n}", "plan.free": "Gr\xE1tis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recarregar \u20AC5", "buy.ok": "P\xE1gina de pagamento aberta no seu navegador.", "lend.title": "Emprestar este computador", "lend.hint": "As tarefas rodam com criptografia de ponta a ponta em sandboxes isoladas, sem acesso aos seus arquivos. Voc\xEA ganha cr\xE9ditos.", "lend.state.off": "Desligado", "lend.state.waiting": "Aguardando", "lend.state.working": "Trabalhando", "lend.reason.lending_off": "Empr\xE9stimo desligado", "lend.reason.paused": "Pausado", "lend.reason.outside_hours": "Fora do seu hor\xE1rio", "lend.reason.on_battery": "Na bateria", "lend.reason.computer_in_use": "Voc\xEA est\xE1 usando o computador", "lend.reason.no_jobs": "Nenhuma tarefa na fila", "lend.running": "Executando uma tarefa {kind} desde {time}", "lend.detail": "{reason} \xB7 {n} tarefas conclu\xEDdas \xB7 oferece {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} modelos", "lend.pause": "Pausar", "lend.resume": "Retomar", "lend.paused_ok": "Empr\xE9stimo pausado. Tarefas em andamento foram passadas para outro computador.", "lend.resumed_ok": "Empr\xE9stimo retomado.", "setup.title": "Configurar este computador", "setup.hint": "O que este computador precisa para emprestar. Para usar a rede, nada mais \xE9 necess\xE1rio. Os instaladores v\xEAm dos sites oficiais; o sistema pedir\xE1 sua confirma\xE7\xE3o.", "setup.checking": "Verificando\u2026", "setup.docker.help": "Executa tarefas de outras pessoas em sandboxes isoladas. Necess\xE1rio para tarefas de cont\xEAiner. Gr\xE1tis para uso pessoal e pequenas empresas.", "setup.docker.download": "Baixar Docker", "setup.docker.start": "Iniciar Docker", "setup.apple.title": "Apple Container (opcional)", "setup.apple.help": "Isolamento mais forte: cada tarefa em sua pr\xF3pria m\xE1quina virtual. Opcional; o Docker basta para come\xE7ar.", "setup.apple.get": "Obter Apple Container", "setup.ollama.help": "Executa modelos de IA abertos (Qwen, Llama, Mistral\u2026). Necess\xE1rio para emprestar modelos de IA.", "setup.ollama.download": "Baixar Ollama", "setup.ollama.start": "Iniciar Ollama", "setup.model.title": "Modelo de IA", "setup.model.help": "O modelo que este computador oferece aos outros. Sugerido para {ram} GB de mem\xF3ria: {model}.", "setup.model.download": "Baixar {model} ({size} GB)", "setup.model.none": "nenhum ainda", "setup.model.need_ollama": "Instale e inicie o Ollama primeiro", "setup.nvidia.title": "Drivers de GPU NVIDIA (opcional)", "setup.nvidia.help": "S\xF3 se este computador tiver uma placa de v\xEDdeo NVIDIA que voc\xEA queira emprestar.", "setup.nvidia.get": "Obter drivers NVIDIA", "setup.status.running": "instalado e em execu\xE7\xE3o", "setup.status.installed": "instalado", "setup.status.stopped": "instalado, parado", "setup.status.missing": "n\xE3o instalado", "setup.status.found": "encontrado", "setup.status.not_found": "n\xE3o encontrado", "setup.terminal": "Execute em um terminal:", "setup.done": "Pronto", "setup.opened": "Pronto: {file} aberto, siga os passos", "setup.recheck": "Verificar de novo", "setup.ok.download": "Download iniciado. O instalador abre sozinho quando terminar: siga os passos.", "setup.ok.start": "Iniciando\u2026 pode levar at\xE9 um minuto. Esta lista se atualiza sozinha.", "setup.ok.pull": "Download do modelo iniciado. O progresso aparece acima.", "setup.ok.page": "P\xE1gina aberta no seu navegador.", "setup.ok.recheck": "Verificado novamente.", "rules.title": "Regras de empr\xE9stimo", "rules.enabled": "Empr\xE9stimo ligado", "rules.enabled.help": "Chave geral. Quando desligada, este computador nunca executa tarefas de outras pessoas. Voc\xEA ainda pode usar a rede.", "rules.cpus": "M\xE1x. de CPUs", "rules.cpus.help": "Quantos n\xFAcleos do processador uma tarefa pode usar no m\xE1ximo. Exemplo: em um computador de 8 n\xFAcleos, 2 deixa 6 n\xFAcleos livres para voc\xEA.", "rules.memory": "Mem\xF3ria m\xE1x. (MB)", "rules.memory.help": "RAM que uma tarefa pode usar, em megabytes (1024 MB = 1 GB). O BitPull nunca oferece mais da metade da mem\xF3ria deste computador.", "rules.gpu": "GPU", "rules.gpu.none": "Nenhuma", "rules.gpu.consumer": "Dom\xE9stica (8\u201312 GB)", "rules.gpu.high": "Topo de linha (16\u201324 GB)", "rules.gpu.datacenter": "Data center (40 GB+)", "rules.gpu.help": "A placa de v\xEDdeo que voc\xEA empresta, pela mem\xF3ria de v\xEDdeo. Deixe Nenhuma se n\xE3o tiver GPU dedicada ou n\xE3o quiser emprest\xE1-la. Uma GPU rende mais cr\xE9ditos.", "rules.containers": "Tarefas de cont\xEAiner", "rules.containers.help": "Executa builds, testes e scripts de outras pessoas em uma sandbox sem internet e sem acesso aos seus arquivos. Requer Docker (ou Apple Container): veja \u201CConfigurar este computador\u201D.", "rules.models": "Modelos abertos (Ollama)", "rules.models.help": "Responde a pedidos de IA com os modelos abertos instalados no Ollama deste computador. Requer Ollama e pelo menos um modelo.", "rules.idle": "S\xF3 ap\xF3s minutos ocioso", "rules.idle.help": "Empresta s\xF3 quando voc\xEA n\xE3o tocar no teclado ou mouse por esse n\xFAmero de minutos. 0 = empresta mesmo enquanto voc\xEA trabalha.", "rules.ac": "S\xF3 na tomada", "rules.ac.help": "Em um notebook, para de emprestar quando estiver na bateria, para nunca descarreg\xE1-la.", "rules.hours": "S\xF3 da hora / at\xE9 a hora (vazio = sempre)", "rules.hours.help": "Empresta s\xF3 nesse intervalo, no formato 24 horas. Exemplo: 22 e 8 = das 22h \xE0s 8h. Deixe os dois vazios para emprestar a qualquer hora.", "rules.cache": "C\xF3pias em cache de repos de outros", "rules.cache.help": "Quantos repos p\xFAblicos de outros usu\xE1rios este computador guarda em c\xF3pia, para que fiquem dispon\xEDveis quando os autores estiverem offline. Usa pouco espa\xE7o em disco e rende cr\xE9ditos. 0 = nenhum.", "rules.save": "Salvar regras", "rules.saved": "Regras salvas. Valem em poucos segundos.", "rules.hours_both": "Preencha as duas horas ou deixe ambas vazias para emprestar a qualquer hora.", "folders.title": "Pastas autorizadas", "folders.hint": "O BitPull l\xEA apenas estas pastas. Para publicar uma, ela precisa de um bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizar", "folders.none": "Nenhuma pasta autorizada.", "folders.draft": "Rascunho", "folders.publish": "Publicar", "folders.remove": "Remover", "folders.need_path": "Escreva primeiro o caminho completo de uma pasta, ex.: /Users/you/projects/my-library.", "folders.added": "Pasta autorizada.", "folders.removed": "Pasta removida. O BitPull n\xE3o a l\xEA mais.", "folders.drafted": "Rascunho pronto: {n} arquivos encontrados. Deixe sua IA preencher o resumo e as descri\xE7\xF5es (ferramenta prepare_publish) e depois clique em Publicar.", "folders.published": '"{name}" publicado com {n} arquivos.', "folders.secrets_in": "Encontrado em: {where}", "folders.line": "{file} linha {line}", "repos.title": "Seus repos publicados", "repos.hint": "Atualizam sozinhos quando voc\xEA altera os arquivos (a cada 5 minutos).", "repos.none": "Nenhum repo publicado.", "repos.withdraw": "Retirar", "repos.withdrawn": "Repo retirado da rede.", "ask.title": "Modelos abertos na rede", "ask.offers": "Este computador oferece: {models}.", "ask.offers_none": "nenhum modelo (instale o Ollama para oferecer)", "ask.placeholder": "Pergunte a um modelo aberto na rede\u2026", "ask.small": "Pequeno", "ask.medium": "M\xE9dio", "ask.large": "Grande", "ask.button": "Perguntar", "ask.empty": "Escreva uma pergunta primeiro.", "ask.waiting": "Procurando um computador com o modelo\u2026 pode levar at\xE9 um minuto.", "ask.credits": "{n} cr\xE9ditos", "tools.title": "Conecte suas ferramentas", "tools.mcp": "Para Claude Code e clientes MCP, execute em um terminal:", "tools.openai": "Para ferramentas compat\xEDveis com OpenAI: URL base", "tools.key": "Chave de API", "tools.show": "Mostrar", "jobs.title": "Suas tarefas recentes", "jobs.none": "Nenhuma tarefa.", "jobs.model": "Modelo", "jobs.container": "Cont\xEAiner", "jobs.status.queued": "Na fila", "jobs.status.running": "Em execu\xE7\xE3o", "jobs.status.done": "Conclu\xEDda", "jobs.status.failed": "Falhou", "jobs.status.canceled": "Cancelada", "jobs.cost": "{n} cr\xE9ditos", working: "Trabalhando\u2026", "err.agent_down": "O BitPull deste computador n\xE3o est\xE1 respondendo. Ele reinicia sozinho em at\xE9 30 segundos: tente de novo em breve.", "err.server": "N\xE3o foi poss\xEDvel acessar o servidor do BitPull. Verifique sua conex\xE3o com a internet e tente de novo.", "err.session": "A sess\xE3o deste painel expirou. Abra-o de novo pelo app BitPull.", "err.billing": "Os pagamentos ainda n\xE3o est\xE3o ativos.", "err.no_folder": "Esta pasta n\xE3o existe neste computador. Verifique o caminho.", "err.not_folder": "Este caminho \xE9 um arquivo, n\xE3o uma pasta.", "err.credits": "Cr\xE9ditos insuficientes.", "err.device": "Este computador ainda n\xE3o est\xE1 conectado. Mantenha o app BitPull aberto e tente de novo em um minuto.", "err.no_model": "Nenhum computador na rede oferece um modelo de IA agora. Tente mais tarde.", "err.invalid": "Alguns valores n\xE3o s\xE3o v\xE1lidos. Verifique os campos e tente de novo.", "tip.lang": "Idioma do app. Sua escolha fica salva neste computador.", "tip.buy.base": "Abre a p\xE1gina de pagamento seguro do plano Base: \u20AC4.50 por m\xEAs com 80 cr\xE9ditos todo m\xEAs. Voc\xEA pode cancelar quando quiser.", "tip.buy.pro": "Abre a p\xE1gina de pagamento seguro do plano Pro: \u20AC9.90 por m\xEAs com 200 cr\xE9ditos todo m\xEAs, prioridade m\xE1xima e todas as GPUs. Voc\xEA pode cancelar quando quiser.", "tip.buy.recharge": "Abre a p\xE1gina de pagamento seguro para comprar 80 cr\xE9ditos uma \xFAnica vez, por \u20AC5. Eles nunca expiram.", "tip.pause": "Para o empr\xE9stimo agora mesmo. Uma tarefa em andamento neste momento \xE9 passada para outro computador. Clique de novo para retomar.", "tip.resume": "Volta a emprestar, seguindo suas regras de empr\xE9stimo.", "tip.rules.save": "Salva as regras de empr\xE9stimo acima. Elas valem em poucos segundos; nada muda at\xE9 voc\xEA clicar aqui.", "tip.folder.add": "Permite que o BitPull leia a pasta escrita \xE0 esquerda. Arquivos fora das pastas autorizadas nunca s\xE3o lidos nem compartilhados.", "tip.folder.draft": "Cria o bitpull.json na pasta: a lista dos arquivos dela com descri\xE7\xF5es vazias para sua AI completar. Nada \xE9 publicado ainda.", "tip.folder.publish": "Compartilha esta pasta na rede como um repo p\xFAblico, assinado por este computador. A publica\xE7\xE3o \xE9 bloqueada se forem encontradas chaves ou senhas nos arquivos.", "tip.folder.remove": "O BitPull para de ler esta pasta. Repos j\xE1 publicados a partir dela continuam online at\xE9 voc\xEA retir\xE1-los.", "tip.repo.withdraw": "Remove este repo da rede. Outros usu\xE1rios n\xE3o poder\xE3o mais encontr\xE1-lo nem baix\xE1-lo. Seus arquivos continuam no seu computador.", "tip.ask": "Envia sua pergunta, com criptografia de ponta a ponta, para um computador da rede que roda um modelo de AI aberto. Custa alguns cr\xE9ditos.", "tip.tier": "Tamanho do modelo: o pequeno \xE9 r\xE1pido e barato; o grande \xE9 mais inteligente e custa mais cr\xE9ditos.", "tip.show_key": "Mostra a chave que as ferramentas de AI deste computador usam para se comunicar com o BitPull. N\xE3o compartilhe.", "tip.setup.download": "Baixa o instalador oficial do {name} para este computador na sua pasta Downloads e o abre. Siga os passos dele para concluir.", "tip.setup.start": "Inicia o {name}, que est\xE1 instalado neste computador mas n\xE3o est\xE1 rodando.", "tip.setup.pull": "Baixa o modelo de AI {model} ({size} GB) no Ollama, para que este computador possa oferec\xEA-lo a outras pessoas.", "tip.setup.open": "Abre a p\xE1gina oficial do {name} no seu navegador.", "tip.setup.recheck": "Verifica de novo o que est\xE1 instalado e rodando neste computador.", "update.title": "Atualiza\xE7\xF5es do app", "update.current": "Vers\xE3o instalada: {v}", "update.latest": "Vers\xE3o mais recente: {v}", "update.button": "Verificar atualiza\xE7\xF5es", "update.install": "Instalar a vers\xE3o {v} agora", "update.available": "A vers\xE3o {v} est\xE1 dispon\xEDvel.", "update.not_in_app": "As atualiza\xE7\xF5es s\xE3o instaladas pelo app BitPull. Abra este painel pelo app para atualizar.", "update.state.requested": "Pedindo ao app para verificar\u2026", "update.state.checking": "Verificando atualiza\xE7\xF5es\u2026", "update.state.up_to_date": "Voc\xEA tem a vers\xE3o mais recente.", "update.state.installing": "Baixando e instalando a vers\xE3o {v}\u2026 o app reinicia sozinho.", "update.state.restarting": "Reiniciando com a vers\xE3o {v}\u2026", "update.state.error": "A atualiza\xE7\xE3o n\xE3o funcionou: {msg}. Tente novamente mais tarde.", "tip.update": "Verifica se existe uma vers\xE3o mais nova do BitPull. Se existir, baixa, verifica a assinatura, instala e reinicia o app. O empr\xE9stimo pausa por alguns segundos.", "tools.hint": "Deixe seu assistente de AI pesquisar c\xF3digo compartilhado e usar os modelos abertos e os computadores da rede. Escolha sua ferramenta:", "tools.connect": "Conectar", "tools.connected": "Conectado", "tools.copy": "Copiar", "tools.copied": "Copiado.", "tools.installed": "Instalado", "tools.not_found": "N\xE3o encontrado neste computador", "tools.done": "Pronto. Reinicie o {name} para come\xE7ar a usar o BitPull.", "tools.manual": "Para adicionar manualmente:", "tools.config_invalid": "O arquivo de configura\xE7\xF5es do {name} n\xE3o \xE9 um JSON v\xE1lido, ent\xE3o o BitPull n\xE3o o alterou. Corrija o arquivo ou adicione o BitPull manualmente com Copiar.", "tip.tools.connect": "Adiciona o BitPull \xE0s configura\xE7\xF5es do {name} automaticamente. Um backup das configura\xE7\xF5es anteriores \xE9 mantido ao lado delas.", "tip.tools.copy": "Copia o comando ou as configura\xE7\xF5es para a \xE1rea de transfer\xEAncia, para voc\xEA mesmo adicionar o BitPull ao {name}.", "models.title": "Modelos de IA para compartilhar", "models.hint": "Modelos abertos de todos os tipos que este computador pode emprestar. S\xF3 aparecem modelos cuja licen\xE7a permite servi-los a outras pessoas. Os modelos baixados s\xE3o oferecidos \xE0 rede enquanto o empr\xE9stimo estiver ativo.", "models.engine.title": "Motor de imagem, voz e m\xFAsica", "models.engine.help": "Lemonade (c\xF3digo aberto): gera imagens, transcreve voz, l\xEA textos em voz alta, cria m\xFAsica, reordena documentos e amplia imagens. Instalado dentro do BitPull, sem direitos de administrador.", "models.engine.install": "Instalar motor", "models.engine.repair": "Reinstalar motor", "models.engine.unsupported": "Indispon\xEDvel neste computador (requer Apple silicon, ou Windows/Linux x64)", "models.need_engine": "Instale o motor primeiro", "models.not_here": "Indispon\xEDvel neste computador", "models.shared": "Baixado \xB7 compartilhado", "models.download": "Baixar ({size} GB)", "models.needs_ram": "Precisa de cerca de {ram} GB de mem\xF3ria: pode ficar lento aqui", "models.recommended": "Recomendado", "models.license": "Licen\xE7a", "models.ok.engine": "Instalando o motor\u2026", "task.chat": "Texto e c\xF3digo", "task.vision": "Imagens \u2192 texto", "task.ocr": "Documentos (OCR)", "task.translate": "Tradu\xE7\xE3o", "task.embed": "Embeddings (busca)", "task.rerank": "Reordena\xE7\xE3o", "task.image": "Gera\xE7\xE3o de imagens", "task.upscale": "Amplia\xE7\xE3o de imagens", "task.stt": "Voz para texto", "task.tts": "Texto para voz", "task.music": "M\xFAsica", "limits.title": "Seus limites para outros", "limits.hint": "Quanto trabalho de IA este computador faz para outros. Deixe vazio para sem limite. Ao atingir um limite, seus modelos deixam de ser oferecidos at\xE9 o pr\xF3ximo per\xEDodo.", "limits.save": "Salvar limites", "limits.requests": "Solicita\xE7\xF5es", "limits.tokens": "Tokens", "limits.used": "Usado", "limits.day": "Por dia", "limits.week": "Por semana", "limits.month": "Por m\xEAs", "limits.none": "sem limite", "limits.usage": "{requests} solicita\xE7\xF5es \xB7 {tokens} tokens", "limits.saved": "Limites salvos.", "tip.models.engine": "Baixa no BitPull o motor de c\xF3digo aberto Lemonade, para que este computador possa emprestar modelos de imagem, voz e m\xFAsica.", "tip.models.download": "Baixa {model} ({size} GB) neste computador para oferec\xEA-lo a outros. Voc\xEA pode remov\xEA-lo depois.", "tip.limits.save": "Salva os limites di\xE1rios, semanais e mensais do trabalho de IA feito para outros.", "lend.visible": "\u2713 A rede v\xEA este computador: {cpus} CPU, {ram} GB dispon\xEDveis para outros.", "lend.invisible": "A rede ainda n\xE3o v\xEA o empr\xE9stimo: aguarde at\xE9 um minuto; se continuar assim, verifique a conex\xE3o com a internet.", "lend.unusable": "\u26A0 Ningu\xE9m pode usar este computador ainda: nenhuma tarefa pode rodar aqui. {reason}", "lend.unusable.docker": 'O Docker n\xE3o passa na verifica\xE7\xE3o de isolamento do BitPull: veja "Configurar este computador".', "lend.unusable.off": 'As tarefas em cont\xEAiner est\xE3o desativadas e n\xE3o h\xE1 modelo de IA: ative "Tarefas em cont\xEAiner" ou baixe um modelo.', "lend.docker_login": "O Docker n\xE3o consegue baixar imagens porque o login no Docker Hub n\xE3o \xE9 mais v\xE1lido. No Docker Desktop clique na sua conta (canto superior direito) \u2192 Sign out, depois entre de novo ou fique desconectado. Em seguida pressione Verificar novamente.", "lend.off_hint": 'O empr\xE9stimo est\xE1 desligado: marque "{enabled}" em "{rules}" abaixo e pressione "{save}". (Pausar / Retomar s\xF3 pausa um empr\xE9stimo j\xE1 ligado.)', "lend.low_memory": 'Voc\xEA oferece s\xF3 {mb} MB de mem\xF3ria: cabem poucas tarefas. Em "{rules}" defina "{memory}" por exemplo como 4096 (= 4 GB) e pressione "{save}".' }, ru: { "lang.name": "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", "app.title": "BitPull", "locked.text": "\u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F BitPull: \u0432 \u0435\u0451 \u0441\u0441\u044B\u043B\u043A\u0435 \u0435\u0441\u0442\u044C \u043A\u043B\u044E\u0447 \u0434\u043E\u0441\u0442\u0443\u043F\u0430.", "pill.online": "\u0412 \u0441\u0435\u0442\u0438", "pill.offline": "\u041D\u0435 \u0432 \u0441\u0435\u0442\u0438", "pill.direct": "\u041F\u0440\u044F\u043C\u043E\u0439 \u0430\u0434\u0440\u0435\u0441", "pill.relay_on": "\u0420\u0435\u0442\u0440\u0430\u043D\u0441\u043B\u044F\u0442\u043E\u0440 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D", "pill.relay_off": "\u0420\u0435\u0442\u0440\u0430\u043D\u0441\u043B\u044F\u0442\u043E\u0440 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D", "pill.cached": "\u041A\u043E\u043F\u0438\u0439 \u0432 \u043A\u044D\u0448\u0435: {n}", "net.title": "\u0421\u0435\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441", "net.online": "\u041A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u0432 \u0432 \u0441\u0435\u0442\u0438: {n}", "net.lending": "\u0421\u0434\u0430\u044E\u0442 \u0441\u0435\u0439\u0447\u0430\u0441: {n}", "net.cpu": "\u042F\u0434\u0435\u0440 CPU: {n}", "net.ram": "{n} GB RAM", "net.gpu": "GPU: {n}", "net.models": "AI-\u043C\u043E\u0434\u0435\u043B\u0435\u0439: {n}", "net.jobs": "\u0417\u0430\u0434\u0430\u0447 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F: {n}", "credits.title": "\u0411\u0430\u043B\u0430\u043D\u0441 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432", "credits.plan": "\u0422\u0430\u0440\u0438\u0444 {plan} \xB7 \u043C\u043E\u0436\u043D\u043E \u0443\u0439\u0442\u0438 \u0434\u043E {n}", "plan.free": "\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u0439", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u20AC5", "buy.ok": "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043E\u043F\u043B\u0430\u0442\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "lend.title": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440", "lend.hint": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u0441\u043E \u0441\u043A\u0432\u043E\u0437\u043D\u044B\u043C \u0448\u0438\u0444\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0432 \u0438\u0437\u043E\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430\u0445, \u0431\u0435\u0437 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0432\u0430\u0448\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C. \u0412\u044B \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442\u0435 \u043A\u0440\u0435\u0434\u0438\u0442\u044B.", "lend.state.off": "\u0412\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u043E", "lend.state.waiting": "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435", "lend.state.working": "\u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442", "lend.reason.lending_off": "\u0421\u0434\u0430\u0447\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0430", "lend.reason.paused": "\u041D\u0430 \u043F\u0430\u0443\u0437\u0435", "lend.reason.outside_hours": "\u0412\u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0447\u0430\u0441\u043E\u0432", "lend.reason.on_battery": "\u0420\u0430\u0431\u043E\u0442\u0430 \u043E\u0442 \u0431\u0430\u0442\u0430\u0440\u0435\u0438", "lend.reason.computer_in_use": "\u0412\u044B \u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435\u0441\u044C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u043C", "lend.reason.no_jobs": "\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438", "lend.running": "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0437\u0430\u0434\u0430\u0447\u0430 {kind} \u0441 {time}", "lend.detail": "{reason} \xB7 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u0437\u0430\u0434\u0430\u0447: {n} \xB7 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430 {name}", "lend.detail.models": ", \u043C\u043E\u0434\u0435\u043B\u0435\u0439: {n}", "lend.pause": "\u041F\u0430\u0443\u0437\u0430", "lend.resume": "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C", "lend.paused_ok": "\u0421\u0434\u0430\u0447\u0430 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430. \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0437\u0430\u0434\u0430\u0447\u0430 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u0434\u0440\u0443\u0433\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443.", "lend.resumed_ok": "\u0421\u0434\u0430\u0447\u0430 \u0432\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430.", "setup.title": "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430", "setup.hint": "\u0427\u0442\u043E \u043D\u0443\u0436\u043D\u043E \u044D\u0442\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0440\u0435\u0441\u0443\u0440\u0441\u044B. \u0414\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u0442\u0441\u044F \u0441 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0430\u0439\u0442\u043E\u0432; \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435.", "setup.checking": "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430\u2026", "setup.docker.help": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043B\u044E\u0434\u0435\u0439 \u0432 \u0438\u0437\u043E\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430\u0445. \u041D\u0443\u0436\u0435\u043D \u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0411\u0435\u0441\u043F\u043B\u0430\u0442\u0435\u043D \u0434\u043B\u044F \u043B\u0438\u0447\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u043C\u0430\u043B\u043E\u0433\u043E \u0431\u0438\u0437\u043D\u0435\u0441\u0430.", "setup.docker.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C Docker", "setup.docker.start": "\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Docker", "setup.apple.title": "Apple Container (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)", "setup.apple.help": "\u0411\u043E\u043B\u0435\u0435 \u043D\u0430\u0434\u0451\u0436\u043D\u0430\u044F \u0438\u0437\u043E\u043B\u044F\u0446\u0438\u044F: \u043A\u0430\u0436\u0434\u0430\u044F \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0439 \u043C\u0430\u0448\u0438\u043D\u0435. \u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E; \u0434\u043B\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 Docker.", "setup.apple.get": "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C Apple Container", "setup.ollama.help": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 AI-\u043C\u043E\u0434\u0435\u043B\u0438 (Qwen, Llama, Mistral\u2026). \u041D\u0443\u0436\u0435\u043D, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C AI-\u043C\u043E\u0434\u0435\u043B\u0438.", "setup.ollama.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C Ollama", "setup.ollama.start": "\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Ollama", "setup.model.title": "AI-\u043C\u043E\u0434\u0435\u043B\u044C", "setup.model.help": "\u041C\u043E\u0434\u0435\u043B\u044C, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043C. \u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F {ram} GB \u043F\u0430\u043C\u044F\u0442\u0438: {model}.", "setup.model.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C {model} ({size} GB)", "setup.model.none": "\u043F\u043E\u043A\u0430 \u043D\u0435\u0442", "setup.model.need_ollama": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Ollama", "setup.nvidia.title": "\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044B GPU NVIDIA (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)", "setup.nvidia.help": "\u0422\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0432 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0435\u0441\u0442\u044C \u0432\u0438\u0434\u0435\u043E\u043A\u0430\u0440\u0442\u0430 NVIDIA, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0441\u0434\u0430\u0432\u0430\u0442\u044C.", "setup.nvidia.get": "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044B NVIDIA", "setup.status.running": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0438 \u0437\u0430\u043F\u0443\u0449\u0435\u043D", "setup.status.installed": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D", "setup.status.stopped": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D, \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D", "setup.status.missing": "\u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D", "setup.status.found": "\u043D\u0430\u0439\u0434\u0435\u043D", "setup.status.not_found": "\u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D", "setup.terminal": "\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0435:", "setup.done": "\u0413\u043E\u0442\u043E\u0432\u043E", "setup.opened": "\u0413\u043E\u0442\u043E\u0432\u043E: \u043E\u0442\u043A\u0440\u044B\u0442 {file}, \u0441\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F\u043C", "setup.recheck": "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u043D\u043E\u0432\u0430", "setup.ok.download": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043D\u0430\u0447\u0430\u043B\u0430\u0441\u044C. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A \u043E\u0442\u043A\u0440\u043E\u0435\u0442\u0441\u044F \u0441\u0430\u043C \u043F\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438: \u0441\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0435\u0433\u043E \u0448\u0430\u0433\u0430\u043C.", "setup.ok.start": "\u0417\u0430\u043F\u0443\u0441\u043A\u2026 \u044D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B. \u0421\u043F\u0438\u0441\u043E\u043A \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u0441\u0430\u043C.", "setup.ok.pull": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043C\u043E\u0434\u0435\u043B\u0438 \u043D\u0430\u0447\u0430\u043B\u0430\u0441\u044C. \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u043F\u043E\u043A\u0430\u0437\u0430\u043D \u0432\u044B\u0448\u0435.", "setup.ok.page": "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "setup.ok.recheck": "\u041F\u0440\u043E\u0432\u0435\u0440\u0435\u043D\u043E \u0441\u043D\u043E\u0432\u0430.", "rules.title": "\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u0434\u0430\u0447\u0438", "rules.enabled": "\u0421\u0434\u0430\u0447\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430", "rules.enabled.help": "\u0413\u043B\u0430\u0432\u043D\u044B\u0439 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C. \u041A\u043E\u0433\u0434\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D, \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u0435\u0442\u044C\u044E \u0432\u044B \u043F\u043E-\u043F\u0440\u0435\u0436\u043D\u0435\u043C\u0443 \u043C\u043E\u0436\u0435\u0442\u0435.", "rules.cpus": "\u041C\u0430\u043A\u0441. CPU", "rules.cpus.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u044F\u0434\u0435\u0440 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u0430 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0434\u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: \u043D\u0430 8-\u044F\u0434\u0435\u0440\u043D\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 2 \u043E\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043C 6 \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0445 \u044F\u0434\u0435\u0440.", "rules.memory": "\u041C\u0430\u043A\u0441. \u043F\u0430\u043C\u044F\u0442\u044C (MB)", "rules.memory.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E RAM \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430, \u0432 \u043C\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430\u0445 (1024 MB = 1 GB). BitPull \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u044B \u043F\u0430\u043C\u044F\u0442\u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430.", "rules.gpu": "GPU", "rules.gpu.none": "\u041D\u0435\u0442", "rules.gpu.consumer": "\u041F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F (8\u201312 GB)", "rules.gpu.high": "\u0422\u043E\u043F\u043E\u0432\u0430\u044F (16\u201324 GB)", "rules.gpu.datacenter": "\u0414\u043B\u044F \u0434\u0430\u0442\u0430-\u0446\u0435\u043D\u0442\u0440\u043E\u0432 (40 GB+)", "rules.gpu.help": "\u0412\u0438\u0434\u0435\u043E\u043A\u0430\u0440\u0442\u0430, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0441\u0434\u0430\u0451\u0442\u0435, \u043F\u043E \u043E\u0431\u044A\u0451\u043C\u0443 \u0432\u0438\u0434\u0435\u043E\u043F\u0430\u043C\u044F\u0442\u0438. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \xAB\u041D\u0435\u0442\xBB, \u0435\u0441\u043B\u0438 \u0434\u0438\u0441\u043A\u0440\u0435\u0442\u043D\u043E\u0439 GPU \u043D\u0435\u0442 \u0438\u043B\u0438 \u0432\u044B \u043D\u0435 \u0445\u043E\u0442\u0438\u0442\u0435 \u0435\u0451 \u0441\u0434\u0430\u0432\u0430\u0442\u044C. GPU \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0432\u0441\u0435\u0433\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "rules.containers": "\u041A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", "rules.containers.help": "\u0421\u0431\u043E\u0440\u043A\u0438, \u0442\u0435\u0441\u0442\u044B \u0438 \u0441\u043A\u0440\u0438\u043F\u0442\u044B \u0434\u0440\u0443\u0433\u0438\u0445 \u043B\u044E\u0434\u0435\u0439 \u0432 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0435 \u0431\u0435\u0437 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0430 \u0438 \u0431\u0435\u0437 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0432\u0430\u0448\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C. \u041D\u0443\u0436\u0435\u043D Docker (\u0438\u043B\u0438 Apple Container): \u0441\u043C. \xAB\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430\xBB.", "rules.models": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 (Ollama)", "rules.models.help": "\u041E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0430 AI-\u0437\u0430\u043F\u0440\u043E\u0441\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C\u0438 \u043C\u043E\u0434\u0435\u043B\u044F\u043C\u0438, \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u043C\u0438 \u0432 Ollama \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u041D\u0443\u0436\u043D\u044B Ollama \u0438 \u0445\u043E\u0442\u044F \u0431\u044B \u043E\u0434\u043D\u0430 \u043C\u043E\u0434\u0435\u043B\u044C.", "rules.idle": "\u0422\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043C\u0438\u043D\u0443\u0442 \u043F\u0440\u043E\u0441\u0442\u043E\u044F", "rules.idle.help": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0432\u044B \u043D\u0435 \u0442\u0440\u043E\u0433\u0430\u043B\u0438 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0438 \u043C\u044B\u0448\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u043C\u0438\u043D\u0443\u0442. 0 = \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0434\u0430\u0436\u0435 \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u0440\u0430\u0431\u043E\u0442\u044B.", "rules.ac": "\u0422\u043E\u043B\u044C\u043A\u043E \u043E\u0442 \u0441\u0435\u0442\u0438", "rules.ac.help": "\u041D\u0430 \u043D\u043E\u0443\u0442\u0431\u0443\u043A\u0435 \u043F\u0440\u0435\u043A\u0440\u0430\u0449\u0430\u0442\u044C \u0441\u0434\u0430\u0447\u0443 \u043F\u0440\u0438 \u0440\u0430\u0431\u043E\u0442\u0435 \u043E\u0442 \u0431\u0430\u0442\u0430\u0440\u0435\u0438, \u0447\u0442\u043E\u0431\u044B \u0435\u0451 \u043D\u0435 \u0440\u0430\u0437\u0440\u044F\u0436\u0430\u0442\u044C.", "rules.hours": "\u0422\u043E\u043B\u044C\u043A\u043E \u0441 / \u0434\u043E \u0447\u0430\u0441\u0430 (\u043F\u0443\u0441\u0442\u043E = \u0432\u0441\u0435\u0433\u0434\u0430)", "rules.hours.help": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u044D\u0442\u043E\u043C \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043A\u0435, \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435. \u041F\u0440\u0438\u043C\u0435\u0440: 22 \u0438 8 = \u0441 22:00 \u0434\u043E 8:00. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043E\u0431\u0430 \u043F\u043E\u043B\u044F \u043F\u0443\u0441\u0442\u044B\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.", "rules.cache": "\u041A\u043E\u043F\u0438\u0438 \u0447\u0443\u0436\u0438\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432 \u0432 \u043A\u044D\u0448\u0435", "rules.cache.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0445\u0440\u0430\u043D\u0438\u0442 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438 \u043E\u0441\u0442\u0430\u0432\u0430\u043B\u0438\u0441\u044C \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B, \u043A\u043E\u0433\u0434\u0430 \u0430\u0432\u0442\u043E\u0440\u044B \u043D\u0435 \u0432 \u0441\u0435\u0442\u0438. \u0417\u0430\u043D\u0438\u043C\u0430\u0435\u0442 \u043D\u0435\u043C\u043D\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430 \u043D\u0430 \u0434\u0438\u0441\u043A\u0435 \u0438 \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442 \u043A\u0440\u0435\u0434\u0438\u0442\u044B. 0 = \u043D\u0438 \u043E\u0434\u043D\u043E\u0433\u043E.", "rules.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C", "rules.saved": "\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B. \u041E\u043D\u0438 \u0432\u0441\u0442\u0443\u043F\u044F\u0442 \u0432 \u0441\u0438\u043B\u0443 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434.", "rules.hours_both": "\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043E\u0431\u0430 \u0447\u0430\u0441\u0430 \u0438\u043B\u0438 \u043E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043E\u0431\u0430 \u043F\u0443\u0441\u0442\u044B\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.", "folders.title": "\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0435 \u043F\u0430\u043F\u043A\u0438", "folders.hint": "BitPull \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u0438 \u043F\u0430\u043F\u043A\u0438. \u0414\u043B\u044F \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438 \u043F\u0430\u043F\u043A\u0435 \u043D\u0443\u0436\u0435\u043D \u043F\u043E\u043B\u043D\u044B\u0439 bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C", "folders.none": "\u041D\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0445 \u043F\u0430\u043F\u043E\u043A.", "folders.draft": "\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A", "folders.publish": "\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C", "folders.remove": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C", "folders.need_path": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u043E\u043B\u043D\u044B\u0439 \u043F\u0443\u0442\u044C \u043A \u043F\u0430\u043F\u043A\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 /Users/you/projects/my-library.", "folders.added": "\u041F\u0430\u043F\u043A\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0430.", "folders.removed": "\u041F\u0430\u043F\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0430. BitPull \u0431\u043E\u043B\u044C\u0448\u0435 \u0435\u0451 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442.", "folders.drafted": "\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0433\u043E\u0442\u043E\u0432: \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0444\u0430\u0439\u043B\u043E\u0432: {n}. \u041F\u0443\u0441\u0442\u044C \u0432\u0430\u0448 AI \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438 \u0430\u043D\u043D\u043E\u0442\u0430\u0446\u0438\u0438 (\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 prepare_publish), \u0437\u0430\u0442\u0435\u043C \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C\xBB.", "folders.published": "\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043E \xAB{name}\xBB, \u0444\u0430\u0439\u043B\u043E\u0432: {n}.", "folders.secrets_in": "\u041D\u0430\u0439\u0434\u0435\u043D\u043E \u0432: {where}", "folders.line": "{file}, \u0441\u0442\u0440\u043E\u043A\u0430 {line}", "repos.title": "\u0412\u0430\u0448\u0438 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0438", "repos.hint": "\u041E\u0431\u043D\u043E\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0441\u0430\u043C\u0438, \u043A\u043E\u0433\u0434\u0430 \u0432\u044B \u043C\u0435\u043D\u044F\u0435\u0442\u0435 \u0444\u0430\u0439\u043B\u044B (\u043A\u0430\u0436\u0434\u044B\u0435 5 \u043C\u0438\u043D\u0443\u0442).", "repos.none": "\u041D\u0435\u0442 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432.", "repos.withdraw": "\u0421\u043D\u044F\u0442\u044C", "repos.withdrawn": "\u0420\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439 \u0441\u043D\u044F\u0442 \u0441 \u0441\u0435\u0442\u0438.", "ask.title": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u0432 \u0441\u0435\u0442\u0438", "ask.offers": "\u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442: {models}.", "ask.offers_none": "\u043D\u0435\u0442 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 Ollama, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0438\u0445)", "ask.placeholder": "\u0421\u043F\u0440\u043E\u0441\u0438\u0442\u0435 \u043E\u0442\u043A\u0440\u044B\u0442\u0443\u044E \u043C\u043E\u0434\u0435\u043B\u044C \u0432 \u0441\u0435\u0442\u0438\u2026", "ask.small": "\u041C\u0430\u043B\u0430\u044F", "ask.medium": "\u0421\u0440\u0435\u0434\u043D\u044F\u044F", "ask.large": "\u0411\u043E\u043B\u044C\u0448\u0430\u044F", "ask.button": "\u0421\u043F\u0440\u043E\u0441\u0438\u0442\u044C", "ask.empty": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u043E\u043F\u0440\u043E\u0441.", "ask.waiting": "\u0418\u0449\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0441 \u043C\u043E\u0434\u0435\u043B\u044C\u044E\u2026 \u044D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B.", "ask.credits": "\u041A\u0440\u0435\u0434\u0438\u0442\u043E\u0432: {n}", "tools.title": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B", "tools.mcp": "\u0414\u043B\u044F Claude Code \u0438 MCP-\u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0435:", "tools.openai": "\u0414\u043B\u044F \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432, \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B\u0445 \u0441 OpenAI: \u0431\u0430\u0437\u043E\u0432\u044B\u0439 URL", "tools.key": "\u041A\u043B\u044E\u0447 API", "tools.show": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C", "jobs.title": "\u0412\u0430\u0448\u0438 \u043D\u0435\u0434\u0430\u0432\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", "jobs.none": "\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447.", "jobs.model": "\u041C\u043E\u0434\u0435\u043B\u044C", "jobs.container": "\u041A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440", "jobs.status.queued": "\u0412 \u043E\u0447\u0435\u0440\u0435\u0434\u0438", "jobs.status.running": "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F", "jobs.status.done": "\u0413\u043E\u0442\u043E\u0432\u043E", "jobs.status.failed": "\u041E\u0448\u0438\u0431\u043A\u0430", "jobs.status.canceled": "\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E", "jobs.cost": "\u041A\u0440\u0435\u0434\u0438\u0442\u043E\u0432: {n}", working: "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F\u2026", "err.agent_down": "BitPull \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u041E\u043D \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F \u0441\u0430\u043C \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 30 \u0441\u0435\u043A\u0443\u043D\u0434: \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0447\u0443\u0442\u044C \u043F\u043E\u0437\u0436\u0435.", "err.server": "\u041D\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044F \u0441\u0432\u044F\u0437\u0430\u0442\u044C\u0441\u044F \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u043C BitPull. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.", "err.session": "\u0421\u0435\u0430\u043D\u0441 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u0441\u0442\u0451\u043A. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0435\u0451 \u0441\u043D\u043E\u0432\u0430 \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F BitPull.", "err.billing": "\u041F\u043B\u0430\u0442\u0435\u0436\u0438 \u043F\u043E\u043A\u0430 \u043D\u0435 \u0430\u043A\u0442\u0438\u0432\u043D\u044B.", "err.no_folder": "\u0422\u0430\u043A\u043E\u0439 \u043F\u0430\u043F\u043A\u0438 \u043D\u0435\u0442 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0443\u0442\u044C.", "err.not_folder": "\u042D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C \u0432\u0435\u0434\u0451\u0442 \u043A \u0444\u0430\u0439\u043B\u0443, \u0430 \u043D\u0435 \u043A \u043F\u0430\u043F\u043A\u0435.", "err.credits": "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "err.device": "\u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0435\u0449\u0451 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D. \u041D\u0435 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 BitPull \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u043C\u0438\u043D\u0443\u0442\u0443.", "err.no_model": "\u0421\u0435\u0439\u0447\u0430\u0441 \u043D\u0438 \u043E\u0434\u0438\u043D \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438 \u043D\u0435 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 AI-\u043C\u043E\u0434\u0435\u043B\u044C. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435.", "err.invalid": "\u041D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u043B\u044F \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.", "tip.lang": "\u042F\u0437\u044B\u043A \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0412\u0430\u0448 \u0432\u044B\u0431\u043E\u0440 \u0437\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "tip.buy.base": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0442\u0430\u0440\u0438\u0444\u0430 Base: \u20AC4.50 \u0432 \u043C\u0435\u0441\u044F\u0446 \u0438 80 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u043A\u0430\u0436\u0434\u044B\u0439 \u043C\u0435\u0441\u044F\u0446. \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u043E\u0436\u043D\u043E \u0432 \u043B\u044E\u0431\u043E\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.", "tip.buy.pro": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0442\u0430\u0440\u0438\u0444\u0430 Pro: \u20AC9.90 \u0432 \u043C\u0435\u0441\u044F\u0446, 200 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u043A\u0430\u0436\u0434\u044B\u0439 \u043C\u0435\u0441\u044F\u0446, \u043D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u0438 \u0432\u0441\u0435 GPU. \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u043E\u0436\u043D\u043E \u0432 \u043B\u044E\u0431\u043E\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.", "tip.buy.recharge": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0437\u043E\u0432\u043E \u043A\u0443\u043F\u0438\u0442\u044C 80 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u0437\u0430 \u20AC5. \u041E\u043D\u0438 \u043D\u0435 \u0441\u0433\u043E\u0440\u0430\u044E\u0442.", "tip.pause": "\u0421\u0440\u0430\u0437\u0443 \u043F\u0440\u0435\u043A\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0434\u0430\u0447\u0443. \u0417\u0430\u0434\u0430\u0447\u0430, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u044D\u0442\u043E\u0442 \u043C\u043E\u043C\u0435\u043D\u0442, \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.", "tip.resume": "\u0421\u043D\u043E\u0432\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442 \u0441\u0434\u0430\u0447\u0443 \u043F\u043E \u0432\u0430\u0448\u0438\u043C \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u0441\u0434\u0430\u0447\u0438.", "tip.rules.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u0434\u0430\u0447\u0438 \u0432\u044B\u0448\u0435. \u041E\u043D\u0438 \u0432\u0441\u0442\u0443\u043F\u0430\u044E\u0442 \u0432 \u0441\u0438\u043B\u0443 \u0437\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434; \u043F\u043E\u043A\u0430 \u0432\u044B \u043D\u0435 \u043D\u0430\u0436\u043C\u0451\u0442\u0435 \u044D\u0442\u0443 \u043A\u043D\u043E\u043F\u043A\u0443, \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F.", "tip.folder.add": "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 BitPull \u0447\u0438\u0442\u0430\u0442\u044C \u043F\u0430\u043F\u043A\u0443, \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u0443\u044E \u0441\u043B\u0435\u0432\u0430. \u0424\u0430\u0439\u043B\u044B \u0432\u043D\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0445 \u043F\u0430\u043F\u043E\u043A \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u044E\u0442\u0441\u044F.", "tip.folder.draft": "\u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u0432 \u043F\u0430\u043F\u043A\u0435 bitpull.json: \u0441\u043F\u0438\u0441\u043E\u043A \u0435\u0451 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441 \u043F\u0443\u0441\u0442\u044B\u043C\u0438 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442 \u0432\u0430\u0448 AI. \u041F\u043E\u043A\u0430 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0435\u0442\u0441\u044F.", "tip.folder.publish": "\u041F\u0443\u0431\u043B\u0438\u043A\u0443\u0435\u0442 \u044D\u0442\u0443 \u043F\u0430\u043F\u043A\u0443 \u0432 \u0441\u0435\u0442\u0438 \u043A\u0430\u043A \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439, \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u0439 \u044D\u0442\u0438\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u043C. \u041F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u044F \u0431\u043B\u043E\u043A\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0435\u0441\u043B\u0438 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u043A\u043B\u044E\u0447\u0438 \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u0438.", "tip.folder.remove": "BitPull \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0447\u0438\u0442\u0430\u0442\u044C \u044D\u0442\u0443 \u043F\u0430\u043F\u043A\u0443. \u0423\u0436\u0435 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 \u043D\u0435\u0451 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0438 \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0435\u0442\u0438, \u043F\u043E\u043A\u0430 \u0432\u044B \u0438\u0445 \u043D\u0435 \u043E\u0442\u0437\u043E\u0432\u0451\u0442\u0435.", "tip.repo.withdraw": "\u0423\u0434\u0430\u043B\u044F\u0435\u0442 \u044D\u0442\u043E\u0442 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439 \u0438\u0437 \u0441\u0435\u0442\u0438. \u0414\u0440\u0443\u0433\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043C\u043E\u0433\u0443\u0442 \u0435\u0433\u043E \u043D\u0430\u0439\u0442\u0438 \u0438\u043B\u0438 \u0441\u043A\u0430\u0447\u0430\u0442\u044C. \u0412\u0430\u0448\u0438 \u0444\u0430\u0439\u043B\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "tip.ask": "\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0430\u0448 \u0432\u043E\u043F\u0440\u043E\u0441 \u0441\u043E \u0441\u043A\u0432\u043E\u0437\u043D\u044B\u043C \u0448\u0438\u0444\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443 \u0432 \u0441\u0435\u0442\u0438, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u0430\u044F AI-\u043C\u043E\u0434\u0435\u043B\u044C. \u0421\u0442\u043E\u0438\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "tip.tier": "\u0420\u0430\u0437\u043C\u0435\u0440 \u043C\u043E\u0434\u0435\u043B\u0438: \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0430\u044F \u2014 \u0431\u044B\u0441\u0442\u0440\u0430\u044F \u0438 \u0434\u0435\u0448\u0451\u0432\u0430\u044F, \u0431\u043E\u043B\u044C\u0448\u0430\u044F \u2014 \u0443\u043C\u043D\u0435\u0435 \u0438 \u0441\u0442\u043E\u0438\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "tip.show_key": "\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043A\u043B\u044E\u0447, \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E AI-\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u043E\u0431\u0449\u0430\u044E\u0442\u0441\u044F \u0441 BitPull. \u041D\u0438\u043A\u043E\u043C\u0443 \u0435\u0433\u043E \u043D\u0435 \u0441\u043E\u043E\u0431\u0449\u0430\u0439\u0442\u0435.", "tip.setup.download": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A {name} \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430 \u0432 \u043F\u0430\u043F\u043A\u0443 \xAB\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0438\xBB \u0438 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0435\u0433\u043E. \u0421\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0435\u0433\u043E \u0448\u0430\u0433\u0430\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443.", "tip.setup.start": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 {name}: \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435, \u043D\u043E \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430.", "tip.setup.pull": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u0435\u0442 AI-\u043C\u043E\u0434\u0435\u043B\u044C {model} ({size} GB) \u0432 Ollama, \u0447\u0442\u043E\u0431\u044B \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0433 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0435\u0451 \u0434\u0440\u0443\u0433\u0438\u043C.", "tip.setup.open": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 {name} \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "tip.setup.recheck": "\u0421\u043D\u043E\u0432\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0438 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "update.title": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F", "update.current": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F: {v}", "update.latest": "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0432\u0435\u0440\u0441\u0438\u044F: {v}", "update.button": "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F", "update.install": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0435\u0440\u0441\u0438\u044E {v} \u0441\u0435\u0439\u0447\u0430\u0441", "update.available": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u044F {v}.", "update.not_in_app": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 BitPull. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u044D\u0442\u0443 \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C\u0441\u044F.", "update.state.requested": "\u041F\u0440\u043E\u0441\u0438\u043C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C\u2026", "update.state.checking": "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0439\u2026", "update.state.up_to_date": "\u0423 \u0432\u0430\u0441 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0432\u0435\u0440\u0441\u0438\u044F.", "update.state.installing": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 {v}\u2026 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F \u0441\u0430\u043C\u043E.", "update.state.restarting": "\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 {v}\u2026", "update.state.error": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C: {msg}. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435.", "tip.update": "\u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0435\u0441\u0442\u044C \u043B\u0438 \u0431\u043E\u043B\u0435\u0435 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F BitPull. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0451, \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u044C, \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435. \u0421\u0434\u0430\u0447\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434.", "tools.hint": "\u041F\u043E\u0437\u0432\u043E\u043B\u044C\u0442\u0435 \u0432\u0430\u0448\u0435\u043C\u0443 AI-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0443 \u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u043E\u0431\u0449\u0435\u043C \u043A\u043E\u0434\u0435 \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u044B \u0441\u0435\u0442\u0438. \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442:", "tools.connect": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C", "tools.connected": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E", "tools.copy": "\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C", "tools.copied": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E.", "tools.installed": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E", "tools.not_found": "\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435", "tools.done": "\u0413\u043E\u0442\u043E\u0432\u043E. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 {name}, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F BitPull.", "tools.manual": "\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u0440\u0443\u0447\u043D\u0443\u044E:", "tools.config_invalid": "\u0424\u0430\u0439\u043B \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A {name} \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u043C JSON, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 BitPull \u043D\u0435 \u0441\u0442\u0430\u043B \u0435\u0433\u043E \u043C\u0435\u043D\u044F\u0442\u044C. \u0418\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u0444\u0430\u0439\u043B \u0438\u043B\u0438 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 BitPull \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \xAB\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C\xBB.", "tip.tools.connect": "\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 BitPull \u0432 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 {name}. \u0420\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F \u043F\u0440\u0435\u0436\u043D\u0438\u0445 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442\u0441\u044F \u0440\u044F\u0434\u043E\u043C \u0441 \u043D\u0438\u043C\u0438.", "tip.tools.copy": "\u041A\u043E\u043F\u0438\u0440\u0443\u0435\u0442 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0438\u043B\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430, \u0447\u0442\u043E\u0431\u044B \u0432\u044B \u0441\u0430\u043C\u0438 \u0434\u043E\u0431\u0430\u0432\u0438\u043B\u0438 BitPull \u0432 {name}.", "models.title": "\u041C\u043E\u0434\u0435\u043B\u0438 \u0418\u0418 \u0434\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430", "models.hint": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u043B\u044E\u0431\u044B\u0445 \u0442\u0438\u043F\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043C\u043E\u0434\u0435\u043B\u0438, \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0445. \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u044E\u0442\u0441\u044F \u0441\u0435\u0442\u0438, \u043F\u043E\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432.", "models.engine.title": "\u0414\u0432\u0438\u0436\u043E\u043A \u0434\u043B\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0435\u0447\u0438 \u0438 \u043C\u0443\u0437\u044B\u043A\u0438", "models.engine.help": "Lemonade (\u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u043A\u043E\u0434): \u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0438 \u0441\u0438\u043D\u0442\u0435\u0437 \u0440\u0435\u0447\u0438, \u043C\u0443\u0437\u044B\u043A\u0430, \u0440\u0430\u043D\u0436\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u044C BitPull, \u0431\u0435\u0437 \u043F\u0440\u0430\u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430.", "models.engine.install": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u0432\u0438\u0436\u043E\u043A", "models.engine.repair": "\u041F\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u0432\u0438\u0436\u043E\u043A", "models.engine.unsupported": "\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 (\u043D\u0443\u0436\u0435\u043D Apple silicon \u0438\u043B\u0438 Windows/Linux x64)", "models.need_engine": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0434\u0432\u0438\u0436\u043E\u043A", "models.not_here": "\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435", "models.shared": "\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E \xB7 \u0432 \u043E\u0431\u0449\u0435\u043C \u0434\u043E\u0441\u0442\u0443\u043F\u0435", "models.download": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C ({size} \u0413\u0411)", "models.needs_ram": "\u041D\u0443\u0436\u043D\u043E \u043E\u043A\u043E\u043B\u043E {ram} \u0413\u0411 \u043F\u0430\u043C\u044F\u0442\u0438: \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E", "models.recommended": "\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F", "models.license": "\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F", "models.ok.engine": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0434\u0432\u0438\u0436\u043A\u0430\u2026", "task.chat": "\u0422\u0435\u043A\u0441\u0442 \u0438 \u043A\u043E\u0434", "task.vision": "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u2192 \u0442\u0435\u043A\u0441\u0442", "task.ocr": "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B (OCR)", "task.translate": "\u041F\u0435\u0440\u0435\u0432\u043E\u0434", "task.embed": "\u042D\u043C\u0431\u0435\u0434\u0434\u0438\u043D\u0433\u0438 (\u043F\u043E\u0438\u0441\u043A)", "task.rerank": "\u0420\u0430\u043D\u0436\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435", "task.image": "\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439", "task.upscale": "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439", "task.stt": "\u0420\u0435\u0447\u044C \u2192 \u0442\u0435\u043A\u0441\u0442", "task.tts": "\u0422\u0435\u043A\u0441\u0442 \u2192 \u0440\u0435\u0447\u044C", "task.music": "\u041C\u0443\u0437\u044B\u043A\u0430", "limits.title": "\u0412\u0430\u0448\u0438 \u043B\u0438\u043C\u0438\u0442\u044B \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445", "limits.hint": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0431\u043E\u0442\u044B \u0418\u0418 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043F\u0443\u0441\u0442\u044B\u043C \u2014 \u0431\u0435\u0437 \u043B\u0438\u043C\u0438\u0442\u0430. \u041F\u0440\u0438 \u0434\u043E\u0441\u0442\u0438\u0436\u0435\u043D\u0438\u0438 \u043B\u0438\u043C\u0438\u0442\u0430 \u0432\u0430\u0448\u0438 \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u044E\u0442 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E \u043F\u0435\u0440\u0438\u043E\u0434\u0430.", "limits.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043B\u0438\u043C\u0438\u0442\u044B", "limits.requests": "\u0417\u0430\u043F\u0440\u043E\u0441\u044B", "limits.tokens": "\u0422\u043E\u043A\u0435\u043D\u044B", "limits.used": "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043E", "limits.day": "\u0412 \u0434\u0435\u043D\u044C", "limits.week": "\u0412 \u043D\u0435\u0434\u0435\u043B\u044E", "limits.month": "\u0412 \u043C\u0435\u0441\u044F\u0446", "limits.none": "\u0431\u0435\u0437 \u043B\u0438\u043C\u0438\u0442\u0430", "limits.usage": "{requests} \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \xB7 {tokens} \u0442\u043E\u043A\u0435\u043D\u043E\u0432", "limits.saved": "\u041B\u0438\u043C\u0438\u0442\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B.", "tip.models.engine": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 BitPull \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u0434\u0432\u0438\u0436\u043E\u043A Lemonade, \u0447\u0442\u043E\u0431\u044B \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0433 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0435\u0447\u0438 \u0438 \u043C\u0443\u0437\u044B\u043A\u0438.", "tip.models.download": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 {model} ({size} \u0413\u0411) \u043D\u0430 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0435\u0433\u043E \u0434\u0440\u0443\u0433\u0438\u043C. \u041F\u043E\u0437\u0436\u0435 \u0435\u0451 \u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C.", "tip.limits.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u0434\u043D\u0435\u0432\u043D\u044B\u0435, \u043D\u0435\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u0438 \u043C\u0435\u0441\u044F\u0447\u043D\u044B\u0435 \u043B\u0438\u043C\u0438\u0442\u044B \u0440\u0430\u0431\u043E\u0442\u044B \u0418\u0418 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445.", "lend.visible": "\u2713 \u0421\u0435\u0442\u044C \u0432\u0438\u0434\u0438\u0442 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440: {cpus} CPU, {ram} \u0413\u0411 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u0434\u0440\u0443\u0433\u0438\u043C.", "lend.invisible": "\u0421\u0435\u0442\u044C \u043F\u043E\u043A\u0430 \u043D\u0435 \u0432\u0438\u0434\u0438\u0442 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432: \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B; \u0435\u0441\u043B\u0438 \u0442\u0430\u043A \u0438 \u043E\u0441\u0442\u0430\u043D\u0435\u0442\u0441\u044F, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0443.", "lend.unusable": "\u26A0 \u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u043E\u043A\u0430 \u043D\u0438\u043A\u0442\u043E \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C: \u0437\u0434\u0435\u0441\u044C \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0438 \u043E\u0434\u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. {reason}", "lend.unusable.docker": "Docker \u043D\u0435 \u043F\u0440\u043E\u0445\u043E\u0434\u0438\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u0438\u0437\u043E\u043B\u044F\u0446\u0438\u0438 BitPull: \u0441\u043C. \xAB\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\xBB.", "lend.unusable.off": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430\u0445 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u0438 \u043D\u0438 \u043E\u0434\u043D\u0430 \u043C\u043E\u0434\u0435\u043B\u044C \u0418\u0418 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430: \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \xAB\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430\u0445\xBB \u0438\u043B\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043C\u043E\u0434\u0435\u043B\u044C.", "lend.docker_login": "Docker \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0437\u044B: \u0435\u0433\u043E \u0432\u0445\u043E\u0434 \u0432 Docker Hub \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D. \u0412 Docker Desktop \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u0439 \u0430\u043A\u043A\u0430\u0443\u043D\u0442 (\u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u043F\u0440\u0430\u0432\u0430) \u2192 Sign out, \u0437\u0430\u0442\u0435\u043C \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0441\u043D\u043E\u0432\u0430 \u0438\u043B\u0438 \u043E\u0441\u0442\u0430\u0432\u0430\u0439\u0442\u0435\u0441\u044C \u0431\u0435\u0437 \u0432\u0445\u043E\u0434\u0430. \u041F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u043D\u043E\u0432\u0430\xBB.", "lend.off_hint": "\u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u043E: \u043E\u0442\u043C\u0435\u0442\u044C\u0442\u0435 \xAB{enabled}\xBB \u0432 \xAB{rules}\xBB \u043D\u0438\u0436\u0435 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB{save}\xBB. (\xAB\u041F\u0430\u0443\u0437\u0430 / \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C\xBB \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u0432\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435.)", "lend.low_memory": "\u041F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F \u0432\u0441\u0435\u0433\u043E {mb} \u041C\u0411 \u043F\u0430\u043C\u044F\u0442\u0438: \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0441\u044F \u043C\u0430\u043B\u043E \u0437\u0430\u0434\u0430\u0447. \u0412 \xAB{rules}\xBB \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \xAB{memory}\xBB, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 4096 (= 4 \u0413\u0411), \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB{save}\xBB." }, zh: { "lang.name": "\u4E2D\u6587", "app.title": "BitPull", "locked.text": "\u8BF7\u4ECE BitPull \u5E94\u7528\u6253\u5F00\u63A7\u5236\u9762\u677F\uFF1A\u5176\u94FE\u63A5\u5305\u542B\u8BBF\u95EE\u5BC6\u94A5\u3002", "pill.online": "\u5728\u7EBF", "pill.offline": "\u79BB\u7EBF", "pill.direct": "\u76F4\u8FDE\u5730\u5740", "pill.relay_on": "\u4E2D\u7EE7\u5DF2\u8FDE\u63A5", "pill.relay_off": "\u4E2D\u7EE7\u672A\u8FDE\u63A5", "pill.cached": "{n} \u4E2A\u7F13\u5B58\u526F\u672C", "net.title": "\u5B9E\u65F6\u7F51\u7EDC", "net.online": "{n} \u53F0\u7535\u8111\u5728\u7EBF", "net.lending": "{n} \u53F0\u6B63\u5728\u51FA\u501F", "net.cpu": "{n} \u4E2A CPU \u6838\u5FC3", "net.ram": "{n} GB RAM", "net.gpu": "{n} \u4E2A GPU", "net.models": "{n} \u4E2A AI \u6A21\u578B", "net.jobs": "{n} \u4E2A\u4EFB\u52A1\u8FD0\u884C\u4E2D", "credits.title": "\u79EF\u5206\u4F59\u989D", "credits.plan": "{plan} \u5957\u9910 \xB7 \u6700\u4F4E\u53EF\u81F3 {n}", "plan.free": "\u514D\u8D39", "plan.base": "\u57FA\u7840", "plan.pro": "\u4E13\u4E1A", "buy.base": "\u57FA\u7840\u7248 \u20AC4.50", "buy.pro": "\u4E13\u4E1A\u7248 \u20AC9.90", "buy.recharge": "\u5145\u503C \u20AC5", "buy.ok": "\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4ED8\u6B3E\u9875\u9762\u3002", "lend.title": "\u51FA\u501F\u8FD9\u53F0\u7535\u8111", "lend.hint": "\u4EFB\u52A1\u5728\u9694\u79BB\u6C99\u7BB1\u4E2D\u7AEF\u5230\u7AEF\u52A0\u5BC6\u8FD0\u884C\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u4F60\u7684\u6587\u4EF6\u3002\u4F60\u53EF\u4EE5\u8D5A\u53D6\u79EF\u5206\u3002", "lend.state.off": "\u5DF2\u5173\u95ED", "lend.state.waiting": "\u7B49\u5F85\u4E2D", "lend.state.working": "\u5DE5\u4F5C\u4E2D", "lend.reason.lending_off": "\u51FA\u501F\u5DF2\u5173\u95ED", "lend.reason.paused": "\u5DF2\u6682\u505C", "lend.reason.outside_hours": "\u4E0D\u5728\u4F60\u8BBE\u5B9A\u7684\u65F6\u6BB5\u5185", "lend.reason.on_battery": "\u6B63\u5728\u4F7F\u7528\u7535\u6C60", "lend.reason.computer_in_use": "\u4F60\u6B63\u5728\u4F7F\u7528\u7535\u8111", "lend.reason.no_jobs": "\u961F\u5217\u4E2D\u6CA1\u6709\u4EFB\u52A1", "lend.running": "\u81EA {time} \u8D77\u8FD0\u884C {kind} \u4EFB\u52A1", "lend.detail": "{reason} \xB7 \u5DF2\u5B8C\u6210 {n} \u4E2A\u4EFB\u52A1 \xB7 \u63D0\u4F9B {cpus} \u4E2A CPU\u3001{ram} GB", "lend.detail.sandbox": "\uFF0C\u6C99\u7BB1 {name}", "lend.detail.models": "\uFF0C{n} \u4E2A\u6A21\u578B", "lend.pause": "\u6682\u505C", "lend.resume": "\u6062\u590D", "lend.paused_ok": "\u51FA\u501F\u5DF2\u6682\u505C\u3002\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u5DF2\u8F6C\u4EA4\u7ED9\u53E6\u4E00\u53F0\u7535\u8111\u3002", "lend.resumed_ok": "\u51FA\u501F\u5DF2\u6062\u590D\u3002", "setup.title": "\u8BBE\u7F6E\u8FD9\u53F0\u7535\u8111", "setup.hint": "\u8FD9\u53F0\u7535\u8111\u51FA\u501F\u6240\u9700\u7684\u7EC4\u4EF6\u3002\u4F7F\u7528\u7F51\u7EDC\u5219\u65E0\u9700\u5176\u4ED6\u4EFB\u4F55\u4E1C\u897F\u3002\u5B89\u88C5\u7A0B\u5E8F\u6765\u81EA\u5B98\u65B9\u7F51\u7AD9\uFF0C\u7CFB\u7EDF\u4F1A\u8BF7\u4F60\u786E\u8BA4\u3002", "setup.checking": "\u68C0\u67E5\u4E2D\u2026", "setup.docker.help": "\u5728\u9694\u79BB\u6C99\u7BB1\u4E2D\u8FD0\u884C\u4ED6\u4EBA\u7684\u4EFB\u52A1\u3002\u5BB9\u5668\u4EFB\u52A1\u9700\u8981\u5B83\u3002\u4E2A\u4EBA\u548C\u5C0F\u578B\u4F01\u4E1A\u53EF\u514D\u8D39\u4F7F\u7528\u3002", "setup.docker.download": "\u4E0B\u8F7D Docker", "setup.docker.start": "\u542F\u52A8 Docker", "setup.apple.title": "Apple Container\uFF08\u53EF\u9009\uFF09", "setup.apple.help": "\u66F4\u5F3A\u7684\u9694\u79BB\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u8FD0\u884C\u5728\u72EC\u7ACB\u7684\u865A\u62DF\u673A\u4E2D\u3002\u53EF\u9009\uFF1B\u8D77\u6B65\u7528 Docker \u5C31\u591F\u4E86\u3002", "setup.apple.get": "\u83B7\u53D6 Apple Container", "setup.ollama.help": "\u8FD0\u884C\u5F00\u653E AI \u6A21\u578B\uFF08Qwen\u3001Llama\u3001Mistral\u2026\uFF09\u3002\u51FA\u501F AI \u6A21\u578B\u9700\u8981\u5B83\u3002", "setup.ollama.download": "\u4E0B\u8F7D Ollama", "setup.ollama.start": "\u542F\u52A8 Ollama", "setup.model.title": "AI \u6A21\u578B", "setup.model.help": "\u8FD9\u53F0\u7535\u8111\u5411\u4ED6\u4EBA\u63D0\u4F9B\u7684\u6A21\u578B\u3002\u5BF9\u4E8E {ram} GB \u5185\u5B58\uFF0C\u63A8\u8350\uFF1A{model}\u3002", "setup.model.download": "\u4E0B\u8F7D {model}\uFF08{size} GB\uFF09", "setup.model.none": "\u6682\u65E0", "setup.model.need_ollama": "\u8BF7\u5148\u5B89\u88C5\u5E76\u542F\u52A8 Ollama", "setup.nvidia.title": "NVIDIA GPU \u9A71\u52A8\uFF08\u53EF\u9009\uFF09", "setup.nvidia.help": "\u4EC5\u5F53\u8FD9\u53F0\u7535\u8111\u6709\u4F60\u60F3\u51FA\u501F\u7684 NVIDIA \u663E\u5361\u65F6\u9700\u8981\u3002", "setup.nvidia.get": "\u83B7\u53D6 NVIDIA \u9A71\u52A8", "setup.status.running": "\u5DF2\u5B89\u88C5\u5E76\u8FD0\u884C", "setup.status.installed": "\u5DF2\u5B89\u88C5", "setup.status.stopped": "\u5DF2\u5B89\u88C5\uFF0C\u672A\u8FD0\u884C", "setup.status.missing": "\u672A\u5B89\u88C5", "setup.status.found": "\u5DF2\u627E\u5230", "setup.status.not_found": "\u672A\u627E\u5230", "setup.terminal": "\u5728\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF1A", "setup.done": "\u5B8C\u6210", "setup.opened": "\u5B8C\u6210\uFF1A\u5DF2\u6253\u5F00 {file}\uFF0C\u8BF7\u6309\u6B65\u9AA4\u64CD\u4F5C", "setup.recheck": "\u91CD\u65B0\u68C0\u67E5", "setup.ok.download": "\u4E0B\u8F7D\u5DF2\u5F00\u59CB\u3002\u5B8C\u6210\u540E\u5B89\u88C5\u7A0B\u5E8F\u4F1A\u81EA\u52A8\u6253\u5F00\uFF1A\u8BF7\u6309\u5176\u6B65\u9AA4\u64CD\u4F5C\u3002", "setup.ok.start": "\u6B63\u5728\u542F\u52A8\u2026\u6700\u591A\u53EF\u80FD\u9700\u8981\u4E00\u5206\u949F\u3002\u6B64\u5217\u8868\u4F1A\u81EA\u52A8\u66F4\u65B0\u3002", "setup.ok.pull": "\u6A21\u578B\u4E0B\u8F7D\u5DF2\u5F00\u59CB\u3002\u8FDB\u5EA6\u663E\u793A\u5728\u4E0A\u65B9\u3002", "setup.ok.page": "\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u9875\u9762\u3002", "setup.ok.recheck": "\u5DF2\u91CD\u65B0\u68C0\u67E5\u3002", "rules.title": "\u51FA\u501F\u89C4\u5219", "rules.enabled": "\u5F00\u542F\u51FA\u501F", "rules.enabled.help": "\u603B\u5F00\u5173\u3002\u5173\u95ED\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u7EDD\u4E0D\u8FD0\u884C\u4ED6\u4EBA\u7684\u4EFB\u52A1\u3002\u4F60\u4ECD\u53EF\u81EA\u5DF1\u4F7F\u7528\u7F51\u7EDC\u3002", "rules.cpus": "\u6700\u5927 CPU \u6570", "rules.cpus.help": "\u4E00\u4E2A\u4EFB\u52A1\u6700\u591A\u53EF\u4F7F\u7528\u7684\u5904\u7406\u5668\u6838\u5FC3\u6570\u3002\u4F8B\u5982\uFF1A\u5728 8 \u6838\u7535\u8111\u4E0A\u8BBE\u4E3A 2\uFF0C\u4F1A\u4E3A\u4F60\u4FDD\u7559 6 \u4E2A\u6838\u5FC3\u3002", "rules.memory": "\u6700\u5927\u5185\u5B58\uFF08MB\uFF09", "rules.memory.help": "\u4E00\u4E2A\u4EFB\u52A1\u53EF\u4F7F\u7528\u7684 RAM\uFF0C\u5355\u4F4D\u4E3A MB\uFF081024 MB = 1 GB\uFF09\u3002BitPull \u7EDD\u4E0D\u4F1A\u63D0\u4F9B\u8D85\u8FC7\u8FD9\u53F0\u7535\u8111\u4E00\u534A\u7684\u5185\u5B58\u3002", "rules.gpu": "GPU", "rules.gpu.none": "\u65E0", "rules.gpu.consumer": "\u6D88\u8D39\u7EA7\uFF088\u201312 GB\uFF09", "rules.gpu.high": "\u9AD8\u7AEF\uFF0816\u201324 GB\uFF09", "rules.gpu.datacenter": "\u6570\u636E\u4E2D\u5FC3\u7EA7\uFF0840 GB+\uFF09", "rules.gpu.help": "\u6309\u663E\u5B58\u9009\u62E9\u4F60\u51FA\u501F\u7684\u663E\u5361\u3002\u5982\u679C\u6CA1\u6709\u72EC\u7ACB GPU \u6216\u4E0D\u60F3\u51FA\u501F\uFF0C\u8BF7\u4FDD\u6301\u201C\u65E0\u201D\u3002GPU \u8D5A\u53D6\u7684\u79EF\u5206\u6700\u591A\u3002", "rules.containers": "\u5BB9\u5668\u4EFB\u52A1", "rules.containers.help": "\u5728\u65E0\u7F51\u7EDC\u3001\u65E0\u6CD5\u8BBF\u95EE\u4F60\u6587\u4EF6\u7684\u6C99\u7BB1\u4E2D\u4E3A\u4ED6\u4EBA\u8FD0\u884C\u6784\u5EFA\u3001\u6D4B\u8BD5\u548C\u811A\u672C\u3002\u9700\u8981 Docker\uFF08\u6216 Apple Container\uFF09\uFF1A\u89C1\u201C\u8BBE\u7F6E\u8FD9\u53F0\u7535\u8111\u201D\u3002", "rules.models": "\u5F00\u653E\u6A21\u578B\uFF08Ollama\uFF09", "rules.models.help": "\u4F7F\u7528\u8FD9\u53F0\u7535\u8111\u4E0A Ollama \u4E2D\u5B89\u88C5\u7684\u5F00\u653E\u6A21\u578B\u56DE\u7B54 AI \u8BF7\u6C42\u3002\u9700\u8981 Ollama \u548C\u81F3\u5C11\u4E00\u4E2A\u6A21\u578B\u3002", "rules.idle": "\u4EC5\u5728\u7A7A\u95F2\u82E5\u5E72\u5206\u949F\u540E", "rules.idle.help": "\u4EC5\u5F53\u4F60\u5728\u8FD9\u4E48\u591A\u5206\u949F\u5185\u672A\u89E6\u78B0\u952E\u76D8\u6216\u9F20\u6807\u65F6\u51FA\u501F\u30020 = \u5DE5\u4F5C\u65F6\u4E5F\u51FA\u501F\u3002", "rules.ac": "\u4EC5\u5728\u63A5\u901A\u7535\u6E90\u65F6", "rules.ac.help": "\u7B14\u8BB0\u672C\u7535\u8111\u4F7F\u7528\u7535\u6C60\u65F6\u505C\u6B62\u51FA\u501F\uFF0C\u907F\u514D\u8017\u7535\u3002", "rules.hours": "\u4EC5\u9650\u8D77\u6B62\u65F6\u95F4\uFF08\u7559\u7A7A = \u59CB\u7EC8\uFF09", "rules.hours.help": "\u4EC5\u5728\u6B64\u65F6\u6BB5\u5185\u51FA\u501F\uFF0C\u91C7\u7528 24 \u5C0F\u65F6\u5236\u3002\u4F8B\u5982\uFF1A22 \u548C 8 = \u665A\u4E0A 10 \u70B9\u5230\u65E9\u4E0A 8 \u70B9\u3002\u4E24\u9879\u90FD\u7559\u7A7A\u5219\u968F\u65F6\u51FA\u501F\u3002", "rules.cache": "\u4ED6\u4EBA\u4ED3\u5E93\u7684\u7F13\u5B58\u526F\u672C", "rules.cache.help": "\u8FD9\u53F0\u7535\u8111\u4E3A\u5176\u4ED6\u7528\u6237\u4FDD\u5B58\u591A\u5C11\u4E2A\u516C\u5F00\u4ED3\u5E93\u7684\u526F\u672C\uFF0C\u4F7F\u5176\u5728\u4F5C\u8005\u79BB\u7EBF\u65F6\u4ECD\u53EF\u7528\u3002\u5360\u7528\u5C11\u91CF\u78C1\u76D8\u7A7A\u95F4\u5E76\u8D5A\u53D6\u79EF\u5206\u30020 = \u4E0D\u4FDD\u5B58\u3002", "rules.save": "\u4FDD\u5B58\u89C4\u5219", "rules.saved": "\u89C4\u5219\u5DF2\u4FDD\u5B58\uFF0C\u51E0\u79D2\u5185\u751F\u6548\u3002", "rules.hours_both": "\u8BF7\u586B\u5199\u4E24\u4E2A\u65F6\u95F4\uFF0C\u6216\u90FD\u7559\u7A7A\u4EE5\u968F\u65F6\u51FA\u501F\u3002", "folders.title": "\u5DF2\u6388\u6743\u6587\u4EF6\u5939", "folders.hint": "BitPull \u53EA\u8BFB\u53D6\u8FD9\u4E9B\u6587\u4EF6\u5939\u3002\u53D1\u5E03\u6587\u4EF6\u5939\u9700\u8981\u5B8C\u6574\u7684 bitpull.json\u3002", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u6388\u6743", "folders.none": "\u6CA1\u6709\u5DF2\u6388\u6743\u7684\u6587\u4EF6\u5939\u3002", "folders.draft": "\u8349\u7A3F", "folders.publish": "\u53D1\u5E03", "folders.remove": "\u79FB\u9664", "folders.need_path": "\u8BF7\u5148\u586B\u5199\u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF0C\u4F8B\u5982 /Users/you/projects/my-library\u3002", "folders.added": "\u6587\u4EF6\u5939\u5DF2\u6388\u6743\u3002", "folders.removed": "\u6587\u4EF6\u5939\u5DF2\u79FB\u9664\uFF0CBitPull \u4E0D\u518D\u8BFB\u53D6\u5B83\u3002", "folders.drafted": "\u8349\u7A3F\u5DF2\u5C31\u7EEA\uFF1A\u627E\u5230 {n} \u4E2A\u6587\u4EF6\u3002\u8BA9\u4F60\u7684 AI \u586B\u5199\u6458\u8981\u548C\u63CF\u8FF0\uFF08prepare_publish \u5DE5\u5177\uFF09\uFF0C\u7136\u540E\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u3002", "folders.published": "\u5DF2\u53D1\u5E03\u201C{name}\u201D\uFF0C\u5171 {n} \u4E2A\u6587\u4EF6\u3002", "folders.secrets_in": "\u53D1\u73B0\u4E8E\uFF1A{where}", "folders.line": "{file} \u7B2C {line} \u884C", "repos.title": "\u4F60\u53D1\u5E03\u7684\u4ED3\u5E93", "repos.hint": "\u4F60\u4FEE\u6539\u6587\u4EF6\u540E\u4F1A\u81EA\u52A8\u66F4\u65B0\uFF08\u6BCF 5 \u5206\u949F\uFF09\u3002", "repos.none": "\u6CA1\u6709\u5DF2\u53D1\u5E03\u7684\u4ED3\u5E93\u3002", "repos.withdraw": "\u64A4\u56DE", "repos.withdrawn": "\u4ED3\u5E93\u5DF2\u4ECE\u7F51\u7EDC\u64A4\u56DE\u3002", "ask.title": "\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B", "ask.offers": "\u8FD9\u53F0\u7535\u8111\u63D0\u4F9B\uFF1A{models}\u3002", "ask.offers_none": "\u65E0\u6A21\u578B\uFF08\u5B89\u88C5 Ollama \u5373\u53EF\u63D0\u4F9B\uFF09", "ask.placeholder": "\u5411\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B\u63D0\u95EE\u2026", "ask.small": "\u5C0F", "ask.medium": "\u4E2D", "ask.large": "\u5927", "ask.button": "\u63D0\u95EE", "ask.empty": "\u8BF7\u5148\u8F93\u5165\u95EE\u9898\u3002", "ask.waiting": "\u6B63\u5728\u5BFB\u627E\u6709\u8BE5\u6A21\u578B\u7684\u7535\u8111\u2026\u6700\u591A\u53EF\u80FD\u9700\u8981\u4E00\u5206\u949F\u3002", "ask.credits": "{n} \u79EF\u5206", "tools.title": "\u8FDE\u63A5\u4F60\u7684\u5DE5\u5177", "tools.mcp": "\u5BF9\u4E8E Claude Code \u548C MCP \u5BA2\u6237\u7AEF\uFF0C\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF1A", "tools.openai": "\u5BF9\u4E8E\u517C\u5BB9 OpenAI \u7684\u5DE5\u5177\uFF1A\u57FA\u7840 URL", "tools.key": "API \u5BC6\u94A5", "tools.show": "\u663E\u793A", "jobs.title": "\u4F60\u6700\u8FD1\u7684\u4EFB\u52A1", "jobs.none": "\u6CA1\u6709\u4EFB\u52A1\u3002", "jobs.model": "\u6A21\u578B", "jobs.container": "\u5BB9\u5668", "jobs.status.queued": "\u6392\u961F\u4E2D", "jobs.status.running": "\u8FD0\u884C\u4E2D", "jobs.status.done": "\u5DF2\u5B8C\u6210", "jobs.status.failed": "\u5931\u8D25", "jobs.status.canceled": "\u5DF2\u53D6\u6D88", "jobs.cost": "{n} \u79EF\u5206", working: "\u5904\u7406\u4E2D\u2026", "err.agent_down": "\u8FD9\u53F0\u7535\u8111\u4E0A\u7684 BitPull \u6CA1\u6709\u54CD\u5E94\u3002\u5B83\u4F1A\u5728 30 \u79D2\u5185\u81EA\u52A8\u91CD\u542F\uFF1A\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "err.server": "\u65E0\u6CD5\u8FDE\u63A5 BitPull \u670D\u52A1\u5668\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002", "err.session": "\u63A7\u5236\u9762\u677F\u4F1A\u8BDD\u5DF2\u8FC7\u671F\u3002\u8BF7\u4ECE BitPull \u5E94\u7528\u91CD\u65B0\u6253\u5F00\u3002", "err.billing": "\u4ED8\u6B3E\u529F\u80FD\u5C1A\u672A\u542F\u7528\u3002", "err.no_folder": "\u8FD9\u53F0\u7535\u8111\u4E0A\u4E0D\u5B58\u5728\u6B64\u6587\u4EF6\u5939\u3002\u8BF7\u68C0\u67E5\u8DEF\u5F84\u3002", "err.not_folder": "\u6B64\u8DEF\u5F84\u662F\u6587\u4EF6\uFF0C\u4E0D\u662F\u6587\u4EF6\u5939\u3002", "err.credits": "\u79EF\u5206\u4E0D\u8DB3\u3002", "err.device": "\u8FD9\u53F0\u7535\u8111\u5C1A\u672A\u8FDE\u63A5\u3002\u8BF7\u4FDD\u6301 BitPull \u5E94\u7528\u6253\u5F00\uFF0C\u4E00\u5206\u949F\u540E\u518D\u8BD5\u3002", "err.no_model": "\u76EE\u524D\u7F51\u7EDC\u4E0A\u6CA1\u6709\u7535\u8111\u63D0\u4F9B AI \u6A21\u578B\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "err.invalid": "\u90E8\u5206\u6570\u503C\u65E0\u6548\u3002\u8BF7\u68C0\u67E5\u5404\u5B57\u6BB5\u540E\u91CD\u8BD5\u3002", "tip.lang": "\u5E94\u7528\u7684\u8BED\u8A00\u3002\u4F60\u7684\u9009\u62E9\u4F1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u3002", "tip.buy.base": "\u6253\u5F00\u57FA\u7840\u5957\u9910\u7684\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF1A\u6BCF\u6708 \u20AC4.50\uFF0C\u6BCF\u6708\u83B7\u5F97 80 \u79EF\u5206\u3002\u4F60\u53EF\u4EE5\u968F\u65F6\u53D6\u6D88\u3002", "tip.buy.pro": "\u6253\u5F00\u4E13\u4E1A\u5957\u9910\u7684\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF1A\u6BCF\u6708 \u20AC9.90\uFF0C\u6BCF\u6708\u83B7\u5F97 200 \u79EF\u5206\uFF0C\u4EAB\u6709\u6700\u9AD8\u4F18\u5148\u7EA7\u5E76\u53EF\u4F7F\u7528\u6240\u6709 GPU\u3002\u4F60\u53EF\u4EE5\u968F\u65F6\u53D6\u6D88\u3002", "tip.buy.recharge": "\u6253\u5F00\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF0C\u4E00\u6B21\u6027\u8D2D\u4E70 80 \u79EF\u5206\uFF0C\u4EF7\u683C \u20AC5\u3002\u79EF\u5206\u6C38\u4E0D\u8FC7\u671F\u3002", "tip.pause": "\u7ACB\u5373\u505C\u6B62\u51FA\u501F\u3002\u6B64\u523B\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u4F1A\u8F6C\u4EA4\u7ED9\u53E6\u4E00\u53F0\u7535\u8111\u3002\u518D\u6309\u4E00\u6B21\u5373\u53EF\u6062\u590D\u3002", "tip.resume": "\u6309\u7167\u4F60\u7684\u51FA\u501F\u89C4\u5219\u91CD\u65B0\u5F00\u59CB\u51FA\u501F\u3002", "tip.rules.save": "\u4FDD\u5B58\u4E0A\u65B9\u7684\u51FA\u501F\u89C4\u5219\u3002\u51E0\u79D2\u5185\u751F\u6548\uFF1B\u5728\u4F60\u6309\u4E0B\u6B64\u6309\u94AE\u4E4B\u524D\u4E0D\u4F1A\u6709\u4EFB\u4F55\u53D8\u5316\u3002", "tip.folder.add": "\u5141\u8BB8 BitPull \u8BFB\u53D6\u5DE6\u4FA7\u586B\u5199\u7684\u6587\u4EF6\u5939\u3002\u6388\u6743\u6587\u4EF6\u5939\u4EE5\u5916\u7684\u6587\u4EF6\u6C38\u8FDC\u4E0D\u4F1A\u88AB\u8BFB\u53D6\u6216\u5171\u4EAB\u3002", "tip.folder.draft": "\u5728\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA bitpull.json\uFF1A\u5217\u51FA\u5176\u4E2D\u7684\u6587\u4EF6\uFF0C\u5E76\u7559\u51FA\u7A7A\u767D\u63CF\u8FF0\u4F9B\u4F60\u7684 AI \u586B\u5199\u3002\u6B64\u65F6\u5C1A\u672A\u53D1\u5E03\u4EFB\u4F55\u5185\u5BB9\u3002", "tip.folder.publish": "\u5C06\u6B64\u6587\u4EF6\u5939\u4F5C\u4E3A\u516C\u5F00\u4ED3\u5E93\u5171\u4EAB\u5230\u7F51\u7EDC\u4E0A\uFF0C\u5E76\u7531\u8FD9\u53F0\u7535\u8111\u7B7E\u540D\u3002\u5982\u679C\u5728\u6587\u4EF6\u4E2D\u53D1\u73B0\u5BC6\u94A5\u6216\u5BC6\u7801\uFF0C\u5C06\u963B\u6B62\u53D1\u5E03\u3002", "tip.folder.remove": "BitPull \u5C06\u505C\u6B62\u8BFB\u53D6\u6B64\u6587\u4EF6\u5939\u3002\u4ECE\u4E2D\u5DF2\u53D1\u5E03\u7684\u4ED3\u5E93\u4F1A\u4FDD\u6301\u5728\u7EBF\uFF0C\u76F4\u5230\u4F60\u5C06\u5176\u64A4\u56DE\u3002", "tip.repo.withdraw": "\u5C06\u6B64\u4ED3\u5E93\u4ECE\u7F51\u7EDC\u4E2D\u79FB\u9664\u3002\u5176\u4ED6\u7528\u6237\u5C06\u65E0\u6CD5\u518D\u627E\u5230\u6216\u4E0B\u8F7D\u5B83\u3002\u4F60\u7684\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u4F60\u7684\u7535\u8111\u4E0A\u3002", "tip.ask": "\u5C06\u4F60\u7684\u95EE\u9898\u4EE5\u7AEF\u5230\u7AEF\u52A0\u5BC6\u65B9\u5F0F\u53D1\u9001\u7ED9\u7F51\u7EDC\u4E0A\u4E00\u53F0\u8FD0\u884C\u5F00\u653E AI \u6A21\u578B\u7684\u7535\u8111\u3002\u9700\u8981\u82B1\u8D39\u5C11\u91CF\u79EF\u5206\u3002", "tip.tier": "\u6A21\u578B\u5927\u5C0F\uFF1A\u5C0F\u6A21\u578B\u901F\u5EA6\u5FEB\u3001\u82B1\u8D39\u5C11\uFF1B\u5927\u6A21\u578B\u66F4\u806A\u660E\uFF0C\u4F46\u82B1\u8D39\u66F4\u591A\u79EF\u5206\u3002", "tip.show_key": "\u663E\u793A\u8FD9\u53F0\u7535\u8111\u4E0A\u7684 AI \u5DE5\u5177\u4E0E BitPull \u901A\u4FE1\u6240\u7528\u7684\u5BC6\u94A5\u3002\u8BF7\u52FF\u5206\u4EAB\u3002", "tip.setup.download": "\u5C06\u9002\u7528\u4E8E\u8FD9\u53F0\u7535\u8111\u7684 {name} \u5B98\u65B9\u5B89\u88C5\u7A0B\u5E8F\u4E0B\u8F7D\u5230\u4F60\u7684\u201C\u4E0B\u8F7D\u201D\u6587\u4EF6\u5939\u5E76\u6253\u5F00\u3002\u6309\u7167\u5176\u4E2D\u7684\u6B65\u9AA4\u5B8C\u6210\u5B89\u88C5\u3002", "tip.setup.start": "\u542F\u52A8 {name}\u3002\u5B83\u5DF2\u5B89\u88C5\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u4F46\u5C1A\u672A\u8FD0\u884C\u3002", "tip.setup.pull": "\u5C06 AI \u6A21\u578B {model}\uFF08{size} GB\uFF09\u4E0B\u8F7D\u5230 Ollama \u4E2D\uFF0C\u8FD9\u6837\u8FD9\u53F0\u7535\u8111\u5C31\u80FD\u628A\u5B83\u63D0\u4F9B\u7ED9\u5176\u4ED6\u4EBA\u3002", "tip.setup.open": "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 {name} \u7684\u5B98\u65B9\u9875\u9762\u3002", "tip.setup.recheck": "\u91CD\u65B0\u68C0\u67E5\u8FD9\u53F0\u7535\u8111\u4E0A\u5DF2\u5B89\u88C5\u548C\u6B63\u5728\u8FD0\u884C\u7684\u5185\u5BB9\u3002", "update.title": "\u5E94\u7528\u66F4\u65B0", "update.current": "\u5DF2\u5B89\u88C5\u7248\u672C\uFF1A{v}", "update.latest": "\u6700\u65B0\u7248\u672C\uFF1A{v}", "update.button": "\u68C0\u67E5\u66F4\u65B0", "update.install": "\u7ACB\u5373\u5B89\u88C5\u7248\u672C {v}", "update.available": "\u7248\u672C {v} \u53EF\u7528\u3002", "update.not_in_app": "\u66F4\u65B0\u7531 BitPull \u5E94\u7528\u5B89\u88C5\u3002\u8BF7\u4ECE\u5E94\u7528\u4E2D\u6253\u5F00\u6B64\u63A7\u5236\u9762\u677F\u8FDB\u884C\u66F4\u65B0\u3002", "update.state.requested": "\u6B63\u5728\u8BF7\u6C42\u5E94\u7528\u68C0\u67E5\u2026", "update.state.checking": "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026", "update.state.up_to_date": "\u4F60\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002", "update.state.installing": "\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u7248\u672C {v}\u2026\u5E94\u7528\u4F1A\u81EA\u52A8\u91CD\u542F\u3002", "update.state.restarting": "\u6B63\u5728\u4EE5\u7248\u672C {v} \u91CD\u542F\u2026", "update.state.error": "\u66F4\u65B0\u5931\u8D25\uFF1A{msg}\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "tip.update": "\u68C0\u67E5\u662F\u5426\u6709\u66F4\u65B0\u7248\u672C\u7684 BitPull\u3002\u5982\u6709\uFF0C\u4F1A\u4E0B\u8F7D\u3001\u9A8C\u8BC1\u7B7E\u540D\u3001\u5B89\u88C5\u5E76\u91CD\u542F\u5E94\u7528\u3002\u51FA\u501F\u4F1A\u6682\u505C\u51E0\u79D2\u949F\u3002", "tools.hint": "\u8BA9\u4F60\u7684 AI \u52A9\u624B\u641C\u7D22\u5171\u4EAB\u4EE3\u7801\uFF0C\u5E76\u4F7F\u7528\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B\u548C\u7535\u8111\u3002\u9009\u62E9\u4F60\u7684\u5DE5\u5177\uFF1A", "tools.connect": "\u8FDE\u63A5", "tools.connected": "\u5DF2\u8FDE\u63A5", "tools.copy": "\u590D\u5236", "tools.copied": "\u5DF2\u590D\u5236\u3002", "tools.installed": "\u5DF2\u5B89\u88C5", "tools.not_found": "\u8FD9\u53F0\u7535\u8111\u4E0A\u672A\u627E\u5230", "tools.done": "\u5B8C\u6210\u3002\u91CD\u542F {name} \u5373\u53EF\u5F00\u59CB\u4F7F\u7528 BitPull\u3002", "tools.manual": "\u624B\u52A8\u6DFB\u52A0\uFF1A", "tools.config_invalid": "{name} \u7684\u8BBE\u7F6E\u6587\u4EF6\u4E0D\u662F\u6709\u6548\u7684 JSON\uFF0C\u56E0\u6B64 BitPull \u6CA1\u6709\u6539\u52A8\u5B83\u3002\u8BF7\u4FEE\u590D\u8BE5\u6587\u4EF6\uFF0C\u6216\u7528\u201C\u590D\u5236\u201D\u624B\u52A8\u6DFB\u52A0 BitPull\u3002", "tip.tools.connect": "\u81EA\u52A8\u5C06 BitPull \u6DFB\u52A0\u5230 {name} \u7684\u8BBE\u7F6E\u4E2D\u3002\u4E4B\u524D\u7684\u8BBE\u7F6E\u4F1A\u5728\u65C1\u8FB9\u4FDD\u7559\u4E00\u4EFD\u5907\u4EFD\u3002", "tip.tools.copy": "\u5C06\u547D\u4EE4\u6216\u8BBE\u7F6E\u590D\u5236\u5230\u526A\u8D34\u677F\uFF0C\u4EE5\u4FBF\u4F60\u81EA\u5DF1\u628A BitPull \u6DFB\u52A0\u5230 {name}\u3002", "models.title": "\u53EF\u5171\u4EAB\u7684 AI \u6A21\u578B", "models.hint": "\u6B64\u7535\u8111\u53EF\u4EE5\u51FA\u501F\u7684\u5404\u7C7B\u5F00\u653E\u6A21\u578B\u3002\u4EC5\u5217\u51FA\u8BB8\u53EF\u8BC1\u5141\u8BB8\u4E3A\u4ED6\u4EBA\u63D0\u4F9B\u670D\u52A1\u7684\u6A21\u578B\u3002\u51FA\u501F\u5F00\u542F\u65F6\uFF0C\u5DF2\u4E0B\u8F7D\u7684\u6A21\u578B\u4F1A\u63D0\u4F9B\u7ED9\u7F51\u7EDC\u3002", "models.engine.title": "\u56FE\u50CF\u3001\u8BED\u97F3\u548C\u97F3\u4E50\u5F15\u64CE", "models.engine.help": "Lemonade\uFF08\u5F00\u6E90\uFF09\uFF1A\u56FE\u50CF\u751F\u6210\u3001\u8BED\u97F3\u8F6C\u6587\u5B57\u3001\u6587\u5B57\u8F6C\u8BED\u97F3\u3001\u97F3\u4E50\u3001\u6587\u6863\u91CD\u6392\u5E8F\u548C\u56FE\u50CF\u653E\u5927\u3002\u5B89\u88C5\u5728 BitPull \u5185\u90E8\uFF0C\u65E0\u9700\u7BA1\u7406\u5458\u6743\u9650\u3002", "models.engine.install": "\u5B89\u88C5\u5F15\u64CE", "models.engine.repair": "\u91CD\u65B0\u5B89\u88C5\u5F15\u64CE", "models.engine.unsupported": "\u6B64\u7535\u8111\u4E0D\u53EF\u7528\uFF08\u9700\u8981 Apple \u82AF\u7247\uFF0C\u6216 Windows/Linux x64\uFF09", "models.need_engine": "\u8BF7\u5148\u5B89\u88C5\u5F15\u64CE", "models.not_here": "\u6B64\u7535\u8111\u4E0D\u53EF\u7528", "models.shared": "\u5DF2\u4E0B\u8F7D \xB7 \u5DF2\u5171\u4EAB", "models.download": "\u4E0B\u8F7D\uFF08{size} GB\uFF09", "models.needs_ram": "\u9700\u8981\u7EA6 {ram} GB \u5185\u5B58\uFF1A\u5728\u6B64\u53EF\u80FD\u8F83\u6162", "models.recommended": "\u63A8\u8350", "models.license": "\u8BB8\u53EF\u8BC1", "models.ok.engine": "\u6B63\u5728\u5B89\u88C5\u5F15\u64CE\u2026", "task.chat": "\u6587\u672C\u548C\u4EE3\u7801", "task.vision": "\u56FE\u50CF \u2192 \u6587\u672C", "task.ocr": "\u6587\u6863\uFF08OCR\uFF09", "task.translate": "\u7FFB\u8BD1", "task.embed": "\u5411\u91CF\u5D4C\u5165\uFF08\u641C\u7D22\uFF09", "task.rerank": "\u91CD\u6392\u5E8F", "task.image": "\u56FE\u50CF\u751F\u6210", "task.upscale": "\u56FE\u50CF\u653E\u5927", "task.stt": "\u8BED\u97F3\u8F6C\u6587\u5B57", "task.tts": "\u6587\u5B57\u8F6C\u8BED\u97F3", "task.music": "\u97F3\u4E50", "limits.title": "\u60A8\u4E3A\u4ED6\u4EBA\u8BBE\u5B9A\u7684\u4E0A\u9650", "limits.hint": "\u6B64\u7535\u8111\u4E3A\u4ED6\u4EBA\u5B8C\u6210\u7684 AI \u5DE5\u4F5C\u91CF\u3002\u7559\u7A7A\u8868\u793A\u4E0D\u8BBE\u4E0A\u9650\u3002\u8FBE\u5230\u4E0A\u9650\u540E\uFF0C\u5728\u4E0B\u4E00\u5468\u671F\u5F00\u59CB\u524D\u4E0D\u518D\u63D0\u4F9B\u60A8\u7684\u6A21\u578B\u3002", "limits.save": "\u4FDD\u5B58\u4E0A\u9650", "limits.requests": "\u8BF7\u6C42\u6570", "limits.tokens": "Token \u6570", "limits.used": "\u5DF2\u7528", "limits.day": "\u6BCF\u5929", "limits.week": "\u6BCF\u5468", "limits.month": "\u6BCF\u6708", "limits.none": "\u4E0D\u8BBE\u4E0A\u9650", "limits.usage": "{requests} \u6B21\u8BF7\u6C42 \xB7 {tokens} \u4E2A token", "limits.saved": "\u4E0A\u9650\u5DF2\u4FDD\u5B58\u3002", "tip.models.engine": "\u5C06\u5F00\u6E90 Lemonade \u5F15\u64CE\u4E0B\u8F7D\u5230 BitPull \u4E2D\uFF0C\u4F7F\u6B64\u7535\u8111\u53EF\u4EE5\u51FA\u501F\u56FE\u50CF\u3001\u8BED\u97F3\u548C\u97F3\u4E50\u6A21\u578B\u3002", "tip.models.download": "\u5C06 {model}\uFF08{size} GB\uFF09\u4E0B\u8F7D\u5230\u6B64\u7535\u8111\uFF0C\u4EE5\u4FBF\u63D0\u4F9B\u7ED9\u4ED6\u4EBA\u3002\u4E4B\u540E\u53EF\u4EE5\u5220\u9664\u3002", "tip.limits.save": "\u4FDD\u5B58\u4E3A\u4ED6\u4EBA\u5B8C\u6210 AI \u5DE5\u4F5C\u7684\u6BCF\u65E5\u3001\u6BCF\u5468\u548C\u6BCF\u6708\u4E0A\u9650\u3002", "lend.visible": "\u2713 \u7F51\u7EDC\u80FD\u770B\u5230\u8FD9\u53F0\u7535\u8111\uFF1A{cpus} \u4E2A CPU\u3001{ram} GB \u53EF\u4F9B\u4ED6\u4EBA\u4F7F\u7528\u3002", "lend.invisible": "\u7F51\u7EDC\u5C1A\u672A\u770B\u5230\u51FA\u501F\uFF1A\u8BF7\u6700\u591A\u7B49\u5F85\u4E00\u5206\u949F\uFF1B\u5982\u679C\u4ECD\u7136\u5982\u6B64\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u3002", "lend.unusable": "\u26A0 \u8FD8\u6CA1\u6709\u4EBA\u80FD\u4F7F\u7528\u8FD9\u53F0\u7535\u8111\uFF1A\u8FD9\u91CC\u65E0\u6CD5\u8FD0\u884C\u4EFB\u4F55\u4EFB\u52A1\u3002{reason}", "lend.unusable.docker": "Docker \u672A\u901A\u8FC7 BitPull \u7684\u9694\u79BB\u68C0\u67E5\uFF1A\u8BF7\u67E5\u770B\u201C\u8BBE\u7F6E\u6B64\u7535\u8111\u201D\u3002", "lend.unusable.off": "\u5BB9\u5668\u4EFB\u52A1\u5DF2\u5173\u95ED\u4E14\u672A\u5B89\u88C5 AI \u6A21\u578B\uFF1A\u8BF7\u5F00\u542F\u201C\u5BB9\u5668\u4EFB\u52A1\u201D\u6216\u4E0B\u8F7D\u4E00\u4E2A\u6A21\u578B\u3002", "lend.docker_login": "Docker \u65E0\u6CD5\u4E0B\u8F7D\u955C\u50CF\uFF0C\u56E0\u4E3A\u5B83\u7684 Docker Hub \u767B\u5F55\u5DF2\u5931\u6548\u3002\u5728 Docker Desktop \u4E2D\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684\u8D26\u6237 \u2192 Sign out\uFF0C\u7136\u540E\u91CD\u65B0\u767B\u5F55\u6216\u4FDD\u6301\u672A\u767B\u5F55\u3002\u4E4B\u540E\u70B9\u51FB\u201C\u91CD\u65B0\u68C0\u67E5\u201D\u3002", "lend.off_hint": "\u51FA\u501F\u5DF2\u5173\u95ED\uFF1A\u8BF7\u5728\u4E0B\u65B9\u201C{rules}\u201D\u4E2D\u52FE\u9009\u201C{enabled}\u201D\u5E76\u70B9\u51FB\u201C{save}\u201D\u3002\uFF08\u6682\u505C / \u7EE7\u7EED\u53EA\u4F1A\u6682\u505C\u5DF2\u5F00\u542F\u7684\u51FA\u501F\u3002\uFF09", "lend.low_memory": "\u53EA\u63D0\u4F9B\u4E86 {mb} MB \u5185\u5B58\uFF1A\u80FD\u8FD0\u884C\u7684\u4EFB\u52A1\u5F88\u5C11\u3002\u8BF7\u5728\u201C{rules}\u201D\u4E2D\u5C06\u201C{memory}\u201D\u8BBE\u4E3A\u4F8B\u5982 4096\uFF08= 4 GB\uFF09\uFF0C\u7136\u540E\u70B9\u51FB\u201C{save}\u201D\u3002" } };
41
+ define_BITPULL_UI_I18N_default = { ar: { "lang.name": "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", "app.title": "BitPull", "locked.text": "\u0627\u0641\u062A\u062D \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 BitPull: \u0631\u0627\u0628\u0637\u0647\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0648\u0635\u0648\u0644.", "pill.online": "\u0645\u062A\u0635\u0644", "pill.offline": "\u063A\u064A\u0631 \u0645\u062A\u0635\u0644", "pill.direct": "\u0639\u0646\u0648\u0627\u0646 \u0645\u0628\u0627\u0634\u0631", "pill.relay_on": "\u0627\u0644\u0645\u064F\u0631\u062D\u0650\u0651\u0644 \u0645\u062A\u0635\u0644", "pill.relay_off": "\u0627\u0644\u0645\u064F\u0631\u062D\u0650\u0651\u0644 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644", "pill.cached": "{n} \u0646\u0633\u062E \u0645\u062E\u0632\u0646\u0629 \u0645\u0624\u0642\u062A\u064B\u0627", "net.title": "\u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0622\u0646", "net.online": "{n} \u062D\u0648\u0627\u0633\u064A\u0628 \u0645\u062A\u0635\u0644\u0629", "net.lending": "{n} \u062A\u064F\u0639\u064A\u0631 \u0627\u0644\u0622\u0646", "net.cpu": "{n} \u0623\u0646\u0648\u064A\u0629 CPU", "net.ram": "{n} GB \u0645\u0646 RAM", "net.gpu": "{n} GPU", "net.models": "{n} \u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A", "net.jobs": "{n} \u0645\u0647\u0627\u0645 \u0642\u064A\u062F \u0627\u0644\u062A\u0634\u063A\u064A\u0644", "credits.title": "\u0631\u0635\u064A\u062F \u0627\u0644\u0623\u0631\u0635\u062F\u0629", "credits.plan": "\u062E\u0637\u0629 {plan} \xB7 \u064A\u0645\u0643\u0646 \u0623\u0646 \u064A\u0646\u062E\u0641\u0636 \u062D\u062A\u0649 {n}", "plan.free": "\u0645\u062C\u0627\u0646\u064A\u0629", "plan.base": "\u0623\u0633\u0627\u0633\u064A\u0629", "plan.pro": "\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629", "buy.base": "\u0623\u0633\u0627\u0633\u064A\u0629 \u200E\u20AC4.50", "buy.pro": "\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629 \u200E\u20AC9.90", "buy.recharge": "\u0634\u062D\u0646 \u200E\u20AC5", "buy.ok": "\u0641\u064F\u062A\u062D\u062A \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "lend.title": "\u0625\u0639\u0627\u0631\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "lend.hint": "\u062A\u0639\u0645\u0644 \u0627\u0644\u0645\u0647\u0627\u0645 \u0645\u0634\u0641\u0631\u0629 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641 \u0641\u064A \u0628\u064A\u0626\u0627\u062A \u0645\u0639\u0632\u0648\u0644\u0629\u060C \u062F\u0648\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A\u0643. \u0648\u062A\u0643\u0633\u0628 \u0623\u0631\u0635\u062F\u0629.", "lend.state.off": "\u0645\u062A\u0648\u0642\u0641", "lend.state.waiting": "\u0641\u064A \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "lend.state.working": "\u064A\u0639\u0645\u0644", "lend.reason.lending_off": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u062A\u0648\u0642\u0641\u0629", "lend.reason.paused": "\u0645\u064F\u0639\u0644\u0651\u0642\u0629 \u0645\u0624\u0642\u062A\u064B\u0627", "lend.reason.outside_hours": "\u062E\u0627\u0631\u062C \u0633\u0627\u0639\u0627\u062A\u0643", "lend.reason.on_battery": "\u064A\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u0637\u0627\u0631\u064A\u0629", "lend.reason.computer_in_use": "\u0623\u0646\u062A \u062A\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "lend.reason.no_jobs": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0647\u0627\u0645 \u0641\u064A \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "lend.running": "\u064A\u0634\u063A\u0651\u0644 \u0645\u0647\u0645\u0629 {kind} \u0645\u0646\u0630 {time}", "lend.detail": "{reason} \xB7 {n} \u0645\u0647\u0627\u0645 \u0645\u0646\u062C\u0632\u0629 \xB7 \u064A\u0648\u0641\u0631 {cpus} CPU \u0648{ram} GB", "lend.detail.sandbox": "\u060C \u0628\u064A\u0626\u0629 \u0645\u0639\u0632\u0648\u0644\u0629 {name}", "lend.detail.models": "\u060C {n} \u0646\u0645\u0627\u0630\u062C", "lend.pause": "\u0625\u064A\u0642\u0627\u0641 \u0645\u0624\u0642\u062A", "lend.resume": "\u0627\u0633\u062A\u0626\u0646\u0627\u0641", "lend.paused_ok": "\u0623\u064F\u0648\u0642\u0641\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0624\u0642\u062A\u064B\u0627. \u0633\u064F\u0644\u0651\u0645\u062A \u0623\u064A \u0645\u0647\u0645\u0629 \u062C\u0627\u0631\u064A\u0629 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0622\u062E\u0631.", "lend.resumed_ok": "\u0627\u0633\u062A\u0624\u0646\u0641\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629.", "setup.title": "\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "setup.hint": "\u0645\u0627 \u064A\u062D\u062A\u0627\u062C\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0625\u0639\u0627\u0631\u0629. \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u0628\u0643\u0629 \u0644\u0627 \u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0634\u064A\u0621 \u0622\u062E\u0631. \u0628\u0631\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u062A\u0623\u062A\u064A \u0645\u0646 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064A\u0629\u060C \u0648\u0633\u064A\u0637\u0644\u0628 \u0645\u0646\u0643 \u0646\u0638\u0627\u0645\u0643 \u0627\u0644\u062A\u0623\u0643\u064A\u062F.", "setup.checking": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642\u2026", "setup.docker.help": "\u064A\u0634\u063A\u0651\u0644 \u0645\u0647\u0627\u0645 \u0627\u0644\u0622\u062E\u0631\u064A\u0646 \u0641\u064A \u0628\u064A\u0626\u0627\u062A \u0645\u0639\u0632\u0648\u0644\u0629. \u0645\u0637\u0644\u0648\u0628 \u0644\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A. \u0645\u062C\u0627\u0646\u064A \u0644\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u062E\u0635\u064A \u0648\u0627\u0644\u0634\u0631\u0643\u0627\u062A \u0627\u0644\u0635\u063A\u064A\u0631\u0629.", "setup.docker.download": "\u062A\u0646\u0632\u064A\u0644 Docker", "setup.docker.start": "\u062A\u0634\u063A\u064A\u0644 Docker", "setup.apple.title": "Apple Container (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)", "setup.apple.help": "\u0639\u0632\u0644 \u0623\u0642\u0648\u0649: \u0643\u0644 \u0645\u0647\u0645\u0629 \u0641\u064A \u062C\u0647\u0627\u0632\u0647\u0627 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A \u0627\u0644\u062E\u0627\u0635. \u0627\u062E\u062A\u064A\u0627\u0631\u064A\u061B Docker \u064A\u0643\u0641\u064A \u0644\u0644\u0628\u062F\u0621.", "setup.apple.get": "\u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 Apple Container", "setup.ollama.help": "\u064A\u0634\u063A\u0651\u0644 \u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u0641\u062A\u0648\u062D\u0629 (Qwen \u0648Llama \u0648Mistral\u2026). \u0645\u0637\u0644\u0648\u0628 \u0644\u0625\u0639\u0627\u0631\u0629 \u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A.", "setup.ollama.download": "\u062A\u0646\u0632\u064A\u0644 Ollama", "setup.ollama.start": "\u062A\u0634\u063A\u064A\u0644 Ollama", "setup.model.title": "\u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A", "setup.model.help": "\u0627\u0644\u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u064A \u064A\u0642\u062F\u0645\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u0627\u0644\u0645\u0642\u062A\u0631\u062D \u0644\u0630\u0627\u0643\u0631\u0629 {ram} GB: {model}.", "setup.model.download": "\u062A\u0646\u0632\u064A\u0644 {model} ({size} GB)", "setup.model.none": "\u0644\u0627 \u0634\u064A\u0621 \u0628\u0639\u062F", "setup.model.need_ollama": "\u062B\u0628\u0651\u062A Ollama \u0648\u0634\u063A\u0651\u0644\u0647 \u0623\u0648\u0644\u064B\u0627", "setup.nvidia.title": "\u062A\u0639\u0631\u064A\u0641\u0627\u062A NVIDIA GPU (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)", "setup.nvidia.help": "\u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0637\u0627\u0642\u0629 \u0631\u0633\u0648\u0645\u0627\u062A NVIDIA \u062A\u0631\u064A\u062F \u0625\u0639\u0627\u0631\u062A\u0647\u0627.", "setup.nvidia.get": "\u0627\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u062A\u0639\u0631\u064A\u0641\u0627\u062A NVIDIA", "setup.status.running": "\u0645\u062B\u0628\u0651\u062A \u0648\u064A\u0639\u0645\u0644", "setup.status.installed": "\u0645\u062B\u0628\u0651\u062A", "setup.status.stopped": "\u0645\u062B\u0628\u0651\u062A\u060C \u0644\u0627 \u064A\u0639\u0645\u0644", "setup.status.missing": "\u063A\u064A\u0631 \u0645\u062B\u0628\u0651\u062A", "setup.status.found": "\u0645\u0648\u062C\u0648\u062F", "setup.status.not_found": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F", "setup.terminal": "\u0634\u063A\u0651\u0644 \u0641\u064A \u0627\u0644\u0637\u0631\u0641\u064A\u0629:", "setup.done": "\u062A\u0645", "setup.opened": "\u062A\u0645: \u0641\u064F\u062A\u062D {file}\u060C \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647", "setup.recheck": "\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627", "setup.ok.download": "\u0628\u062F\u0623 \u0627\u0644\u062A\u0646\u0632\u064A\u0644. \u0633\u064A\u0641\u062A\u062D \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u0639\u0646\u062F \u0627\u0644\u0627\u0646\u062A\u0647\u0627\u0621: \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647.", "setup.ok.start": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0634\u063A\u064A\u0644\u2026 \u0642\u062F \u064A\u0633\u062A\u063A\u0631\u0642 \u0630\u0644\u0643 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629. \u062A\u062A\u062D\u062F\u062B \u0647\u0630\u0647 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627.", "setup.ok.pull": "\u0628\u062F\u0623 \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0646\u0645\u0648\u0630\u062C. \u064A\u0638\u0647\u0631 \u0627\u0644\u062A\u0642\u062F\u0645 \u0641\u064A \u0627\u0644\u0623\u0639\u0644\u0649.", "setup.ok.page": "\u0641\u064F\u062A\u062D\u062A \u0627\u0644\u0635\u0641\u062D\u0629 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "setup.ok.recheck": "\u062A\u0645 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627.", "rules.title": "\u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629", "rules.enabled": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629", "rules.enabled.help": "\u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0631\u0626\u064A\u0633\u064A. \u0639\u0646\u062F \u0625\u064A\u0642\u0627\u0641\u0647\u060C \u0644\u0627 \u064A\u0634\u063A\u0651\u0644 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0647\u0627\u0645 \u0627\u0644\u0622\u062E\u0631\u064A\u0646 \u0623\u0628\u062F\u064B\u0627. \u0648\u064A\u0638\u0644 \u0628\u0625\u0645\u0643\u0627\u0646\u0643 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0634\u0628\u0643\u0629 \u0628\u0646\u0641\u0633\u0643.", "rules.cpus": "\u0623\u0642\u0635\u0649 \u0639\u062F\u062F CPU", "rules.cpus.help": "\u0623\u0642\u0635\u0649 \u0639\u062F\u062F \u0645\u0646 \u0623\u0646\u0648\u064A\u0629 \u0627\u0644\u0645\u0639\u0627\u0644\u062C \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0627\u0644\u0645\u0647\u0645\u0629. \u0645\u062B\u0627\u0644: \u0639\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0628\u06408 \u0623\u0646\u0648\u064A\u0629\u060C \u0627\u0644\u0642\u064A\u0645\u0629 2 \u062A\u062A\u0631\u0643 \u0644\u0643 6 \u0623\u0646\u0648\u064A\u0629 \u062D\u0631\u0629.", "rules.memory": "\u0623\u0642\u0635\u0649 \u0630\u0627\u0643\u0631\u0629 (MB)", "rules.memory.help": "\u0630\u0627\u0643\u0631\u0629 RAM \u0627\u0644\u062A\u064A \u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0633\u062A\u062E\u062F\u0645\u0647\u0627 \u0627\u0644\u0645\u0647\u0645\u0629\u060C \u0628\u0627\u0644\u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A (1024 MB = 1 GB). \u0644\u0627 \u064A\u0639\u0631\u0636 BitPull \u0623\u0628\u062F\u064B\u0627 \u0623\u0643\u062B\u0631 \u0645\u0646 \u0646\u0635\u0641 \u0630\u0627\u0643\u0631\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "rules.gpu": "GPU", "rules.gpu.none": "\u0644\u0627 \u0634\u064A\u0621", "rules.gpu.consumer": "\u0627\u0633\u062A\u0647\u0644\u0627\u0643\u064A\u0629 (8\u201312 GB)", "rules.gpu.high": "\u0645\u062A\u0642\u062F\u0645\u0629 (16\u201324 GB)", "rules.gpu.datacenter": "\u0645\u0631\u0627\u0643\u0632 \u0628\u064A\u0627\u0646\u0627\u062A (40 GB+)", "rules.gpu.help": "\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0631\u0633\u0648\u0645\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0639\u064A\u0631\u0647\u0627\u060C \u062D\u0633\u0628 \u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u0641\u064A\u062F\u064A\u0648. \u0627\u062A\u0631\u0643 \xAB\u0644\u0627 \u0634\u064A\u0621\xBB \u0625\u0646 \u0644\u0645 \u064A\u0643\u0646 \u0644\u062F\u064A\u0643 GPU \u0645\u062E\u0635\u0635 \u0623\u0648 \u0644\u0627 \u062A\u0631\u064A\u062F \u0625\u0639\u0627\u0631\u062A\u0647. \u0627\u0644\u0640GPU \u064A\u0643\u0633\u0628 \u0623\u0643\u062B\u0631 \u0627\u0644\u0623\u0631\u0635\u062F\u0629.", "rules.containers": "\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A", "rules.containers.help": "\u062A\u0634\u063A\u064A\u0644 \u0639\u0645\u0644\u064A\u0627\u062A \u0627\u0644\u0628\u0646\u0627\u0621 \u0648\u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631\u0627\u062A \u0648\u0627\u0644\u0633\u0643\u0631\u0628\u062A\u0627\u062A \u0644\u0644\u0622\u062E\u0631\u064A\u0646 \u0641\u064A \u0628\u064A\u0626\u0629 \u0645\u0639\u0632\u0648\u0644\u0629 \u062F\u0648\u0646 \u0625\u0646\u062A\u0631\u0646\u062A \u0648\u062F\u0648\u0646 \u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A\u0643. \u064A\u062A\u0637\u0644\u0628 Docker (\u0623\u0648 Apple Container): \u0631\u0627\u062C\u0639 \xAB\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628\xBB.", "rules.models": "\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 (Ollama)", "rules.models.help": "\u0627\u0644\u0631\u062F \u0639\u0644\u0649 \u0637\u0644\u0628\u0627\u062A \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0628\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0627\u0644\u0645\u062B\u0628\u062A\u0629 \u0641\u064A Ollama \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u064A\u062A\u0637\u0644\u0628 Ollama \u0648\u0646\u0645\u0648\u0630\u062C\u064B\u0627 \u0648\u0627\u062D\u062F\u064B\u0627 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.", "rules.idle": "\u0641\u0642\u0637 \u0628\u0639\u062F \u062F\u0642\u0627\u0626\u0642 \u0645\u0646 \u0627\u0644\u062E\u0645\u0648\u0644", "rules.idle.help": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0644\u0645 \u062A\u0644\u0645\u0633 \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D \u0623\u0648 \u0627\u0644\u0641\u0623\u0631\u0629 \u0637\u0648\u0627\u0644 \u0647\u0630\u0627 \u0627\u0644\u0639\u062F\u062F \u0645\u0646 \u0627\u0644\u062F\u0642\u0627\u0626\u0642. 0 = \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u062D\u062A\u0649 \u0623\u062B\u0646\u0627\u0621 \u0639\u0645\u0644\u0643.", "rules.ac": "\u0641\u0642\u0637 \u0639\u0646\u062F \u0627\u0644\u062A\u0648\u0635\u064A\u0644 \u0628\u0627\u0644\u0643\u0647\u0631\u0628\u0627\u0621", "rules.ac.help": "\u0639\u0644\u0649 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0627\u0644\u0645\u062D\u0645\u0648\u0644\u060C \u062A\u062A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0639\u0646\u062F \u0627\u0644\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u0637\u0627\u0631\u064A\u0629\u060C \u0641\u0644\u0627 \u062A\u0633\u062A\u0646\u0632\u0641\u0647\u0627 \u0623\u0628\u062F\u064B\u0627.", "rules.hours": "\u0641\u0642\u0637 \u0645\u0646 / \u0625\u0644\u0649 \u0633\u0627\u0639\u0629 (\u0641\u0627\u0631\u063A = \u062F\u0627\u0626\u0645\u064B\u0627)", "rules.hours.help": "\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0642\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0641\u062A\u0631\u0629\u060C \u0628\u0646\u0638\u0627\u0645 24 \u0633\u0627\u0639\u0629. \u0645\u062B\u0627\u0644: 22 \u06488 = \u0645\u0646 10 \u0645\u0633\u0627\u0621\u064B \u0625\u0644\u0649 8 \u0635\u0628\u0627\u062D\u064B\u0627. \u0627\u062A\u0631\u0643 \u0627\u0644\u062D\u0642\u0644\u064A\u0646 \u0641\u0627\u0631\u063A\u064A\u0646 \u0644\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u064A \u0623\u064A \u0633\u0627\u0639\u0629.", "rules.cache": "\u0646\u0633\u062E \u0645\u062E\u0632\u0646\u0629 \u0645\u0646 \u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0622\u062E\u0631\u064A\u0646", "rules.cache.help": "\u0639\u062F\u062F \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0639\u0627\u0645\u0629 \u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646 \u0622\u062E\u0631\u064A\u0646 \u0627\u0644\u062A\u064A \u064A\u062D\u062A\u0641\u0638 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0646\u0633\u062E\u0629 \u0645\u0646\u0647\u0627\u060C \u0644\u062A\u0628\u0642\u0649 \u0645\u062A\u0627\u062D\u0629 \u0639\u0646\u062F\u0645\u0627 \u064A\u0643\u0648\u0646 \u0623\u0635\u062D\u0627\u0628\u0647\u0627 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644\u064A\u0646. \u064A\u0633\u062A\u062E\u062F\u0645 \u0645\u0633\u0627\u062D\u0629 \u0642\u0631\u0635 \u0635\u063A\u064A\u0631\u0629 \u0648\u064A\u0643\u0633\u0628 \u0623\u0631\u0635\u062F\u0629. 0 = \u0644\u0627 \u0634\u064A\u0621.", "rules.save": "\u062D\u0641\u0638 \u0627\u0644\u0642\u0648\u0627\u0639\u062F", "rules.saved": "\u062D\u064F\u0641\u0638\u062A \u0627\u0644\u0642\u0648\u0627\u0639\u062F. \u062A\u064F\u0637\u0628\u0651\u0642 \u062E\u0644\u0627\u0644 \u062B\u0648\u0627\u0646\u064D.", "rules.hours_both": "\u0627\u0645\u0644\u0623 \u0627\u0644\u0633\u0627\u0639\u062A\u064A\u0646\u060C \u0623\u0648 \u0627\u062A\u0631\u0643\u0647\u0645\u0627 \u0641\u0627\u0631\u063A\u062A\u064A\u0646 \u0644\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u064A \u0623\u064A \u0633\u0627\u0639\u0629.", "folders.title": "\u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627", "folders.hint": "\u064A\u0642\u0631\u0623 BitPull \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0641\u0642\u0637. \u0644\u0646\u0634\u0631 \u0623\u062D\u062F\u0647\u0627 \u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0645\u0644\u0641 bitpull.json \u0645\u0643\u062A\u0645\u0644.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u062A\u0635\u0631\u064A\u062D", "folders.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0644\u062F\u0627\u062A \u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627.", "folders.draft": "\u0645\u0633\u0648\u062F\u0629", "folders.publish": "\u0646\u0634\u0631", "folders.remove": "\u0625\u0632\u0627\u0644\u0629", "folders.need_path": "\u0627\u0643\u062A\u0628 \u0623\u0648\u0644\u064B\u0627 \u0627\u0644\u0645\u0633\u0627\u0631 \u0627\u0644\u0643\u0627\u0645\u0644 \u0644\u0645\u062C\u0644\u062F\u060C \u0645\u062B\u0644 /Users/you/projects/my-library.", "folders.added": "\u062A\u0645 \u0627\u0644\u062A\u0635\u0631\u064A\u062D \u0628\u0627\u0644\u0645\u062C\u0644\u062F.", "folders.removed": "\u0623\u064F\u0632\u064A\u0644 \u0627\u0644\u0645\u062C\u0644\u062F. \u0644\u0645 \u064A\u0639\u062F BitPull \u064A\u0642\u0631\u0624\u0647.", "folders.drafted": "\u0627\u0644\u0645\u0633\u0648\u062F\u0629 \u062C\u0627\u0647\u0632\u0629: \u0639\u064F\u062B\u0631 \u0639\u0644\u0649 {n} \u0645\u0644\u0641\u0627\u062A. \u062F\u0639 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062F\u064A\u0643 \u064A\u0645\u0644\u0623 \u0627\u0644\u0645\u0644\u062E\u0635 \u0648\u0627\u0644\u0623\u0648\u0635\u0627\u0641 (\u0623\u062F\u0627\u0629 prepare_publish)\u060C \u062B\u0645 \u0627\u0636\u063A\u0637 \xAB\u0646\u0634\u0631\xBB.", "folders.published": "\u0646\u064F\u0634\u0631 \xAB{name}\xBB \u0645\u0639 {n} \u0645\u0644\u0641\u0627\u062A.", "folders.secrets_in": "\u0639\u064F\u062B\u0631 \u0639\u0644\u064A\u0647 \u0641\u064A: {where}", "folders.line": "{file} \u0627\u0644\u0633\u0637\u0631 {line}", "repos.title": "\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A\u0643 \u0627\u0644\u0645\u0646\u0634\u0648\u0631\u0629", "repos.hint": "\u062A\u062A\u062D\u062F\u062B \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u0639\u0646\u062F \u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0645\u0644\u0641\u0627\u062A (\u0643\u0644 5 \u062F\u0642\u0627\u0626\u0642).", "repos.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0645\u0646\u0634\u0648\u0631\u0629.", "repos.withdraw": "\u0633\u062D\u0628", "repos.withdrawn": "\u0633\u064F\u062D\u0628 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639 \u0645\u0646 \u0627\u0644\u0634\u0628\u0643\u0629.", "ask.title": "\u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629", "ask.offers": "\u064A\u0642\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628: {models}.", "ask.offers_none": "\u0644\u0627 \u0646\u0645\u0627\u0630\u062C (\u062B\u0628\u0651\u062A Ollama \u0644\u062A\u0642\u062F\u064A\u0645 \u0628\u0639\u0636\u0647\u0627)", "ask.placeholder": "\u0627\u0633\u0623\u0644 \u0646\u0645\u0648\u0630\u062C\u064B\u0627 \u0645\u0641\u062A\u0648\u062D\u064B\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629\u2026", "ask.small": "\u0635\u063A\u064A\u0631", "ask.medium": "\u0645\u062A\u0648\u0633\u0637", "ask.large": "\u0643\u0628\u064A\u0631", "ask.button": "\u0627\u0633\u0623\u0644", "ask.empty": "\u0627\u0643\u062A\u0628 \u0633\u0624\u0627\u0644\u064B\u0627 \u0623\u0648\u0644\u064B\u0627.", "ask.waiting": "\u062C\u0627\u0631\u064D \u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u062D\u0627\u0633\u0648\u0628 \u0644\u062F\u064A\u0647 \u0627\u0644\u0646\u0645\u0648\u0630\u062C\u2026 \u0642\u062F \u064A\u0633\u062A\u063A\u0631\u0642 \u0630\u0644\u0643 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629.", "ask.credits": "{n} \u0623\u0631\u0635\u062F\u0629", "tools.title": "\u0627\u0631\u0628\u0637 \u0623\u062F\u0648\u0627\u062A\u0643", "tools.mcp": "\u0644\u0640Claude Code \u0648\u0639\u0645\u0644\u0627\u0621 MCP\u060C \u0634\u063A\u0651\u0644 \u0641\u064A \u0627\u0644\u0637\u0631\u0641\u064A\u0629:", "tools.openai": "\u0644\u0644\u0623\u062F\u0648\u0627\u062A \u0627\u0644\u0645\u062A\u0648\u0627\u0641\u0642\u0629 \u0645\u0639 OpenAI: \u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u0623\u0633\u0627\u0633\u064A", "tools.key": "\u0645\u0641\u062A\u0627\u062D API", "tools.show": "\u0625\u0638\u0647\u0627\u0631", "jobs.title": "\u0645\u0647\u0627\u0645\u0643 \u0627\u0644\u0623\u062E\u064A\u0631\u0629", "jobs.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0647\u0627\u0645.", "jobs.model": "\u0646\u0645\u0648\u0630\u062C", "jobs.container": "\u062D\u0627\u0648\u064A\u0629", "jobs.status.queued": "\u0641\u064A \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631", "jobs.status.running": "\u0642\u064A\u062F \u0627\u0644\u062A\u0634\u063A\u064A\u0644", "jobs.status.done": "\u0645\u0643\u062A\u0645\u0644\u0629", "jobs.status.failed": "\u0641\u0634\u0644\u062A", "jobs.status.canceled": "\u0623\u064F\u0644\u063A\u064A\u062A", "jobs.cost": "{n} \u0623\u0631\u0635\u062F\u0629", working: "\u062C\u0627\u0631\u064D \u0627\u0644\u0639\u0645\u0644\u2026", "err.agent_down": "BitPull \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0627 \u064A\u0633\u062A\u062C\u064A\u0628. \u0633\u064A\u064F\u0639\u0627\u062F \u062A\u0634\u063A\u064A\u0644\u0647 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 \u062E\u0644\u0627\u0644 30 \u062B\u0627\u0646\u064A\u0629: \u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0628\u0639\u062F \u0642\u0644\u064A\u0644.", "err.server": "\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u062E\u0627\u062F\u0645 BitPull. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u062A\u0635\u0627\u0644\u0643 \u0628\u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627.", "err.session": "\u0627\u0646\u062A\u0647\u062A \u062C\u0644\u0633\u0629 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0647\u0630\u0647. \u0623\u0639\u062F \u0641\u062A\u062D\u0647\u0627 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 BitPull.", "err.billing": "\u0627\u0644\u0645\u062F\u0641\u0648\u0639\u0627\u062A \u063A\u064A\u0631 \u0645\u0641\u0639\u0651\u0644\u0629 \u0628\u0639\u062F.", "err.no_folder": "\u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0645\u0633\u0627\u0631.", "err.not_folder": "\u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u0627\u0631 \u0645\u0644\u0641 \u0648\u0644\u064A\u0633 \u0645\u062C\u0644\u062F\u064B\u0627.", "err.credits": "\u0627\u0644\u0623\u0631\u0635\u062F\u0629 \u063A\u064A\u0631 \u0643\u0627\u0641\u064A\u0629.", "err.device": "\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u063A\u064A\u0631 \u0645\u062A\u0635\u0644 \u0628\u0639\u062F. \u0623\u0628\u0642\u0650 \u062A\u0637\u0628\u064A\u0642 BitPull \u0645\u0641\u062A\u0648\u062D\u064B\u0627 \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0628\u0639\u062F \u062F\u0642\u064A\u0642\u0629.", "err.no_model": "\u0644\u0627 \u064A\u0648\u062C\u062F \u062D\u0627\u0633\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u064A\u0642\u062F\u0645 \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u062D\u0627\u0644\u064A\u064B\u0627. \u062D\u0627\u0648\u0644 \u0644\u0627\u062D\u0642\u064B\u0627.", "err.invalid": "\u0628\u0639\u0636 \u0627\u0644\u0642\u064A\u0645 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062D\u0642\u0648\u0644 \u0648\u062D\u0627\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627.", "tip.lang": "\u0644\u063A\u0629 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u064A\u064F\u062D\u0641\u0638 \u0627\u062E\u062A\u064A\u0627\u0631\u0643 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "tip.buy.base": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0644\u062E\u0637\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064A\u0629: \u200E\u20AC4.50 \u0634\u0647\u0631\u064A\u064B\u0627 \u0645\u0639 80 \u0631\u0635\u064A\u062F\u064B\u0627 \u0643\u0644 \u0634\u0647\u0631. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0625\u0644\u063A\u0627\u0621 \u0641\u064A \u0623\u064A \u0648\u0642\u062A.", "tip.buy.pro": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0644\u062E\u0637\u0629 \u0627\u0644\u0627\u062D\u062A\u0631\u0627\u0641\u064A\u0629: \u200E\u20AC9.90 \u0634\u0647\u0631\u064A\u064B\u0627 \u0645\u0639 200 \u0631\u0635\u064A\u062F \u0643\u0644 \u0634\u0647\u0631\u060C \u0648\u0623\u0639\u0644\u0649 \u0623\u0648\u0644\u0648\u064A\u0629 \u0648\u062C\u0645\u064A\u0639 \u0648\u062D\u062F\u0627\u062A GPU. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0625\u0644\u063A\u0627\u0621 \u0641\u064A \u0623\u064A \u0648\u0642\u062A.", "tip.buy.recharge": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 \u0627\u0644\u062F\u0641\u0639 \u0627\u0644\u0622\u0645\u0646\u0629 \u0644\u0634\u0631\u0627\u0621 80 \u0631\u0635\u064A\u062F\u064B\u0627 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0645\u0642\u0627\u0628\u0644 \u200E\u20AC5. \u0644\u0627 \u062A\u0646\u062A\u0647\u064A \u0635\u0644\u0627\u062D\u064A\u062A\u0647\u0627 \u0623\u0628\u062F\u064B\u0627.", "tip.pause": "\u064A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0641\u0648\u0631\u064B\u0627. \u062A\u064F\u0633\u0644\u064E\u0651\u0645 \u0623\u064A \u0645\u0647\u0645\u0629 \u062C\u0627\u0631\u064A\u0629 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0644\u062D\u0638\u0629 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0622\u062E\u0631. \u0627\u0636\u063A\u0637 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0644\u0627\u0633\u062A\u0626\u0646\u0627\u0641.", "tip.resume": "\u064A\u0633\u062A\u0623\u0646\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0648\u0641\u0642 \u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643.", "tip.rules.save": "\u064A\u062D\u0641\u0638 \u0642\u0648\u0627\u0639\u062F \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0623\u0639\u0644\u0627\u0647. \u062A\u064F\u0637\u0628\u064E\u0651\u0642 \u062E\u0644\u0627\u0644 \u062B\u0648\u0627\u0646\u064D \u0642\u0644\u064A\u0644\u0629\u061B \u0648\u0644\u0627 \u064A\u062A\u063A\u064A\u0631 \u0634\u064A\u0621 \u062D\u062A\u0649 \u062A\u0636\u063A\u0637 \u0647\u0630\u0627 \u0627\u0644\u0632\u0631.", "tip.folder.add": "\u064A\u0633\u0645\u062D \u0644\u0640 BitPull \u0628\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u062C\u0644\u062F \u0627\u0644\u0645\u0643\u062A\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631. \u0644\u0627 \u062A\u064F\u0642\u0631\u0623 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u062E\u0627\u0631\u062C \u0627\u0644\u0645\u062C\u0644\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0631\u0651\u062D \u0628\u0647\u0627 \u0648\u0644\u0627 \u062A\u064F\u0634\u0627\u0631\u0643 \u0623\u0628\u062F\u064B\u0627.", "tip.folder.draft": "\u064A\u064F\u0646\u0634\u0626 bitpull.json \u0641\u064A \u0627\u0644\u0645\u062C\u0644\u062F: \u0642\u0627\u0626\u0645\u0629 \u0628\u0645\u0644\u0641\u0627\u062A\u0647 \u0645\u0639 \u0623\u0648\u0635\u0627\u0641 \u0641\u0627\u0631\u063A\u0629 \u0644\u064A\u0643\u0645\u0644\u0647\u0627 \u0645\u0633\u0627\u0639\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. \u0644\u0627 \u064A\u064F\u0646\u0634\u0631 \u0634\u064A\u0621 \u0628\u0639\u062F.", "tip.folder.publish": "\u064A\u0634\u0627\u0631\u0643 \u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0643\u0645\u0633\u062A\u0648\u062F\u0639 \u0639\u0627\u0645 \u0645\u0648\u0642\u0651\u0639 \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628. \u064A\u064F\u0645\u0646\u0639 \u0627\u0644\u0646\u0634\u0631 \u0625\u0630\u0627 \u0648\u064F\u062C\u062F\u062A \u0645\u0641\u0627\u062A\u064A\u062D \u0623\u0648 \u0643\u0644\u0645\u0627\u062A \u0645\u0631\u0648\u0631 \u0641\u064A \u0627\u0644\u0645\u0644\u0641\u0627\u062A.", "tip.folder.remove": "\u064A\u062A\u0648\u0642\u0641 BitPull \u0639\u0646 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0627 \u0627\u0644\u0645\u062C\u0644\u062F. \u062A\u0628\u0642\u0649 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639\u0627\u062A \u0627\u0644\u0645\u0646\u0634\u0648\u0631\u0629 \u0645\u0646\u0647 \u0645\u062A\u0627\u062D\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u062D\u062A\u0649 \u062A\u0633\u062D\u0628\u0647\u0627.", "tip.repo.withdraw": "\u064A\u0632\u064A\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u062A\u0648\u062F\u0639 \u0645\u0646 \u0627\u0644\u0634\u0628\u0643\u0629. \u0644\u0646 \u064A\u062A\u0645\u0643\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0648\u0646 \u0627\u0644\u0622\u062E\u0631\u0648\u0646 \u0645\u0646 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u064A\u0647 \u0623\u0648 \u062A\u0646\u0632\u064A\u0644\u0647 \u0628\u0639\u062F \u0627\u0644\u0622\u0646. \u062A\u0628\u0642\u0649 \u0645\u0644\u0641\u0627\u062A\u0643 \u0639\u0644\u0649 \u062D\u0627\u0633\u0648\u0628\u0643.", "tip.ask": "\u064A\u0631\u0633\u0644 \u0633\u0624\u0627\u0644\u0643 \u0645\u0634\u0641\u0631\u064B\u0627 \u0645\u0646 \u0637\u0631\u0641 \u0625\u0644\u0649 \u0637\u0631\u0641 \u0625\u0644\u0649 \u062D\u0627\u0633\u0648\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u064A\u0634\u063A\u0651\u0644 \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u0641\u062A\u0648\u062D\u064B\u0627. \u064A\u0643\u0644\u0651\u0641 \u0628\u0636\u0639\u0629 \u0623\u0631\u0635\u062F\u0629.", "tip.tier": "\u062D\u062C\u0645 \u0627\u0644\u0646\u0645\u0648\u0630\u062C: \u0627\u0644\u0635\u063A\u064A\u0631 \u0633\u0631\u064A\u0639 \u0648\u0631\u062E\u064A\u0635\u060C \u0648\u0627\u0644\u0643\u0628\u064A\u0631 \u0623\u0630\u0643\u0649 \u0648\u064A\u0643\u0644\u0651\u0641 \u0623\u0631\u0635\u062F\u0629 \u0623\u0643\u062B\u0631.", "tip.show_key": "\u064A\u0639\u0631\u0636 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0630\u064A \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0623\u062F\u0648\u0627\u062A \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u062A\u0648\u0627\u0635\u0644 \u0645\u0639 BitPull. \u0644\u0627 \u062A\u0634\u0627\u0631\u0643\u0647 \u0645\u0639 \u0623\u062D\u062F.", "tip.setup.download": "\u064A\u0646\u0632\u0651\u0644 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0631\u0633\u0645\u064A \u0644\u0640 {name} \u0644\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0625\u0644\u0649 \u0645\u062C\u0644\u062F \u0627\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0648\u064A\u0641\u062A\u062D\u0647. \u0627\u062A\u0628\u0639 \u062E\u0637\u0648\u0627\u062A\u0647 \u0644\u0625\u0643\u0645\u0627\u0644 \u0627\u0644\u062A\u062B\u0628\u064A\u062A.", "tip.setup.start": "\u064A\u0634\u063A\u0651\u0644 {name}\u060C \u0648\u0647\u0648 \u0645\u062B\u0628\u0651\u062A \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0643\u0646\u0647 \u0644\u0627 \u064A\u0639\u0645\u0644.", "tip.setup.pull": "\u064A\u0646\u0632\u0651\u0644 \u0646\u0645\u0648\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u200F{model} \u200F({size} GB) \u0625\u0644\u0649 Ollama\u060C \u0644\u064A\u062A\u0645\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0646 \u062A\u0642\u062F\u064A\u0645\u0647 \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "tip.setup.open": "\u064A\u0641\u062A\u062D \u0635\u0641\u062D\u0629 {name} \u0627\u0644\u0631\u0633\u0645\u064A\u0629 \u0641\u064A \u0645\u062A\u0635\u0641\u062D\u0643.", "tip.setup.recheck": "\u064A\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627 \u0645\u0645\u0627 \u0647\u0648 \u0645\u062B\u0628\u0651\u062A \u0648\u064A\u0639\u0645\u0644 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628.", "update.title": "\u062A\u062D\u062F\u064A\u062B\u0627\u062A \u0627\u0644\u062A\u0637\u0628\u064A\u0642", "update.current": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0645\u062B\u0628\u0651\u062A: {v}", "update.latest": "\u0623\u062D\u062F\u062B \u0625\u0635\u062F\u0627\u0631: {v}", "update.button": "\u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A", "update.install": "\u062B\u0628\u0651\u062A \u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0627\u0644\u0622\u0646", "update.available": "\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0645\u062A\u0627\u062D.", "update.not_in_app": "\u064A\u062B\u0628\u0651\u062A \u062A\u0637\u0628\u064A\u0642 BitPull \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A. \u0627\u0641\u062A\u062D \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645 \u0647\u0630\u0647 \u0645\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0644\u062A\u062D\u062F\u064A\u062B.", "update.state.requested": "\u062C\u0627\u0631\u064D \u0637\u0644\u0628 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642\u2026", "update.state.checking": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A\u2026", "update.state.up_to_date": "\u0644\u062F\u064A\u0643 \u0623\u062D\u062F\u062B \u0625\u0635\u062F\u0627\u0631.", "update.state.installing": "\u062C\u0627\u0631\u064D \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v} \u0648\u062A\u062B\u0628\u064A\u062A\u0647\u2026 \u0633\u064A\u064F\u0639\u0627\u062F \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627.", "update.state.restarting": "\u062C\u0627\u0631\u064D \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0634\u063A\u064A\u0644 \u0628\u0627\u0644\u0625\u0635\u062F\u0627\u0631 {v}\u2026", "update.state.error": "\u0644\u0645 \u064A\u0646\u062C\u062D \u0627\u0644\u062A\u062D\u062F\u064A\u062B: {msg}. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627.", "tip.update": "\u064A\u062A\u062D\u0642\u0642 \u0645\u0646 \u0648\u062C\u0648\u062F \u0625\u0635\u062F\u0627\u0631 \u0623\u062D\u062F\u062B \u0645\u0646 BitPull. \u0625\u0646 \u0648\u064F\u062C\u062F\u060C \u064A\u0646\u0632\u0651\u0644\u0647 \u0648\u064A\u062A\u062D\u0642\u0642 \u0645\u0646 \u062A\u0648\u0642\u064A\u0639\u0647 \u0648\u064A\u062B\u0628\u0651\u062A\u0647 \u0648\u064A\u0639\u064A\u062F \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u062A\u062A\u0648\u0642\u0641 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0644\u0628\u0636\u0639 \u062B\u0648\u0627\u0646\u064D.", "tools.hint": "\u062F\u0639 \u0645\u0633\u0627\u0639\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062F\u064A\u0643 \u064A\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u0634\u064A\u0641\u0631\u0629 \u0627\u0644\u0645\u0634\u062A\u0631\u0643\u0629 \u0648\u064A\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0645\u0641\u062A\u0648\u062D\u0629 \u0648\u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629. \u0627\u062E\u062A\u0631 \u0623\u062F\u0627\u062A\u0643:", "tools.connect": "\u0627\u0631\u0628\u0637", "tools.connected": "\u0645\u0631\u062A\u0628\u0637", "tools.copy": "\u0627\u0646\u0633\u062E", "tools.copied": "\u062A\u0645 \u0627\u0644\u0646\u0633\u062E.", "tools.installed": "\u0645\u062B\u0628\u0651\u062A", "tools.not_found": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "tools.done": "\u062A\u0645. \u0623\u0639\u062F \u062A\u0634\u063A\u064A\u0644 {name} \u0644\u062A\u0628\u062F\u0623 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 BitPull.", "tools.manual": "\u0644\u0625\u0636\u0627\u0641\u062A\u0647 \u064A\u062F\u0648\u064A\u064B\u0627:", "tools.config_invalid": "\u0645\u0644\u0641 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {name} \u0644\u064A\u0633 JSON \u0635\u0627\u0644\u062D\u064B\u0627\u060C \u0644\u0630\u0627 \u0644\u0645 \u064A\u0644\u0645\u0633\u0647 BitPull. \u0623\u0635\u0644\u062D \u0627\u0644\u0645\u0644\u0641 \u0623\u0648 \u0623\u0636\u0641 BitPull \u064A\u062F\u0648\u064A\u064B\u0627 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \xAB\u0627\u0646\u0633\u062E\xBB.", "tip.tools.connect": "\u064A\u0636\u064A\u0641 BitPull \u0625\u0644\u0649 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {name} \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627. \u062A\u064F\u062D\u0641\u0638 \u0646\u0633\u062E\u0629 \u0627\u062D\u062A\u064A\u0627\u0637\u064A\u0629 \u0645\u0646 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u062C\u0627\u0646\u0628\u0647\u0627.", "tip.tools.copy": "\u064A\u0646\u0633\u062E \u0627\u0644\u0623\u0645\u0631 \u0623\u0648 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629\u060C \u0644\u062A\u0636\u064A\u0641 BitPull \u0625\u0644\u0649 {name} \u0628\u0646\u0641\u0633\u0643.", "models.title": "\u0646\u0645\u0627\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u0644\u0645\u0634\u0627\u0631\u0643\u0629", "models.hint": "\u0646\u0645\u0627\u0630\u062C \u0645\u0641\u062A\u0648\u062D\u0629 \u0645\u0646 \u0643\u0644 \u0627\u0644\u0623\u0646\u0648\u0627\u0639 \u064A\u0645\u0643\u0646 \u0644\u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0625\u0639\u0627\u0631\u062A\u0647\u0627. \u0644\u0627 \u062A\u064F\u0639\u0631\u0636 \u0625\u0644\u0627 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u062A\u064A \u062A\u0633\u0645\u062D \u0631\u062E\u0635\u062A\u0647\u0627 \u0628\u062A\u0642\u062F\u064A\u0645\u0647\u0627 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u062A\u064F\u0639\u0631\u0636 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0627\u0644\u062A\u064A \u0646\u0632\u0651\u0644\u062A\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0645\u0627 \u062F\u0627\u0645\u062A \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629.", "models.engine.title": "\u0645\u062D\u0631\u0643 \u0627\u0644\u0635\u0648\u0631 \u0648\u0627\u0644\u0635\u0648\u062A \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649", "models.engine.help": "Lemonade (\u0645\u0641\u062A\u0648\u062D \u0627\u0644\u0645\u0635\u062F\u0631): \u062A\u0648\u0644\u064A\u062F \u0627\u0644\u0635\u0648\u0631\u060C \u0648\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0643\u0644\u0627\u0645 \u0625\u0644\u0649 \u0646\u0635\u060C \u0648\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0643\u0644\u0627\u0645\u060C \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649\u060C \u0648\u0625\u0639\u0627\u062F\u0629 \u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0645\u0633\u062A\u0646\u062F\u0627\u062A\u060C \u0648\u062A\u0643\u0628\u064A\u0631 \u0627\u0644\u0635\u0648\u0631. \u064A\u064F\u062B\u0628\u064E\u0651\u062A \u062F\u0627\u062E\u0644 BitPull \u062F\u0648\u0646 \u0635\u0644\u0627\u062D\u064A\u0627\u062A \u0627\u0644\u0645\u0633\u0624\u0648\u0644.", "models.engine.install": "\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643", "models.engine.repair": "\u0625\u0639\u0627\u062F\u0629 \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643", "models.engine.unsupported": "\u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 (\u064A\u062A\u0637\u0644\u0628 Apple silicon\u060C \u0623\u0648 Windows/Linux x64)", "models.need_engine": "\u062B\u0628\u0651\u062A \u0627\u0644\u0645\u062D\u0631\u0643 \u0623\u0648\u0644\u064B\u0627", "models.not_here": "\u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628", "models.shared": "\u062A\u0645 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 \xB7 \u0645\u064F\u0634\u0627\u0631\u0643", "models.download": "\u062A\u0646\u0632\u064A\u0644 ({size} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A)", "models.needs_ram": "\u064A\u062D\u062A\u0627\u062C \u0625\u0644\u0649 \u0646\u062D\u0648 {ram} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0645\u0646 \u0627\u0644\u0630\u0627\u0643\u0631\u0629: \u0642\u062F \u064A\u0643\u0648\u0646 \u0628\u0637\u064A\u0626\u064B\u0627 \u0647\u0646\u0627", "models.recommended": "\u0645\u0648\u0635\u0649 \u0628\u0647", "models.license": "\u0627\u0644\u0631\u062E\u0635\u0629", "models.ok.engine": "\u062C\u0627\u0631\u064D \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0645\u062D\u0631\u0643\u2026", "task.chat": "\u0627\u0644\u0646\u0635 \u0648\u0627\u0644\u0628\u0631\u0645\u062C\u0629", "task.vision": "\u0627\u0644\u0635\u0648\u0631 \u2190 \u0646\u0635", "task.ocr": "\u0627\u0644\u0645\u0633\u062A\u0646\u062F\u0627\u062A (OCR)", "task.translate": "\u0627\u0644\u062A\u0631\u062C\u0645\u0629", "task.embed": "\u0627\u0644\u062A\u0636\u0645\u064A\u0646\u0627\u062A (\u0627\u0644\u0628\u062D\u062B)", "task.rerank": "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628", "task.image": "\u062A\u0648\u0644\u064A\u062F \u0627\u0644\u0635\u0648\u0631", "task.upscale": "\u062A\u0643\u0628\u064A\u0631 \u0627\u0644\u0635\u0648\u0631", "task.stt": "\u0627\u0644\u0643\u0644\u0627\u0645 \u0625\u0644\u0649 \u0646\u0635", "task.tts": "\u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0643\u0644\u0627\u0645", "task.music": "\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649", "limits.title": "\u062D\u062F\u0648\u062F\u0643 \u0644\u0644\u0622\u062E\u0631\u064A\u0646", "limits.hint": "\u0645\u0642\u062F\u0627\u0631 \u0639\u0645\u0644 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0627\u0644\u0630\u064A \u064A\u0646\u062C\u0632\u0647 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0644\u0622\u062E\u0631\u064A\u0646. \u0627\u062A\u0631\u0643\u0647 \u0641\u0627\u0631\u063A\u064B\u0627 \u0644\u0639\u062F\u0645 \u0648\u0636\u0639 \u062D\u062F. \u0639\u0646\u062F \u0628\u0644\u0648\u063A \u062D\u062F\u064D\u0651 \u0645\u0627\u060C \u062A\u062A\u0648\u0642\u0641 \u0646\u0645\u0627\u0630\u062C\u0643 \u0639\u0646 \u0627\u0644\u0639\u0631\u0636 \u062D\u062A\u0649 \u0628\u062F\u0627\u064A\u0629 \u0627\u0644\u0641\u062A\u0631\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629.", "limits.save": "\u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F", "limits.requests": "\u0627\u0644\u0637\u0644\u0628\u0627\u062A", "limits.tokens": "\u0627\u0644\u0631\u0645\u0648\u0632", "limits.used": "\u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645", "limits.day": "\u064A\u0648\u0645\u064A\u064B\u0627", "limits.week": "\u0623\u0633\u0628\u0648\u0639\u064A\u064B\u0627", "limits.month": "\u0634\u0647\u0631\u064A\u064B\u0627", "limits.none": "\u0628\u0644\u0627 \u062D\u062F", "limits.usage": "{requests} \u0637\u0644\u0628\u0627\u062A \xB7 {tokens} \u0631\u0645\u0632", "limits.saved": "\u062A\u0645 \u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F.", "tip.models.engine": "\u064A\u0646\u0632\u0651\u0644 \u0645\u062D\u0631\u0643 Lemonade \u0645\u0641\u062A\u0648\u062D \u0627\u0644\u0645\u0635\u062F\u0631 \u062F\u0627\u062E\u0644 BitPull\u060C \u0644\u064A\u062A\u0645\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0645\u0646 \u0625\u0639\u0627\u0631\u0629 \u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0635\u0648\u0631 \u0648\u0627\u0644\u0635\u0648\u062A \u0648\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649.", "tip.models.download": "\u064A\u0646\u0632\u0651\u0644 {model} ({size} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A) \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0644\u0639\u0631\u0636\u0647 \u0639\u0644\u0649 \u0627\u0644\u0622\u062E\u0631\u064A\u0646. \u064A\u0645\u0643\u0646\u0643 \u062D\u0630\u0641\u0647 \u0644\u0627\u062D\u0642\u064B\u0627.", "tip.limits.save": "\u064A\u062D\u0641\u0638 \u0627\u0644\u062D\u062F\u0648\u062F \u0627\u0644\u064A\u0648\u0645\u064A\u0629 \u0648\u0627\u0644\u0623\u0633\u0628\u0648\u0639\u064A\u0629 \u0648\u0627\u0644\u0634\u0647\u0631\u064A\u0629 \u0644\u0639\u0645\u0644 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "lend.visible": "\u2713 \u062A\u0631\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628: {cpus} \u0645\u0639\u0627\u0644\u062C \u0648{ram} \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0645\u062A\u0627\u062D\u0629 \u0644\u0644\u0622\u062E\u0631\u064A\u0646.", "lend.invisible": "\u0644\u0627 \u062A\u0631\u0649 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0628\u0639\u062F: \u0627\u0646\u062A\u0638\u0631 \u062D\u062A\u0649 \u062F\u0642\u064A\u0642\u0629\u061B \u0648\u0625\u0646 \u0628\u0642\u064A \u0627\u0644\u0623\u0645\u0631 \u0643\u0630\u0644\u0643 \u0641\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A.", "lend.unusable": "\u26A0 \u0644\u0627 \u064A\u0645\u0643\u0646 \u0644\u0623\u062D\u062F \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0628\u0639\u062F: \u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u0634\u063A\u064A\u0644 \u0623\u064A \u0645\u0647\u0645\u0629 \u0647\u0646\u0627. {reason}", "lend.unusable.docker": '\u0644\u0627 \u064A\u062C\u062A\u0627\u0632 Docker \u0641\u062D\u0635 \u0627\u0644\u0639\u0632\u0644 \u0641\u064A BitPull: \u0631\u0627\u062C\u0639 "\u0625\u0639\u062F\u0627\u062F \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628".', "lend.unusable.off": '\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A \u0645\u062A\u0648\u0642\u0641\u0629 \u0648\u0644\u0627 \u064A\u0648\u062C\u062F \u0646\u0645\u0648\u0630\u062C \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u062B\u0628\u062A: \u0641\u0639\u0651\u0644 "\u0645\u0647\u0627\u0645 \u0627\u0644\u062D\u0627\u0648\u064A\u0627\u062A" \u0623\u0648 \u0646\u0632\u0651\u0644 \u0646\u0645\u0648\u0630\u062C\u064B\u0627.', "lend.docker_login": '\u0644\u0627 \u064A\u0633\u062A\u0637\u064A\u0639 Docker \u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0644\u0623\u0646 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644\u0647 \u0625\u0644\u0649 Docker Hub \u0644\u0645 \u064A\u0639\u062F \u0635\u0627\u0644\u062D\u064B\u0627. \u0641\u064A Docker Desktop \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u062D\u0633\u0627\u0628\u0643 (\u0623\u0639\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646) \u2190 Sign out\u060C \u062B\u0645 \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 \u0623\u0648 \u0627\u0628\u0642\u064E \u062F\u0648\u0646 \u062A\u0633\u062C\u064A\u0644. \u062B\u0645 \u0627\u0636\u063A\u0637 "\u062A\u062D\u0642\u0642 \u0645\u062C\u062F\u062F\u064B\u0627".', "lend.off_hint": '\u0627\u0644\u0625\u0639\u0627\u0631\u0629 \u0645\u062A\u0648\u0642\u0641\u0629: \u0641\u0639\u0651\u0644 "{enabled}" \u0641\u064A "{rules}" \u0623\u062F\u0646\u0627\u0647 \u0648\u0627\u0636\u063A\u0637 "{save}". (\u0627\u0644\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0645\u0624\u0642\u062A / \u0627\u0644\u0627\u0633\u062A\u0626\u0646\u0627\u0641 \u064A\u0648\u0642\u0641 \u0645\u0624\u0642\u062A\u064B\u0627 \u0641\u0642\u0637 \u0625\u0639\u0627\u0631\u0629 \u0645\u0641\u0639\u0651\u0644\u0629 \u0623\u0635\u0644\u064B\u0627.)', "lend.low_memory": '\u062A\u0639\u0631\u0636 {mb} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0641\u0642\u0637 \u0645\u0646 \u0627\u0644\u0630\u0627\u0643\u0631\u0629: \u0644\u0646 \u064A\u062A\u0633\u0639 \u0630\u0644\u0643 \u0625\u0644\u0627 \u0644\u0645\u0647\u0627\u0645 \u0642\u0644\u064A\u0644\u0629. \u0641\u064A "{rules}" \u0627\u0636\u0628\u0637 "{memory}" \u0645\u062B\u0644\u064B\u0627 \u0639\u0644\u0649 4096 (= 4 \u063A\u064A\u063A\u0627\u0628\u0627\u064A\u062A) \u0648\u0627\u0636\u063A\u0637 "{save}".', "rules.awake": "\u0627\u0644\u0628\u0642\u0627\u0621 \u0645\u0633\u062A\u064A\u0642\u0638\u064B\u0627 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0625\u0639\u0627\u0631\u0629", "rules.awake.help": "\u0623\u062B\u0646\u0627\u0621 \u062A\u0634\u063A\u064A\u0644 \u0645\u0647\u0645\u0629 \u0644\u0634\u062E\u0635 \u0645\u0627\u060C \u0644\u0627 \u064A\u062F\u062E\u0644 \u0647\u0630\u0627 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 \u0641\u064A \u0648\u0636\u0639 \u0627\u0644\u0633\u0643\u0648\u0646 (\u064A\u0645\u0643\u0646 \u0623\u0646 \u062A\u0646\u0637\u0641\u0626 \u0627\u0644\u0634\u0627\u0634\u0629 \u0645\u0639 \u0630\u0644\u0643). \u0628\u0639\u062F\u0647\u0627 \u064A\u0646\u0627\u0645 \u0643\u0627\u0644\u0645\u0639\u062A\u0627\u062F. \u064A\u0645\u0646\u0639 \u0627\u0646\u0642\u0637\u0627\u0639 \u0627\u0644\u0645\u0647\u0627\u0645.", "ask.wait": "\u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631 \u062D\u062A\u0649 (\u062F\u0642\u0627\u0626\u0642)", "ask.wait.save": "\u062D\u0641\u0638", "ask.wait.saved": "\u0633\u064A\u062A\u0645 \u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u0625\u062C\u0627\u0628\u0627\u062A \u062D\u062A\u0649 {n} \u062F\u0642\u064A\u0642\u0629.", "ask.wait.range": "\u0623\u062F\u062E\u0644 \u0639\u062F\u062F \u062F\u0642\u0627\u0626\u0642 \u0628\u064A\u0646 1 \u0648120.", "tip.wait": "\u0645\u062F\u0629 \u0627\u0646\u062A\u0638\u0627\u0631 \u0625\u062C\u0627\u0628\u0629 \u0646\u0645\u0627\u0630\u062C \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0641\u064A \u0627\u0644\u0634\u0628\u0643\u0629. \u0642\u062F \u062A\u0633\u062A\u063A\u0631\u0642 \u0627\u0644\u0646\u0645\u0627\u0630\u062C \u0639\u0644\u0649 \u0645\u0639\u0627\u0644\u062C \u0634\u062E\u0635 \u0622\u062E\u0631 \u062F\u0642\u0627\u0626\u0642. \u064A\u0645\u0643\u0646 \u0644\u0630\u0643\u0627\u0626\u0643 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627 \u0623\u064A\u0636\u064B\u0627." }, bn: { "lang.name": "\u09AC\u09BE\u0982\u09B2\u09BE", "app.title": "BitPull", "locked.text": "BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u0996\u09C1\u09B2\u09C1\u09A8: \u098F\u09B0 \u09B2\u09BF\u0982\u0995\u09C7 \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u0995\u09C0 \u09A5\u09BE\u0995\u09C7\u0964", "pill.online": "\u0985\u09A8\u09B2\u09BE\u0987\u09A8", "pill.offline": "\u0985\u09AB\u09B2\u09BE\u0987\u09A8", "pill.direct": "\u09B8\u09B0\u09BE\u09B8\u09B0\u09BF \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", "pill.relay_on": "\u09B0\u09BF\u09B2\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4", "pill.relay_off": "\u09B0\u09BF\u09B2\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u09A8\u09AF\u09BC", "pill.cached": "{n}\u099F\u09BF \u0995\u09CD\u09AF\u09BE\u09B6 \u0995\u09B0\u09BE \u0995\u09AA\u09BF", "net.title": "\u09B2\u09BE\u0987\u09AD \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995", "net.online": "{n}\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09B2\u09BE\u0987\u09A8\u09C7", "net.lending": "{n}\u099F\u09BF \u098F\u0996\u09A8 \u09A7\u09BE\u09B0 \u09A6\u09BF\u099A\u09CD\u099B\u09C7", "net.cpu": "{n}\u099F\u09BF CPU \u0995\u09CB\u09B0", "net.ram": "{n} GB RAM", "net.gpu": "{n}\u099F\u09BF GPU", "net.models": "{n}\u099F\u09BF AI \u09AE\u09A1\u09C7\u09B2", "net.jobs": "{n}\u099F\u09BF \u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "credits.title": "\u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u09AC\u09CD\u09AF\u09BE\u09B2\u09BE\u09A8\u09CD\u09B8", "credits.plan": "{plan} \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8 \xB7 {n} \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09A8\u09BE\u09AE\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7", "plan.free": "\u09AB\u09CD\u09B0\u09BF", "plan.base": "\u09AC\u09C7\u09B8\u09BF\u0995", "plan.pro": "\u09AA\u09CD\u09B0\u09CB", "buy.base": "\u09AC\u09C7\u09B8\u09BF\u0995 \u20AC4.50", "buy.pro": "\u09AA\u09CD\u09B0\u09CB \u20AC9.90", "buy.recharge": "\u09B0\u09BF\u099A\u09BE\u09B0\u09CD\u099C \u20AC5", "buy.ok": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "lend.title": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A8", "lend.hint": "\u0995\u09BE\u099C\u0997\u09C1\u09B2\u09CB \u0986\u09B2\u09BE\u09A6\u09BE \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u098F\u09A8\u09CD\u09A1-\u099F\u09C1-\u098F\u09A8\u09CD\u09A1 \u098F\u09A8\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F\u09C7\u09A1 \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u099A\u09B2\u09C7, \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2\u09C7 \u0995\u09CB\u09A8\u09CB \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u099B\u09BE\u09A1\u09BC\u09BE\u0987\u0964 \u0986\u09AA\u09A8\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u0995\u09B0\u09C7\u09A8\u0964", "lend.state.off": "\u09AC\u09A8\u09CD\u09A7", "lend.state.waiting": "\u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09AE\u09BE\u09A3", "lend.state.working": "\u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "lend.reason.lending_off": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7", "lend.reason.paused": "\u09AC\u09BF\u09B0\u09A4\u09BF\u09A4\u09C7", "lend.reason.outside_hours": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09A8\u09BF\u09B0\u09CD\u09A7\u09BE\u09B0\u09BF\u09A4 \u09B8\u09AE\u09AF\u09BC\u09C7\u09B0 \u09AC\u09BE\u0987\u09B0\u09C7", "lend.reason.on_battery": "\u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF\u09A4\u09C7 \u099A\u09B2\u099B\u09C7", "lend.reason.computer_in_use": "\u0986\u09AA\u09A8\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u099B\u09C7\u09A8", "lend.reason.no_jobs": "\u09B8\u09BE\u09B0\u09BF\u09A4\u09C7 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A8\u09C7\u0987", "lend.running": "{time} \u09A5\u09C7\u0995\u09C7 \u098F\u0995\u099F\u09BF {kind} \u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7", "lend.detail": "{reason} \xB7 {n}\u099F\u09BF \u0995\u09BE\u099C \u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8 \xB7 \u09A6\u09BF\u099A\u09CD\u099B\u09C7 {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8 {name}", "lend.detail.models": ", {n}\u099F\u09BF \u09AE\u09A1\u09C7\u09B2", "lend.pause": "\u09AC\u09BF\u09B0\u09A4\u09BF", "lend.resume": "\u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1", "lend.paused_ok": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09BF\u09B0\u09A4\u09BF\u09A4\u09C7\u0964 \u099A\u09B2\u09AE\u09BE\u09A8 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A5\u09BE\u0995\u09B2\u09C7 \u09A4\u09BE \u0985\u09A8\u09CD\u09AF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "lend.resumed_ok": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "setup.title": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8", "setup.hint": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u09AF\u09BE \u09A6\u09B0\u0995\u09BE\u09B0\u0964 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u0986\u09B0 \u0995\u09BF\u099B\u09C1 \u09B2\u09BE\u0997\u09C7 \u09A8\u09BE\u0964 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u0986\u09B8\u09C7 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u09B8\u09BE\u0987\u099F \u09A5\u09C7\u0995\u09C7; \u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09BF\u09B8\u09CD\u099F\u09C7\u09AE \u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09A4\u09C7 \u09AC\u09B2\u09AC\u09C7\u0964", "setup.checking": "\u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "setup.docker.help": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u0995\u09BE\u099C \u0986\u09B2\u09BE\u09A6\u09BE \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 \u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964 \u09AC\u09CD\u09AF\u0995\u09CD\u09A4\u09BF\u0997\u09A4 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0993 \u099B\u09CB\u099F \u09AC\u09CD\u09AF\u09AC\u09B8\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u09AB\u09CD\u09B0\u09BF\u0964", "setup.docker.download": "Docker \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8", "setup.docker.start": "Docker \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.apple.title": "Apple Container (\u0990\u099A\u09CD\u099B\u09BF\u0995)", "setup.apple.help": "\u0986\u09B0\u0993 \u09B6\u0995\u09CD\u09A4\u09BF\u09B6\u09BE\u09B2\u09C0 \u09AC\u09BF\u099A\u09CD\u099B\u09BF\u09A8\u09CD\u09A8\u09A4\u09BE: \u09AA\u09CD\u09B0\u09A4\u09BF\u099F\u09BF \u0995\u09BE\u099C \u09A8\u09BF\u099C\u09B8\u09CD\u09AC \u09AD\u09BE\u09B0\u09CD\u099A\u09C1\u09AF\u09BC\u09BE\u09B2 \u09AE\u09C7\u09B6\u09BF\u09A8\u09C7\u0964 \u0990\u099A\u09CD\u099B\u09BF\u0995; \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09A4\u09C7 Docker-\u0987 \u09AF\u09A5\u09C7\u09B7\u09CD\u099F\u0964", "setup.apple.get": "Apple Container \u09A8\u09BF\u09A8", "setup.ollama.help": "\u0993\u09AA\u09C7\u09A8 AI \u09AE\u09A1\u09C7\u09B2 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC (Qwen, Llama, Mistral\u2026)\u0964 AI \u09AE\u09A1\u09C7\u09B2 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964", "setup.ollama.download": "Ollama \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8", "setup.ollama.start": "Ollama \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.model.title": "AI \u09AE\u09A1\u09C7\u09B2", "setup.model.help": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09AF\u09C7 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09C7\u09AF\u09BC\u0964 {ram} GB \u09AE\u09C7\u09AE\u09B0\u09BF\u09B0 \u099C\u09A8\u09CD\u09AF \u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09BE\u09AC\u09BF\u09A4: {model}\u0964", "setup.model.download": "{model} \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8 ({size} GB)", "setup.model.none": "\u098F\u0996\u09A8\u0993 \u0995\u09BF\u099B\u09C1 \u09A8\u09C7\u0987", "setup.model.need_ollama": "\u0986\u0997\u09C7 Ollama \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8", "setup.nvidia.title": "NVIDIA GPU \u09A1\u09CD\u09B0\u09BE\u0987\u09AD\u09BE\u09B0 (\u0990\u099A\u09CD\u099B\u09BF\u0995)", "setup.nvidia.help": "\u09B6\u09C1\u09A7\u09C1 \u09AF\u09A6\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u098F\u09AE\u09A8 NVIDIA \u0997\u09CD\u09B0\u09BE\u09AB\u09BF\u0995\u09CD\u09B8 \u0995\u09BE\u09B0\u09CD\u09A1 \u09A5\u09BE\u0995\u09C7 \u09AF\u09BE \u0986\u09AA\u09A8\u09BF \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u099A\u09BE\u09A8\u0964", "setup.nvidia.get": "NVIDIA \u09A1\u09CD\u09B0\u09BE\u0987\u09AD\u09BE\u09B0 \u09A8\u09BF\u09A8", "setup.status.running": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0993 \u099A\u09BE\u09B2\u09C1", "setup.status.installed": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE", "setup.status.stopped": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE, \u099A\u09BE\u09B2\u09C1 \u09A8\u09AF\u09BC", "setup.status.missing": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u09A8\u09C7\u0987", "setup.status.found": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7", "setup.status.not_found": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF", "setup.terminal": "\u099F\u09BE\u09B0\u09CD\u09AE\u09BF\u09A8\u09BE\u09B2\u09C7 \u099A\u09BE\u09B2\u09BE\u09A8:", "setup.done": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8", "setup.opened": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8: {file} \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7, \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8", "setup.recheck": "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8", "setup.ok.download": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B6\u09C1\u09B0\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u09B6\u09C7\u09B7 \u09B9\u09B2\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0996\u09C1\u09B2\u09AC\u09C7: \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8\u0964", "setup.ok.start": "\u099A\u09BE\u09B2\u09C1 \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09B2\u09BE\u0997\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964 \u098F\u0987 \u09A4\u09BE\u09B2\u09BF\u0995\u09BE \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u09AF\u09BC\u0964", "setup.ok.pull": "\u09AE\u09A1\u09C7\u09B2 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B6\u09C1\u09B0\u09C1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0985\u0997\u09CD\u09B0\u0997\u09A4\u09BF \u0989\u09AA\u09B0\u09C7 \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7\u0964", "setup.ok.page": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "setup.ok.recheck": "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "rules.title": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE", "rules.enabled": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u099A\u09BE\u09B2\u09C1", "rules.enabled.help": "\u09AA\u09CD\u09B0\u09A7\u09BE\u09A8 \u09B8\u09C1\u0987\u099A\u0964 \u09AC\u09A8\u09CD\u09A7 \u09A5\u09BE\u0995\u09B2\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0995\u0996\u09A8\u09CB \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u0995\u09BE\u099C \u099A\u09BE\u09B2\u09BE\u09AF\u09BC \u09A8\u09BE\u0964 \u0986\u09AA\u09A8\u09BF \u09A8\u09BF\u099C\u09C7 \u09A4\u09AC\u09C1\u0993 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8\u0964", "rules.cpus": "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A CPU", "rules.cpus.help": "\u098F\u0995\u099F\u09BF \u0995\u09BE\u099C \u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u0995\u09A4\u0997\u09C1\u09B2\u09CB \u09AA\u09CD\u09B0\u09B8\u09C7\u09B8\u09B0 \u0995\u09CB\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u0964 \u0989\u09A6\u09BE\u09B9\u09B0\u09A3: \u09EE \u0995\u09CB\u09B0\u09C7\u09B0 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 2 \u09A6\u09BF\u09B2\u09C7 \u0986\u09AA\u09A8\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF \u09EC\u099F\u09BF \u0995\u09CB\u09B0 \u0996\u09BE\u09B2\u09BF \u09A5\u09BE\u0995\u09C7\u0964", "rules.memory": "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u09AE\u09C7\u09AE\u09B0\u09BF (MB)", "rules.memory.help": "\u098F\u0995\u099F\u09BF \u0995\u09BE\u099C \u09AF\u09A4 RAM \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7, \u09AE\u09C7\u0997\u09BE\u09AC\u09BE\u0987\u099F\u09C7 (1024 MB = 1 GB)\u0964 BitPull \u0995\u0996\u09A8\u09CB \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u0985\u09B0\u09CD\u09A7\u09C7\u0995\u09C7\u09B0 \u09AC\u09C7\u09B6\u09BF \u09AE\u09C7\u09AE\u09B0\u09BF \u09A6\u09C7\u09AF\u09BC \u09A8\u09BE\u0964", "rules.gpu": "GPU", "rules.gpu.none": "\u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC", "rules.gpu.consumer": "\u09B8\u09BE\u09A7\u09BE\u09B0\u09A3 (8\u201312 GB)", "rules.gpu.high": "\u0989\u099A\u09CD\u099A\u09AE\u09BE\u09A8\u09C7\u09B0 (16\u201324 GB)", "rules.gpu.datacenter": "\u09A1\u09C7\u099F\u09BE \u09B8\u09C7\u09A8\u09CD\u099F\u09BE\u09B0 (40 GB+)", "rules.gpu.help": '\u0986\u09AA\u09A8\u09BF \u09AF\u09C7 \u0997\u09CD\u09B0\u09BE\u09AB\u09BF\u0995\u09CD\u09B8 \u0995\u09BE\u09B0\u09CD\u09A1 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09A8, \u09AD\u09BF\u09A1\u09BF\u0993 \u09AE\u09C7\u09AE\u09B0\u09BF \u0985\u09A8\u09C1\u09AF\u09BE\u09AF\u09BC\u09C0\u0964 \u0986\u09B2\u09BE\u09A6\u09BE GPU \u09A8\u09BE \u09A5\u09BE\u0995\u09B2\u09C7 \u09AC\u09BE \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A8\u09BE \u099A\u09BE\u0987\u09B2\u09C7 "\u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC" \u09B0\u09BE\u0996\u09C1\u09A8\u0964 GPU \u09B8\u09AC\u099A\u09C7\u09AF\u09BC\u09C7 \u09AC\u09C7\u09B6\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u0995\u09B0\u09C7\u0964', "rules.containers": "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C", "rules.containers.help": "\u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u0993 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2\u09C7 \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u099B\u09BE\u09A1\u09BC\u09BE \u098F\u0995\u099F\u09BF \u09B8\u09CD\u09AF\u09BE\u09A8\u09CD\u09A1\u09AC\u0995\u09CD\u09B8\u09C7 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09AC\u09BF\u09B2\u09CD\u09A1, \u099F\u09C7\u09B8\u09CD\u099F \u0993 \u09B8\u09CD\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 Docker (\u09AC\u09BE Apple Container) \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8: \u09A6\u09C7\u0996\u09C1\u09A8 \u201C\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8\u201D\u0964", "rules.models": "\u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 (Ollama)", "rules.models.help": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 Ollama-\u09A4\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u09AF\u09BC\u09C7 AI \u0985\u09A8\u09C1\u09B0\u09CB\u09A7\u09C7\u09B0 \u0989\u09A4\u09CD\u09A4\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964 Ollama \u0993 \u0985\u09A8\u09CD\u09A4\u09A4 \u098F\u0995\u099F\u09BF \u09AE\u09A1\u09C7\u09B2 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8\u0964", "rules.idle": "\u09B6\u09C1\u09A7\u09C1 \u098F\u09A4 \u09AE\u09BF\u09A8\u09BF\u099F \u09A8\u09BF\u09B7\u09CD\u0995\u09CD\u09B0\u09BF\u09AF\u09BC \u09A5\u09BE\u0995\u09BE\u09B0 \u09AA\u09B0", "rules.idle.help": "\u098F\u09A4 \u09AE\u09BF\u09A8\u09BF\u099F \u0995\u09BF\u09AC\u09CB\u09B0\u09CD\u09A1 \u09AC\u09BE \u09AE\u09BE\u0989\u09B8 \u09A8\u09BE \u099B\u09C1\u0981\u09B2\u09C7 \u09A4\u09AC\u09C7\u0987 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964 0 = \u0986\u09AA\u09A8\u09BF \u0995\u09BE\u099C \u0995\u09B0\u09BE\u09B0 \u09B8\u09AE\u09AF\u09BC\u0993 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC\u0964", "rules.ac": "\u09B6\u09C1\u09A7\u09C1 \u099A\u09BE\u09B0\u09CD\u099C\u09BE\u09B0\u09C7 \u09B2\u09BE\u0997\u09BE\u09A8\u09CB \u09A5\u09BE\u0995\u09B2\u09C7", "rules.ac.help": "\u09B2\u09CD\u09AF\u09BE\u09AA\u099F\u09AA\u09C7 \u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF\u09A4\u09C7 \u099A\u09B2\u09B2\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u09B9\u09AF\u09BC, \u09AF\u09BE\u09A4\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09AF\u09BC \u09AC\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09BF \u0995\u0996\u09A8\u09CB \u09AB\u09C1\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A8\u09BE \u09AF\u09BE\u09AF\u09BC\u0964", "rules.hours": "\u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u0998\u09A3\u09CD\u099F\u09BE \u09A5\u09C7\u0995\u09C7 / \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 (\u0996\u09BE\u09B2\u09BF = \u09B8\u09AC\u09B8\u09AE\u09AF\u09BC)", "rules.hours.help": "\u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u09B8\u09AE\u09AF\u09BC\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u09A7\u09BE\u09B0 \u09A6\u09C7\u09AF\u09BC, \u09E8\u09EA-\u0998\u09A3\u09CD\u099F\u09BE \u09AB\u09B0\u09AE\u09CD\u09AF\u09BE\u099F\u09C7\u0964 \u0989\u09A6\u09BE\u09B9\u09B0\u09A3: 22 \u0993 8 = \u09B0\u09BE\u09A4 \u09E7\u09E6\u099F\u09BE \u09A5\u09C7\u0995\u09C7 \u09B8\u0995\u09BE\u09B2 \u09EE\u099F\u09BE\u0964 \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A6\u09C1\u099F\u09CB\u0987 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964", "rules.cache": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09B0\u09BF\u09AA\u09CB\u09B0 \u0995\u09CD\u09AF\u09BE\u09B6 \u0995\u09B0\u09BE \u0995\u09AA\u09BF", "rules.cache.help": "\u0985\u09A8\u09CD\u09AF \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09A6\u09C7\u09B0 \u0995\u09A4\u0997\u09C1\u09B2\u09CB \u09AA\u09BE\u09AC\u09B2\u09BF\u0995 \u09B0\u09BF\u09AA\u09CB\u09B0 \u0995\u09AA\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B0\u09BE\u0996\u09AC\u09C7, \u09AF\u09BE\u09A4\u09C7 \u09B2\u09C7\u0996\u0995\u09B0\u09BE \u0985\u09AB\u09B2\u09BE\u0987\u09A8\u09C7 \u09A5\u09BE\u0995\u09B2\u09C7\u0993 \u09B8\u09C7\u0997\u09C1\u09B2\u09CB \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u0964 \u09B8\u09BE\u09AE\u09BE\u09A8\u09CD\u09AF \u09A1\u09BF\u09B8\u09CD\u0995 \u099C\u09BE\u09AF\u09BC\u0997\u09BE \u09B2\u09BE\u0997\u09C7 \u098F\u09AC\u0982 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0986\u09AF\u09BC \u09B9\u09AF\u09BC\u0964 0 = \u0995\u09CB\u09A8\u09CB\u099F\u09BF \u09A8\u09AF\u09BC\u0964", "rules.save": "\u09A8\u09BF\u09AF\u09BC\u09AE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3", "rules.saved": "\u09A8\u09BF\u09AF\u09BC\u09AE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u0995\u09BE\u09B0\u09CD\u09AF\u0995\u09B0 \u09B9\u09AC\u09C7\u0964", "rules.hours_both": "\u09A6\u09C1\u099F\u09CB \u0998\u09A3\u09CD\u099F\u09BE\u0987 \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8, \u0985\u09A5\u09AC\u09BE \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09A6\u09C1\u099F\u09CB\u0987 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964", "folders.title": "\u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0", "folders.hint": "BitPull \u09B6\u09C1\u09A7\u09C1 \u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u0997\u09C1\u09B2\u09CB \u09AA\u09A1\u09BC\u09C7\u0964 \u098F\u0995\u099F\u09BF \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0995\u09B0\u09A4\u09C7 \u09B8\u09AE\u09CD\u09AA\u09C2\u09B0\u09CD\u09A3 bitpull.json \u09B2\u09BE\u0997\u09AC\u09C7\u0964", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8", "folders.none": "\u0995\u09CB\u09A8\u09CB \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09A8\u09C7\u0987\u0964", "folders.draft": "\u0996\u09B8\u09A1\u09BC\u09BE", "folders.publish": "\u09AA\u09CD\u09B0\u0995\u09BE\u09B6", "folders.remove": "\u09B8\u09B0\u09BE\u09A8", "folders.need_path": "\u0986\u0997\u09C7 \u098F\u0995\u099F\u09BF \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7\u09B0 \u09AA\u09C2\u09B0\u09CD\u09A3 \u09AA\u09BE\u09A5 \u09B2\u09BF\u0996\u09C1\u09A8, \u09AF\u09C7\u09AE\u09A8 /Users/you/projects/my-library\u0964", "folders.added": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "folders.removed": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09B8\u09B0\u09BE\u09A8\u09CB \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964 BitPull \u0986\u09B0 \u098F\u099F\u09BF \u09AA\u09A1\u09BC\u09AC\u09C7 \u09A8\u09BE\u0964", "folders.drafted": "\u0996\u09B8\u09A1\u09BC\u09BE \u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09C1\u09A4: {n}\u099F\u09BF \u09AB\u09BE\u0987\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 AI-\u0995\u09C7 \u09B8\u09BE\u09B0\u09BE\u0982\u09B6 \u0993 \u09AC\u09BF\u09AC\u09B0\u09A3 \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09A4\u09C7 \u09A6\u09BF\u09A8 (prepare_publish \u099F\u09C1\u09B2), \u09A4\u09BE\u09B0\u09AA\u09B0 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u099A\u09BE\u09AA\u09C1\u09A8\u0964", "folders.published": '"{name}" {n}\u099F\u09BF \u09AB\u09BE\u0987\u09B2\u09B8\u09B9 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964', "folders.secrets_in": "\u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u099B\u09C7: {where}", "folders.line": "{file} \u09B2\u09BE\u0987\u09A8 {line}", "repos.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB", "repos.hint": "\u09AB\u09BE\u0987\u09B2 \u09AC\u09A6\u09B2\u09BE\u09B2\u09C7 \u098F\u0997\u09C1\u09B2\u09CB \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u0986\u09AA\u09A1\u09C7\u099F \u09B9\u09AF\u09BC (\u09AA\u09CD\u09B0\u09A4\u09BF \u09EB \u09AE\u09BF\u09A8\u09BF\u099F\u09C7)\u0964", "repos.none": "\u0995\u09CB\u09A8\u09CB \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB \u09A8\u09C7\u0987\u0964", "repos.withdraw": "\u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B9\u09BE\u09B0", "repos.withdrawn": "\u09B0\u09BF\u09AA\u09CB \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09A5\u09C7\u0995\u09C7 \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B9\u09BE\u09B0 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "ask.title": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2", "ask.offers": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A6\u09BF\u099A\u09CD\u099B\u09C7: {models}\u0964", "ask.offers_none": "\u0995\u09CB\u09A8\u09CB \u09AE\u09A1\u09C7\u09B2 \u09A8\u09C7\u0987 (\u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u09A4\u09C7 Ollama \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8)", "ask.placeholder": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u098F\u0995\u099F\u09BF \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2\u0995\u09C7 \u099C\u09BF\u099C\u09CD\u099E\u09BE\u09B8\u09BE \u0995\u09B0\u09C1\u09A8\u2026", "ask.small": "\u099B\u09CB\u099F", "ask.medium": "\u09AE\u09BE\u099D\u09BE\u09B0\u09BF", "ask.large": "\u09AC\u09A1\u09BC", "ask.button": "\u099C\u09BF\u099C\u09CD\u099E\u09BE\u09B8\u09BE", "ask.empty": "\u0986\u0997\u09C7 \u098F\u0995\u099F\u09BF \u09AA\u09CD\u09B0\u09B6\u09CD\u09A8 \u09B2\u09BF\u0996\u09C1\u09A8\u0964", "ask.waiting": "\u09AE\u09A1\u09C7\u09B2\u09B8\u09B9 \u098F\u0995\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0996\u09CB\u0981\u099C\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u09B2\u09BE\u0997\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "ask.credits": "{n} \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F", "tools.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u099F\u09C1\u09B2 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8", "tools.mcp": "Claude Code \u0993 MCP \u0995\u09CD\u09B2\u09BE\u09AF\u09BC\u09C7\u09A8\u09CD\u099F\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u099F\u09BE\u09B0\u09CD\u09AE\u09BF\u09A8\u09BE\u09B2\u09C7 \u099A\u09BE\u09B2\u09BE\u09A8:", "tools.openai": "OpenAI-\u09B8\u09BE\u09AE\u099E\u09CD\u099C\u09B8\u09CD\u09AF\u09AA\u09C2\u09B0\u09CD\u09A3 \u099F\u09C1\u09B2\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF: \u09AC\u09C7\u09B8 URL", "tools.key": "API \u0995\u09C0", "tools.show": "\u09A6\u09C7\u0996\u09BE\u09A8", "jobs.title": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09BE\u09AE\u09CD\u09AA\u09CD\u09B0\u09A4\u09BF\u0995 \u0995\u09BE\u099C", "jobs.none": "\u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u09A8\u09C7\u0987\u0964", "jobs.model": "\u09AE\u09A1\u09C7\u09B2", "jobs.container": "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0", "jobs.status.queued": "\u09B8\u09BE\u09B0\u09BF\u09A4\u09C7", "jobs.status.running": "\u099A\u09B2\u099B\u09C7", "jobs.status.done": "\u09B8\u09AE\u09CD\u09AA\u09A8\u09CD\u09A8", "jobs.status.failed": "\u09AC\u09CD\u09AF\u09B0\u09CD\u09A5", "jobs.status.canceled": "\u09AC\u09BE\u09A4\u09BF\u09B2", "jobs.cost": "{n} \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F", working: "\u0995\u09BE\u099C \u099A\u09B2\u099B\u09C7\u2026", "err.agent_down": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 BitPull \u09B8\u09BE\u09A1\u09BC\u09BE \u09A6\u09BF\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u098F\u099F\u09BF \u09E9\u09E6 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC: \u098F\u0995\u099F\u09C1 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.server": "BitPull \u09B8\u09BE\u09B0\u09CD\u09AD\u09BE\u09B0\u09C7 \u09AA\u09CC\u0981\u099B\u09BE\u09A8\u09CB \u09AF\u09BE\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u09B8\u0982\u09AF\u09CB\u0997 \u09A6\u09C7\u0996\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.session": "\u098F\u0987 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u09B8\u09C7\u09B6\u09A8\u09C7\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7\u0964 BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u0986\u09AC\u09BE\u09B0 \u0996\u09C1\u09B2\u09C1\u09A8\u0964", "err.billing": "\u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u098F\u0996\u09A8\u0993 \u099A\u09BE\u09B2\u09C1 \u09B9\u09AF\u09BC\u09A8\u09BF\u0964", "err.no_folder": "\u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A8\u09C7\u0987\u0964 \u09AA\u09BE\u09A5 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8\u0964", "err.not_folder": "\u098F\u0987 \u09AA\u09BE\u09A5\u099F\u09BF \u098F\u0995\u099F\u09BF \u09AB\u09BE\u0987\u09B2, \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0 \u09A8\u09AF\u09BC\u0964", "err.credits": "\u09AF\u09A5\u09C7\u09B7\u09CD\u099F \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u09A8\u09C7\u0987\u0964", "err.device": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u098F\u0996\u09A8\u0993 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u09B9\u09AF\u09BC\u09A8\u09BF\u0964 BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u0996\u09CB\u09B2\u09BE \u09B0\u09BE\u0996\u09C1\u09A8 \u098F\u09AC\u0982 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.no_model": "\u098F\u0987 \u09AE\u09C1\u09B9\u09C2\u09B0\u09CD\u09A4\u09C7 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0995\u09CB\u09A8\u09CB \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 AI \u09AE\u09A1\u09C7\u09B2 \u09A6\u09BF\u099A\u09CD\u099B\u09C7 \u09A8\u09BE\u0964 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "err.invalid": "\u0995\u09BF\u099B\u09C1 \u09AE\u09BE\u09A8 \u09B8\u09A0\u09BF\u0995 \u09A8\u09AF\u09BC\u0964 \u0998\u09B0\u0997\u09C1\u09B2\u09CB \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "tip.lang": "\u0985\u09CD\u09AF\u09BE\u09AA\u09C7\u09B0 \u09AD\u09BE\u09B7\u09BE\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u099B\u09A8\u09CD\u09A6 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AE\u09A8\u09C7 \u09B0\u09BE\u0996\u09BE \u09B9\u09AF\u09BC\u0964", "tip.buy.base": "\u09AC\u09C7\u09B8\u09BF\u0995 \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7: \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 \u20AC4.50, \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 80 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F\u09B8\u09B9\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09AC\u09BE\u09A4\u09BF\u09B2 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "tip.buy.pro": "\u09AA\u09CD\u09B0\u09CB \u09AA\u09CD\u09B2\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7: \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 \u20AC9.90, \u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8\u09C7 200 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F, \u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u0985\u0997\u09CD\u09B0\u09BE\u09A7\u09BF\u0995\u09BE\u09B0 \u098F\u09AC\u0982 \u09B8\u09AC GPU \u09B8\u09B9\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u0995\u09CB\u09A8\u09CB \u09B8\u09AE\u09AF\u09BC \u09AC\u09BE\u09A4\u09BF\u09B2 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "tip.buy.recharge": "\u20AC5 \u09A6\u09BF\u09AF\u09BC\u09C7 \u098F\u0995\u09AC\u09BE\u09B0\u09C7 80 \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0995\u09C7\u09A8\u09BE\u09B0 \u09A8\u09BF\u09B0\u09BE\u09AA\u09A6 \u09AA\u09C7\u09AE\u09C7\u09A8\u09CD\u099F \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7\u0964 \u098F\u0997\u09C1\u09B2\u09CB\u09B0 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u0995\u0996\u09A8\u09CB \u09B6\u09C7\u09B7 \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.pause": "\u098F\u0996\u09A8\u0987 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7\u0964 \u098F\u0987 \u09AE\u09C1\u09B9\u09C2\u09B0\u09CD\u09A4\u09C7 \u099A\u09B2\u09AE\u09BE\u09A8 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u0985\u09A8\u09CD\u09AF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09A4\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09BE\u09AA\u09C1\u09A8\u0964", "tip.resume": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE \u09AE\u09C7\u09A8\u09C7 \u0986\u09AC\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09C7\u0964", "tip.rules.save": "\u0993\u09AA\u09B0\u09C7\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09A8\u09BF\u09AF\u09BC\u09AE\u0997\u09C1\u09B2\u09CB \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C7\u0964 \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u0995\u09BE\u09B0\u09CD\u09AF\u0995\u09B0 \u09B9\u09AF\u09BC; \u0986\u09AA\u09A8\u09BF \u098F\u099F\u09BF \u09A8\u09BE \u099A\u09BE\u09AA\u09BE \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0995\u09BF\u099B\u09C1\u0987 \u09AC\u09A6\u09B2\u09BE\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.add": "\u09AC\u09BE\u0981 \u09A6\u09BF\u0995\u09C7 \u09B2\u09C7\u0996\u09BE \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09AA\u09A1\u09BC\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09A4\u09BF \u09A6\u09C7\u09AF\u09BC BitPull-\u0995\u09C7\u0964 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09BF\u09A4 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7\u09B0 \u09AC\u09BE\u0987\u09B0\u09C7\u09B0 \u09AB\u09BE\u0987\u09B2 \u0995\u0996\u09A8\u09CB \u09AA\u09A1\u09BC\u09BE \u09AC\u09BE \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.draft": "\u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7 bitpull.json \u09A4\u09C8\u09B0\u09BF \u0995\u09B0\u09C7: \u098F\u09B0 \u09AB\u09BE\u0987\u09B2\u0997\u09C1\u09B2\u09CB\u09B0 \u09A4\u09BE\u09B2\u09BF\u0995\u09BE, \u0996\u09BE\u09B2\u09BF \u09AC\u09BF\u09AC\u09B0\u09A3\u09B8\u09B9 \u09AF\u09BE \u0986\u09AA\u09A8\u09BE\u09B0 AI \u09AA\u09C2\u09B0\u09A3 \u0995\u09B0\u09AC\u09C7\u0964 \u098F\u0996\u09A8\u09CB \u0995\u09BF\u099B\u09C1\u0987 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0995\u09B0\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "tip.folder.publish": "\u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7 \u098F\u0995\u099F\u09BF \u09AA\u09BE\u09AC\u09B2\u09BF\u0995 \u09B0\u09BF\u09AA\u09CB \u09B9\u09BF\u09B8\u09C7\u09AC\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09C7, \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u09B8\u09CD\u09AC\u09BE\u0995\u09CD\u09B7\u09B0\u09B8\u09B9\u0964 \u09AB\u09BE\u0987\u09B2\u09C7 \u0995\u09C0 \u09AC\u09BE \u09AA\u09BE\u09B8\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u09A1 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09C7\u09B2\u09C7 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6 \u0986\u099F\u0995\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964", "tip.folder.remove": "BitPull \u098F\u0987 \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u099F\u09BF \u09AA\u09A1\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C7\u0964 \u098F\u0996\u09BE\u09A8 \u09A5\u09C7\u0995\u09C7 \u0986\u0997\u09C7\u0987 \u09AA\u09CD\u09B0\u0995\u09BE\u09B6\u09BF\u09A4 \u09B0\u09BF\u09AA\u09CB\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09B2\u09BE\u0987\u09A8\u09C7 \u09A5\u09BE\u0995\u09C7, \u09AF\u09A4\u0995\u09CD\u09B7\u09A3 \u09A8\u09BE \u0986\u09AA\u09A8\u09BF \u09B8\u09C7\u0997\u09C1\u09B2\u09CB \u09B8\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A8\u09C7\u09A8\u0964", "tip.repo.withdraw": "\u098F\u0987 \u09B0\u09BF\u09AA\u09CB\u099F\u09BF \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u09A5\u09C7\u0995\u09C7 \u09B8\u09B0\u09BF\u09AF\u09BC\u09C7 \u09A6\u09C7\u09AF\u09BC\u0964 \u0985\u09A8\u09CD\u09AF \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0\u09BE \u0986\u09B0 \u098F\u099F\u09BF \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u09AC\u09C7\u09A8 \u09A8\u09BE \u09AC\u09BE \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8 \u09A8\u09BE\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09BE\u0987\u09B2 \u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u0987 \u09A5\u09BE\u0995\u09C7\u0964", "tip.ask": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09B6\u09CD\u09A8\u099F\u09BF \u098F\u09A8\u09CD\u09A1-\u099F\u09C1-\u098F\u09A8\u09CD\u09A1 \u098F\u09A8\u0995\u09CD\u09B0\u09BF\u09AA\u09CD\u099F\u09C7\u09A1 \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u098F\u09AE\u09A8 \u098F\u0995\u099F\u09BF \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AA\u09BE\u09A0\u09BE\u09AF\u09BC \u09AF\u09BE \u098F\u0995\u099F\u09BF \u0993\u09AA\u09C7\u09A8 AI \u09AE\u09A1\u09C7\u09B2 \u099A\u09BE\u09B2\u09BE\u09AF\u09BC\u0964 \u0995\u09AF\u09BC\u09C7\u0995\u099F\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0996\u09B0\u099A \u09B9\u09AF\u09BC\u0964", "tip.tier": "\u09AE\u09A1\u09C7\u09B2\u09C7\u09B0 \u0986\u0995\u09BE\u09B0: \u099B\u09CB\u099F\u099F\u09BF \u09A6\u09CD\u09B0\u09C1\u09A4 \u0993 \u09B8\u09B8\u09CD\u09A4\u09BE, \u09AC\u09A1\u09BC\u099F\u09BF \u09AC\u09C7\u09B6\u09BF \u09AC\u09C1\u09A6\u09CD\u09A7\u09BF\u09AE\u09BE\u09A8 \u098F\u09AC\u0982 \u09AC\u09C7\u09B6\u09BF \u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0996\u09B0\u099A \u0995\u09B0\u09C7\u0964", "tip.show_key": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 AI \u099F\u09C1\u09B2\u0997\u09C1\u09B2\u09CB BitPull-\u098F\u09B0 \u09B8\u0999\u09CD\u0997\u09C7 \u09AF\u09CB\u0997\u09BE\u09AF\u09CB\u0997\u09C7 \u09AF\u09C7 \u0995\u09C0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09C7, \u09B8\u09C7\u099F\u09BF \u09A6\u09C7\u0996\u09BE\u09AF\u09BC\u0964 \u098F\u099F\u09BF \u0995\u09BE\u09B0\u0993 \u09B8\u0999\u09CD\u0997\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09AC\u09C7\u09A8 \u09A8\u09BE\u0964", "tip.setup.download": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF {name}-\u098F\u09B0 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u0987\u09A8\u09B8\u09CD\u099F\u09B2\u09BE\u09B0 \u0986\u09AA\u09A8\u09BE\u09B0 Downloads \u09AB\u09CB\u09B2\u09CD\u09A1\u09BE\u09B0\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u0996\u09CB\u09B2\u09C7\u0964 \u09B6\u09C7\u09B7 \u0995\u09B0\u09A4\u09C7 \u098F\u09B0 \u09A7\u09BE\u09AA\u0997\u09C1\u09B2\u09CB \u0985\u09A8\u09C1\u09B8\u09B0\u09A3 \u0995\u09B0\u09C1\u09A8\u0964", "tip.setup.start": "{name} \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C7, \u09AF\u09BE \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0986\u099B\u09C7 \u0995\u09BF\u09A8\u09CD\u09A4\u09C1 \u099A\u09B2\u099B\u09C7 \u09A8\u09BE\u0964", "tip.setup.pull": "AI \u09AE\u09A1\u09C7\u09B2 {model} ({size} GB) Ollama-\u09A4\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u098F\u099F\u09BF \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "tip.setup.open": "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AC\u09CD\u09B0\u09BE\u0989\u099C\u09BE\u09B0\u09C7 {name}-\u098F\u09B0 \u0985\u09AB\u09BF\u09B8\u09BF\u09AF\u09BC\u09BE\u09B2 \u09AA\u09C7\u099C \u0996\u09CB\u09B2\u09C7\u0964", "tip.setup.recheck": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0995\u09C0 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0986\u099B\u09C7 \u0993 \u0995\u09C0 \u099A\u09B2\u099B\u09C7, \u09A4\u09BE \u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7\u0964", "update.title": "\u0985\u09CD\u09AF\u09BE\u09AA \u0986\u09AA\u09A1\u09C7\u099F", "update.current": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3: {v}", "update.latest": "\u09B8\u09B0\u09CD\u09AC\u09B6\u09C7\u09B7 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3: {v}", "update.button": "\u0986\u09AA\u09A1\u09C7\u099F \u0996\u09C1\u0981\u099C\u09C1\u09A8", "update.install": "\u098F\u0996\u09A8\u0987 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "update.available": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u099A\u09CD\u099B\u09C7\u0964", "update.not_in_app": "\u0986\u09AA\u09A1\u09C7\u099F BitPull \u0985\u09CD\u09AF\u09BE\u09AA \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7\u0964 \u0986\u09AA\u09A1\u09C7\u099F \u0995\u09B0\u09A4\u09C7 \u0985\u09CD\u09AF\u09BE\u09AA \u09A5\u09C7\u0995\u09C7 \u098F\u0987 \u09A1\u09CD\u09AF\u09BE\u09B6\u09AC\u09CB\u09B0\u09CD\u09A1 \u0996\u09C1\u09B2\u09C1\u09A8\u0964", "update.state.requested": "\u0985\u09CD\u09AF\u09BE\u09AA\u0995\u09C7 \u0996\u09C1\u0981\u099C\u09A4\u09C7 \u09AC\u09B2\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.checking": "\u0986\u09AA\u09A1\u09C7\u099F \u0996\u09CB\u0981\u099C\u09BE \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.up_to_date": "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09BE\u099B\u09C7 \u09B8\u09B0\u09CD\u09AC\u09B6\u09C7\u09B7 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 \u0986\u099B\u09C7\u0964", "update.state.installing": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0993 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u099A\u09CD\u099B\u09C7\u2026 \u0985\u09CD\u09AF\u09BE\u09AA \u09A8\u09BF\u099C\u09C7 \u09A5\u09C7\u0995\u09C7\u0987 \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u09B9\u09AC\u09C7\u0964", "update.state.restarting": "\u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 {v} \u09A8\u09BF\u09AF\u09BC\u09C7 \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u09B9\u099A\u09CD\u099B\u09C7\u2026", "update.state.error": "\u0986\u09AA\u09A1\u09C7\u099F \u0995\u09BE\u099C \u0995\u09B0\u09C7\u09A8\u09BF: {msg}\u0964 \u09AA\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u099A\u09C7\u09B7\u09CD\u099F\u09BE \u0995\u09B0\u09C1\u09A8\u0964", "tip.update": "BitPull-\u098F\u09B0 \u09A8\u09A4\u09C1\u09A8 \u09B8\u0982\u09B8\u09CD\u0995\u09B0\u09A3 \u0986\u099B\u09C7 \u0995\u09BF \u09A8\u09BE \u09A6\u09C7\u0996\u09C7\u0964 \u09A5\u09BE\u0995\u09B2\u09C7 \u09B8\u09C7\u099F\u09BF \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09B8\u09CD\u09AC\u09BE\u0995\u09CD\u09B7\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C7, \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C7 \u098F\u09AC\u0982 \u0985\u09CD\u09AF\u09BE\u09AA \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u0995\u09B0\u09C7\u0964 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u0995\u09AF\u09BC\u09C7\u0995 \u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09A5\u09BE\u09AE\u09C7\u0964", "tools.hint": "\u0986\u09AA\u09A8\u09BE\u09B0 AI \u09B8\u09B9\u0995\u09BE\u09B0\u09C0\u0995\u09C7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE \u0995\u09CB\u09A1 \u0996\u09C1\u0981\u099C\u09A4\u09C7 \u098F\u09AC\u0982 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u0993 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09A6\u09BF\u09A8\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 \u099F\u09C1\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8:", "tools.connect": "\u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4 \u0995\u09B0\u09C1\u09A8", "tools.connected": "\u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4", "tools.copy": "\u0995\u09AA\u09BF \u0995\u09B0\u09C1\u09A8", "tools.copied": "\u0995\u09AA\u09BF \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "tools.installed": "\u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09BE \u0986\u099B\u09C7", "tools.not_found": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF", "tools.done": "\u09B9\u09AF\u09BC\u09C7 \u0997\u09C7\u099B\u09C7\u0964 BitPull \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u09B6\u09C1\u09B0\u09C1 \u0995\u09B0\u09A4\u09C7 {name} \u09B0\u09BF\u09B8\u09CD\u099F\u09BE\u09B0\u09CD\u099F \u0995\u09B0\u09C1\u09A8\u0964", "tools.manual": "\u09A8\u09BF\u099C\u09C7 \u09AF\u09CB\u0997 \u0995\u09B0\u09A4\u09C7:", "tools.config_invalid": '{name}-\u098F\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u09AB\u09BE\u0987\u09B2\u099F\u09BF \u09AC\u09C8\u09A7 JSON \u09A8\u09AF\u09BC, \u09A4\u09BE\u0987 BitPull \u098F\u09A4\u09C7 \u09B9\u09BE\u09A4 \u09A6\u09C7\u09AF\u09BC\u09A8\u09BF\u0964 \u09AB\u09BE\u0987\u09B2\u099F\u09BF \u09A0\u09BF\u0995 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE "\u0995\u09AA\u09BF \u0995\u09B0\u09C1\u09A8" \u09A6\u09BF\u09AF\u09BC\u09C7 \u09A8\u09BF\u099C\u09C7 BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09C1\u09A8\u0964', "tip.tools.connect": "\u09B8\u09CD\u09AC\u09AF\u09BC\u0982\u0995\u09CD\u09B0\u09BF\u09AF\u09BC\u09AD\u09BE\u09AC\u09C7 {name}-\u098F\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8\u09C7 BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09C7\u0964 \u0986\u0997\u09C7\u09B0 \u09B8\u09C7\u099F\u09BF\u0982\u09B8\u09C7\u09B0 \u098F\u0995\u099F\u09BF \u09AC\u09CD\u09AF\u09BE\u0995\u0986\u09AA \u09AA\u09BE\u09B6\u09C7\u0987 \u09B0\u09BE\u0996\u09BE \u09B9\u09AF\u09BC\u0964", "tip.tools.copy": "\u0995\u09AE\u09BE\u09A8\u09CD\u09A1 \u09AC\u09BE \u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u0995\u09CD\u09B2\u09BF\u09AA\u09AC\u09CB\u09B0\u09CD\u09A1\u09C7 \u0995\u09AA\u09BF \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u0986\u09AA\u09A8\u09BF \u09A8\u09BF\u099C\u09C7 {name}-\u098F BitPull \u09AF\u09CB\u0997 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u09A8\u0964", "models.title": "\u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE\u09B0 AI \u09AE\u09A1\u09C7\u09B2", "models.hint": "\u09B8\u09AC \u09A7\u09B0\u09A8\u09C7\u09B0 \u0993\u09AA\u09C7\u09A8 \u09AE\u09A1\u09C7\u09B2 \u09AF\u09BE \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964 \u09B6\u09C1\u09A7\u09C1 \u09B8\u09C7\u0987 \u09AE\u09A1\u09C7\u09B2\u0997\u09C1\u09B2\u09CB \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u09AF\u09BC \u09AF\u09BE\u09A6\u09C7\u09B0 \u09B2\u09BE\u0987\u09B8\u09C7\u09A8\u09CD\u09B8 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09B8\u09C7\u09AC\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u0985\u09A8\u09C1\u09AE\u09A4\u09BF \u09A6\u09C7\u09AF\u09BC\u0964 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u099A\u09BE\u09B2\u09C1 \u09A5\u09BE\u0995\u09B2\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09BE \u09AE\u09A1\u09C7\u09B2\u0997\u09C1\u09B2\u09CB \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC\u0964", "models.engine.title": "\u099B\u09AC\u09BF, \u0995\u09A3\u09CD\u09A0 \u0993 \u09B8\u0982\u0997\u09C0\u09A4 \u0987\u099E\u09CD\u099C\u09BF\u09A8", "models.engine.help": "Lemonade (\u0993\u09AA\u09C7\u09A8 \u09B8\u09CB\u09B0\u09CD\u09B8): \u099B\u09AC\u09BF \u09A4\u09C8\u09B0\u09BF, \u0995\u09A3\u09CD\u09A0 \u09A5\u09C7\u0995\u09C7 \u09B2\u09C7\u0996\u09BE, \u09B2\u09C7\u0996\u09BE \u09A5\u09C7\u0995\u09C7 \u0995\u09A3\u09CD\u09A0, \u09B8\u0982\u0997\u09C0\u09A4, \u09A8\u09A5\u09BF \u09AA\u09C1\u09A8\u09B0\u09CD\u09AC\u09BF\u09A8\u09CD\u09AF\u09BE\u09B8 \u0993 \u099B\u09AC\u09BF \u09AC\u09A1\u09BC \u0995\u09B0\u09BE\u0964 BitPull-\u098F\u09B0 \u09AD\u09C7\u09A4\u09B0\u09C7 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u09AF\u09BC, \u0985\u09CD\u09AF\u09BE\u09A1\u09AE\u09BF\u09A8 \u0985\u09A7\u09BF\u0995\u09BE\u09B0 \u09B2\u09BE\u0997\u09C7 \u09A8\u09BE\u0964", "models.engine.install": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.engine.repair": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0986\u09AC\u09BE\u09B0 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.engine.unsupported": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0989\u09AA\u09B2\u09AC\u09CD\u09A7 \u09A8\u09AF\u09BC (Apple silicon, \u09AC\u09BE Windows/Linux x64 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8)", "models.need_engine": "\u0986\u0997\u09C7 \u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u0995\u09B0\u09C1\u09A8", "models.not_here": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u0989\u09AA\u09B2\u09AC\u09CD\u09A7 \u09A8\u09AF\u09BC", "models.shared": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7 \xB7 \u09B6\u09C7\u09AF\u09BC\u09BE\u09B0 \u0995\u09B0\u09BE", "models.download": "\u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 ({size} GB)", "models.needs_ram": "\u09AA\u09CD\u09B0\u09BE\u09AF\u09BC {ram} GB \u09AE\u09C7\u09AE\u09B0\u09BF \u09B2\u09BE\u0997\u09C7: \u098F\u0996\u09BE\u09A8\u09C7 \u09A7\u09C0\u09B0 \u09B9\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7", "models.recommended": "\u09AA\u09CD\u09B0\u09B8\u09CD\u09A4\u09BE\u09AC\u09BF\u09A4", "models.license": "\u09B2\u09BE\u0987\u09B8\u09C7\u09A8\u09CD\u09B8", "models.ok.engine": "\u0987\u099E\u09CD\u099C\u09BF\u09A8 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09B9\u099A\u09CD\u099B\u09C7\u2026", "task.chat": "\u09B2\u09C7\u0996\u09BE \u0993 \u0995\u09CB\u09A1", "task.vision": "\u099B\u09AC\u09BF \u2192 \u09B2\u09C7\u0996\u09BE", "task.ocr": "\u09A8\u09A5\u09BF (OCR)", "task.translate": "\u0985\u09A8\u09C1\u09AC\u09BE\u09A6", "task.embed": "\u098F\u09AE\u09AC\u09C7\u09A1\u09BF\u0982 (\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8)", "task.rerank": "\u09AA\u09C1\u09A8\u09B0\u09CD\u09AC\u09BF\u09A8\u09CD\u09AF\u09BE\u09B8", "task.image": "\u099B\u09AC\u09BF \u09A4\u09C8\u09B0\u09BF", "task.upscale": "\u099B\u09AC\u09BF \u09AC\u09A1\u09BC \u0995\u09B0\u09BE", "task.stt": "\u0995\u09A3\u09CD\u09A0 \u09A5\u09C7\u0995\u09C7 \u09B2\u09C7\u0996\u09BE", "task.tts": "\u09B2\u09C7\u0996\u09BE \u09A5\u09C7\u0995\u09C7 \u0995\u09A3\u09CD\u09A0", "task.music": "\u09B8\u0982\u0997\u09C0\u09A4", "limits.title": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09C0\u09AE\u09BE", "limits.hint": "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09A4\u099F\u09BE AI \u0995\u09BE\u099C \u0995\u09B0\u09C7\u0964 \u0995\u09CB\u09A8\u09CB \u09B8\u09C0\u09AE\u09BE \u09A8\u09BE \u09B0\u09BE\u0996\u09A4\u09C7 \u0996\u09BE\u09B2\u09BF \u09B0\u09BE\u0996\u09C1\u09A8\u0964 \u09B8\u09C0\u09AE\u09BE\u09AF\u09BC \u09AA\u09CC\u0981\u099B\u09BE\u09B2\u09C7 \u09AA\u09B0\u09C7\u09B0 \u09B8\u09AE\u09AF\u09BC\u0995\u09BE\u09B2 \u09B6\u09C1\u09B0\u09C1 \u09A8\u09BE \u09B9\u0993\u09AF\u09BC\u09BE \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0986\u09AA\u09A8\u09BE\u09B0 \u09AE\u09A1\u09C7\u09B2 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u09AF\u09BC \u09A8\u09BE\u0964", "limits.save": "\u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C1\u09A8", "limits.requests": "\u0985\u09A8\u09C1\u09B0\u09CB\u09A7", "limits.tokens": "\u099F\u09CB\u0995\u09C7\u09A8", "limits.used": "\u09AC\u09CD\u09AF\u09AC\u09B9\u09C3\u09A4", "limits.day": "\u09AA\u09CD\u09B0\u09A4\u09BF\u09A6\u09BF\u09A8", "limits.week": "\u09AA\u09CD\u09B0\u09A4\u09BF \u09B8\u09AA\u09CD\u09A4\u09BE\u09B9", "limits.month": "\u09AA\u09CD\u09B0\u09A4\u09BF \u09AE\u09BE\u09B8", "limits.none": "\u0995\u09CB\u09A8\u09CB \u09B8\u09C0\u09AE\u09BE \u09A8\u09C7\u0987", "limits.usage": "{requests}\u099F\u09BF \u0985\u09A8\u09C1\u09B0\u09CB\u09A7 \xB7 {tokens} \u099F\u09CB\u0995\u09C7\u09A8", "limits.saved": "\u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09BF\u09A4 \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964", "tip.models.engine": "\u0993\u09AA\u09C7\u09A8 \u09B8\u09CB\u09B0\u09CD\u09B8 Lemonade \u0987\u099E\u09CD\u099C\u09BF\u09A8 BitPull-\u098F \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7, \u09AF\u09BE\u09A4\u09C7 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u099B\u09AC\u09BF, \u0995\u09A3\u09CD\u09A0 \u0993 \u09B8\u0982\u0997\u09C0\u09A4 \u09AE\u09A1\u09C7\u09B2 \u09A7\u09BE\u09B0 \u09A6\u09BF\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964", "tip.models.download": "{model} ({size} GB) \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u09C7 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u09AF\u09BE\u09A4\u09C7 \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u0964 \u09AA\u09B0\u09C7 \u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09A4\u09C7 \u09AA\u09BE\u09B0\u09AC\u09C7\u09A8\u0964", "tip.limits.save": "\u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF AI \u0995\u09BE\u099C\u09C7\u09B0 \u09A6\u09C8\u09A8\u09BF\u0995, \u09B8\u09BE\u09AA\u09CD\u09A4\u09BE\u09B9\u09BF\u0995 \u0993 \u09AE\u09BE\u09B8\u09BF\u0995 \u09B8\u09C0\u09AE\u09BE \u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C7\u0964", "lend.visible": "\u2713 \u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0\u099F\u09BF \u09A6\u09C7\u0996\u099B\u09C7: \u0985\u09A8\u09CD\u09AF\u09A6\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF {cpus} CPU, {ram} GB \u0989\u09AA\u09B2\u09AC\u09CD\u09A7\u0964", "lend.invisible": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995 \u098F\u0996\u09A8\u09CB \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09A6\u09C7\u0996\u099B\u09C7 \u09A8\u09BE: \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09C1\u09A8; \u098F\u09AE\u09A8\u0987 \u09A5\u09BE\u0995\u09B2\u09C7 \u0987\u09A8\u09CD\u099F\u09BE\u09B0\u09A8\u09C7\u099F \u09B8\u0982\u09AF\u09CB\u0997 \u09A6\u09C7\u0996\u09C1\u09A8\u0964", "lend.unusable": "\u26A0 \u098F\u0996\u09A8\u09CB \u0995\u09C7\u0989 \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7 \u09A8\u09BE: \u098F\u0996\u09BE\u09A8\u09C7 \u0995\u09CB\u09A8\u09CB \u0995\u09BE\u099C \u099A\u09B2\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7 \u09A8\u09BE\u0964 {reason}", "lend.unusable.docker": 'Docker BitPull-\u098F\u09B0 \u0986\u0987\u09B8\u09CB\u09B2\u09C7\u09B6\u09A8 \u09AA\u09B0\u09C0\u0995\u09CD\u09B7\u09BE\u09AF\u09BC \u0989\u09A4\u09CD\u09A4\u09C0\u09B0\u09CD\u09A3 \u09B9\u09AF\u09BC\u09A8\u09BF: "\u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09C7\u099F \u0986\u09AA \u0995\u09B0\u09C1\u09A8" \u09A6\u09C7\u0996\u09C1\u09A8\u0964', "lend.unusable.off": '\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C \u09AC\u09A8\u09CD\u09A7 \u098F\u09AC\u0982 \u0995\u09CB\u09A8\u09CB AI \u09AE\u09A1\u09C7\u09B2 \u0987\u09A8\u09B8\u09CD\u099F\u09B2 \u09A8\u09C7\u0987: "\u0995\u09A8\u09CD\u099F\u09C7\u0987\u09A8\u09BE\u09B0 \u0995\u09BE\u099C" \u099A\u09BE\u09B2\u09C1 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE \u098F\u0995\u099F\u09BF \u09AE\u09A1\u09C7\u09B2 \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C1\u09A8\u0964', "lend.docker_login": 'Docker \u0987\u09AE\u09C7\u099C \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09A4\u09C7 \u09AA\u09BE\u09B0\u099B\u09C7 \u09A8\u09BE \u0995\u09BE\u09B0\u09A3 \u098F\u09B0 Docker Hub \u09B2\u0997\u0987\u09A8 \u0986\u09B0 \u09AC\u09C8\u09A7 \u09A8\u09AF\u09BC\u0964 Docker Desktop-\u098F \u0986\u09AA\u09A8\u09BE\u09B0 \u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F\u09C7 (\u0989\u09AA\u09B0\u09C7 \u09A1\u09BE\u09A8\u09C7) \u0995\u09CD\u09B2\u09BF\u0995 \u0995\u09B0\u09C1\u09A8 \u2192 Sign out, \u09A4\u09BE\u09B0\u09AA\u09B0 \u0986\u09AC\u09BE\u09B0 \u09B2\u0997 \u0987\u09A8 \u0995\u09B0\u09C1\u09A8 \u09AC\u09BE \u09B2\u0997 \u0986\u0989\u099F \u0985\u09AC\u09B8\u09CD\u09A5\u09BE\u09AF\u09BC \u09A5\u09BE\u0995\u09C1\u09A8\u0964 \u09A4\u09BE\u09B0\u09AA\u09B0 "\u0986\u09AC\u09BE\u09B0 \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09C1\u09A8" \u099A\u09BE\u09AA\u09C1\u09A8\u0964', "lend.off_hint": '\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09AC\u09A8\u09CD\u09A7: \u09A8\u09BF\u099A\u09C7 "{rules}"-\u098F "{enabled}" \u099F\u09BF\u0995 \u09A6\u09BF\u09A8 \u098F\u09AC\u0982 "{save}" \u099A\u09BE\u09AA\u09C1\u09A8\u0964 (\u09AC\u09BF\u09B0\u09A4\u09BF / \u0986\u09AC\u09BE\u09B0 \u09B6\u09C1\u09B0\u09C1 \u09B6\u09C1\u09A7\u09C1 \u0986\u0997\u09C7 \u09A5\u09C7\u0995\u09C7 \u099A\u09BE\u09B2\u09C1 \u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u0995\u09C7 \u09A5\u09BE\u09AE\u09BE\u09AF\u09BC\u0964)', "lend.low_memory": '\u09AE\u09BE\u09A4\u09CD\u09B0 {mb} MB \u09AE\u09C7\u09AE\u09B0\u09BF \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7: \u0996\u09C1\u09AC \u0995\u09AE \u0995\u09BE\u099C \u099A\u09B2\u09AC\u09C7\u0964 "{rules}"-\u098F "{memory}" \u09AF\u09C7\u09AE\u09A8 4096 (= 4 GB) \u09A6\u09BF\u09A8 \u098F\u09AC\u0982 "{save}" \u099A\u09BE\u09AA\u09C1\u09A8\u0964', "rules.awake": "\u09A7\u09BE\u09B0 \u09A6\u09C7\u0993\u09AF\u09BC\u09BE\u09B0 \u09B8\u09AE\u09AF\u09BC \u099C\u09C7\u0997\u09C7 \u09A5\u09BE\u0995\u09C1\u09A8", "rules.awake.help": "\u0995\u09BE\u09B0\u0993 \u099C\u09A8\u09CD\u09AF \u0995\u09BE\u099C \u099A\u09BE\u09B2\u09BE\u09A8\u09CB\u09B0 \u09B8\u09AE\u09AF\u09BC \u098F\u0987 \u0995\u09AE\u09CD\u09AA\u09BF\u0989\u099F\u09BE\u09B0 \u09B8\u09CD\u09B2\u09BF\u09AA\u09C7 \u09AF\u09BE\u09AC\u09C7 \u09A8\u09BE (\u09B8\u09CD\u0995\u09CD\u09B0\u09BF\u09A8 \u09A4\u09AC\u09C1\u0993 \u09AC\u09A8\u09CD\u09A7 \u09B9\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7)\u0964 \u09AA\u09B0\u09C7 \u09B8\u09CD\u09AC\u09BE\u09AD\u09BE\u09AC\u09BF\u0995\u09AD\u09BE\u09AC\u09C7 \u09B8\u09CD\u09B2\u09BF\u09AA \u09B9\u09AC\u09C7\u0964 \u0995\u09BE\u099C \u09AE\u09BE\u099D\u09AA\u09A5\u09C7 \u0995\u09BE\u099F\u09AC\u09C7 \u09A8\u09BE\u0964", "ask.wait": "\u09B8\u09B0\u09CD\u09AC\u09CB\u099A\u09CD\u099A \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE (\u09AE\u09BF\u09A8\u09BF\u099F)", "ask.wait.save": "\u09B8\u0982\u09B0\u0995\u09CD\u09B7\u09A3 \u0995\u09B0\u09C1\u09A8", "ask.wait.saved": "\u0989\u09A4\u09CD\u09A4\u09B0\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF {n} \u09AE\u09BF\u09A8\u09BF\u099F \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09BE \u09B9\u09AC\u09C7\u0964", "ask.wait.range": "\u09E7 \u09A5\u09C7\u0995\u09C7 \u09E7\u09E8\u09E6-\u098F\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u09AE\u09BF\u09A8\u09BF\u099F \u09B2\u09BF\u0996\u09C1\u09A8\u0964", "tip.wait": "\u09A8\u09C7\u099F\u0993\u09AF\u09BC\u09BE\u09B0\u09CD\u0995\u09C7\u09B0 AI \u09AE\u09A1\u09C7\u09B2\u09C7\u09B0 \u0989\u09A4\u09CD\u09A4\u09B0\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09A4\u0995\u09CD\u09B7\u09A3 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE \u0995\u09B0\u09AC\u09C7\u09A8\u0964 \u0985\u09A8\u09CD\u09AF\u09C7\u09B0 \u09AA\u09CD\u09B0\u09B8\u09C7\u09B8\u09B0\u09C7 \u099A\u09B2\u09BE \u09AE\u09A1\u09C7\u09B2\u09C7 \u09AE\u09BF\u09A8\u09BF\u099F \u09B2\u09BE\u0997\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964 \u0986\u09AA\u09A8\u09BE\u09B0 AI-\u0993 \u098F\u099F\u09BF \u09AC\u09A6\u09B2\u09BE\u09A4\u09C7 \u09AA\u09BE\u09B0\u09C7\u0964" }, de: { "lang.name": "Deutsch", "app.title": "BitPull", "locked.text": "\xD6ffne das Dashboard \xFCber die BitPull-App: Der Link enth\xE4lt den Zugangsschl\xFCssel.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Direkte Adresse", "pill.relay_on": "Relay verbunden", "pill.relay_off": "Relay nicht verbunden", "pill.cached": "{n} zwischengespeicherte Kopien", "net.title": "Netzwerk live", "net.online": "{n} Computer online", "net.lending": "{n} verleihen gerade", "net.cpu": "{n} CPU-Kerne", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPUs", "net.models": "{n} KI-Modelle", "net.jobs": "{n} laufende Auftr\xE4ge", "credits.title": "Guthaben", "credits.plan": "Tarif {plan} \xB7 bis zu {n} m\xF6glich", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Aufladen 5 \u20AC", "buy.ok": "Zahlungsseite in deinem Browser ge\xF6ffnet.", "lend.title": "Diesen Computer verleihen", "lend.hint": "Auftr\xE4ge laufen Ende-zu-Ende-verschl\xFCsselt in isolierten Sandboxes, ohne Zugriff auf deine Dateien. Du verdienst Credits.", "lend.state.off": "Aus", "lend.state.waiting": "Wartet", "lend.state.working": "Arbeitet", "lend.reason.lending_off": "Verleihen ist aus", "lend.reason.paused": "Pausiert", "lend.reason.outside_hours": "Au\xDFerhalb deiner Zeiten", "lend.reason.on_battery": "Im Akkubetrieb", "lend.reason.computer_in_use": "Du benutzt den Computer", "lend.reason.no_jobs": "Keine Auftr\xE4ge in der Warteschlange", "lend.running": "F\xFChrt seit {time} einen {kind}-Auftrag aus", "lend.detail": "{reason} \xB7 {n} Auftr\xE4ge erledigt \xB7 bietet {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", Sandbox {name}", "lend.detail.models": ", {n} Modelle", "lend.pause": "Pausieren", "lend.resume": "Fortsetzen", "lend.paused_ok": "Verleihen pausiert. Ein laufender Auftrag wurde an einen anderen Computer \xFCbergeben.", "lend.resumed_ok": "Verleihen fortgesetzt.", "setup.title": "Diesen Computer einrichten", "setup.hint": "Was dieser Computer zum Verleihen braucht. Zum Nutzen des Netzwerks brauchst du nichts weiter. Die Installer kommen von den offiziellen Seiten; dein System fragt dich nach einer Best\xE4tigung.", "setup.checking": "Wird gepr\xFCft\u2026", "setup.docker.help": "F\xFChrt Auftr\xE4ge anderer in isolierten Sandboxes aus. N\xF6tig f\xFCr Container-Auftr\xE4ge. Kostenlos f\xFCr private Nutzung und kleine Unternehmen.", "setup.docker.download": "Docker herunterladen", "setup.docker.start": "Docker starten", "setup.apple.title": "Apple Container (optional)", "setup.apple.help": "St\xE4rkere Isolation: jeder Auftrag in einer eigenen virtuellen Maschine. Optional; Docker reicht f\xFCr den Anfang.", "setup.apple.get": "Apple Container holen", "setup.ollama.help": "F\xFChrt offene KI-Modelle aus (Qwen, Llama, Mistral\u2026). N\xF6tig, um KI-Modelle zu verleihen.", "setup.ollama.download": "Ollama herunterladen", "setup.ollama.start": "Ollama starten", "setup.model.title": "KI-Modell", "setup.model.help": "Das Modell, das dieser Computer anderen anbietet. Empfohlen f\xFCr {ram} GB Arbeitsspeicher: {model}.", "setup.model.download": "{model} herunterladen ({size} GB)", "setup.model.none": "noch keins", "setup.model.need_ollama": "Installiere und starte zuerst Ollama", "setup.nvidia.title": "NVIDIA-GPU-Treiber (optional)", "setup.nvidia.help": "Nur wenn dieser Computer eine NVIDIA-Grafikkarte hat, die du verleihen willst.", "setup.nvidia.get": "NVIDIA-Treiber holen", "setup.status.running": "installiert und l\xE4uft", "setup.status.installed": "installiert", "setup.status.stopped": "installiert, l\xE4uft nicht", "setup.status.missing": "nicht installiert", "setup.status.found": "gefunden", "setup.status.not_found": "nicht gefunden", "setup.terminal": "Im Terminal ausf\xFChren:", "setup.done": "Fertig", "setup.opened": "Erledigt: {file} ge\xF6ffnet, folge den Schritten", "setup.recheck": "Erneut pr\xFCfen", "setup.ok.download": "Download gestartet. Der Installer \xF6ffnet sich automatisch, wenn er fertig ist: Folge seinen Schritten.", "setup.ok.start": "Wird gestartet\u2026 das kann bis zu einer Minute dauern. Diese Liste aktualisiert sich von selbst.", "setup.ok.pull": "Modell-Download gestartet. Der Fortschritt wird oben angezeigt.", "setup.ok.page": "Seite in deinem Browser ge\xF6ffnet.", "setup.ok.recheck": "Erneut gepr\xFCft.", "rules.title": "Regeln f\xFCrs Verleihen", "rules.enabled": "Verleihen an", "rules.enabled.help": "Hauptschalter. Wenn aus, f\xFChrt dieser Computer nie Auftr\xE4ge anderer aus. Du kannst das Netzwerk trotzdem selbst nutzen.", "rules.cpus": "Max. CPUs", "rules.cpus.help": "Wie viele Prozessorkerne ein Auftrag h\xF6chstens nutzen darf. Beispiel: Bei einem Computer mit 8 Kernen bleiben mit 2 noch 6 Kerne f\xFCr dich frei.", "rules.memory": "Max. Arbeitsspeicher (MB)", "rules.memory.help": "RAM, den ein Auftrag nutzen darf, in Megabyte (1024 MB = 1 GB). BitPull bietet nie mehr als die H\xE4lfte des Arbeitsspeichers dieses Computers an.", "rules.gpu": "GPU", "rules.gpu.none": "Keine", "rules.gpu.consumer": "Standard (8\u201312 GB)", "rules.gpu.high": "High-End (16\u201324 GB)", "rules.gpu.datacenter": "Rechenzentrum (40 GB+)", "rules.gpu.help": "Die Grafikkarte, die du verleihst, nach Grafikspeicher. Lass \u201EKeine\u201C, wenn du keine eigene GPU hast oder sie nicht verleihen willst. Eine GPU bringt die meisten Credits.", "rules.containers": "Container-Auftr\xE4ge", "rules.containers.help": "F\xFChrt Builds, Tests und Skripte f\xFCr andere in einer Sandbox ohne Internet und ohne Zugriff auf deine Dateien aus. Braucht Docker (oder Apple Container): siehe \u201EDiesen Computer einrichten\u201C.", "rules.models": "Offene Modelle (Ollama)", "rules.models.help": "Beantwortet KI-Anfragen mit den offenen Modellen, die in Ollama auf diesem Computer installiert sind. Braucht Ollama und mindestens ein Modell.", "rules.idle": "Erst nach Minuten Inaktivit\xE4t", "rules.idle.help": "Nur verleihen, wenn du Tastatur und Maus so viele Minuten nicht ber\xFChrt hast. 0 = auch verleihen, w\xE4hrend du arbeitest.", "rules.ac": "Nur am Stromnetz", "rules.ac.help": "Auf einem Laptop wird das Verleihen im Akkubetrieb gestoppt, damit es den Akku nie leert.", "rules.hours": "Nur von / bis Uhr (leer = immer)", "rules.hours.help": "Nur in diesem Zeitfenster verleihen, im 24-Stunden-Format. Beispiel: 22 und 8 = von 22 bis 8 Uhr. Lass beide leer, um jederzeit zu verleihen.", "rules.cache": "Kopien fremder Repos im Cache", "rules.cache.help": "Wie viele \xF6ffentliche Repos anderer Nutzer dieser Computer als Kopie beh\xE4lt, damit sie verf\xFCgbar bleiben, wenn ihre Autoren offline sind. Braucht etwas Speicherplatz und bringt Credits. 0 = keine.", "rules.save": "Regeln speichern", "rules.saved": "Regeln gespeichert. Sie gelten in wenigen Sekunden.", "rules.hours_both": "F\xFClle beide Uhrzeiten aus oder lass beide leer, um jederzeit zu verleihen.", "folders.title": "Freigegebene Ordner", "folders.hint": "BitPull liest nur diese Ordner. Um einen zu ver\xF6ffentlichen, braucht es eine vollst\xE4ndige bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Freigeben", "folders.none": "Keine freigegebenen Ordner.", "folders.draft": "Entwurf", "folders.publish": "Ver\xF6ffentlichen", "folders.remove": "Entfernen", "folders.need_path": "Gib zuerst den vollst\xE4ndigen Pfad eines Ordners ein, z. B. /Users/you/projects/my-library.", "folders.added": "Ordner freigegeben.", "folders.removed": "Ordner entfernt. BitPull liest ihn nicht mehr.", "folders.drafted": "Entwurf bereit: {n} Dateien gefunden. Lass deine KI die Zusammenfassung und Beschreibungen ausf\xFCllen (Tool prepare_publish) und klicke dann auf Ver\xF6ffentlichen.", "folders.published": "\u201E{name}\u201C mit {n} Dateien ver\xF6ffentlicht.", "folders.secrets_in": "Gefunden in: {where}", "folders.line": "{file} Zeile {line}", "repos.title": "Deine ver\xF6ffentlichten Repos", "repos.hint": "Sie aktualisieren sich von selbst, wenn du die Dateien \xE4nderst (alle 5 Minuten).", "repos.none": "Keine ver\xF6ffentlichten Repos.", "repos.withdraw": "Zur\xFCckziehen", "repos.withdrawn": "Repo aus dem Netzwerk zur\xFCckgezogen.", "ask.title": "Offene Modelle im Netzwerk", "ask.offers": "Dieser Computer bietet an: {models}.", "ask.offers_none": "keine Modelle (installiere Ollama, um welche anzubieten)", "ask.placeholder": "Frag ein offenes Modell im Netzwerk\u2026", "ask.small": "Klein", "ask.medium": "Mittel", "ask.large": "Gro\xDF", "ask.button": "Fragen", "ask.empty": "Schreib zuerst eine Frage.", "ask.waiting": "Suche einen Computer mit dem Modell\u2026 das kann bis zu einer Minute dauern.", "ask.credits": "{n} Credits", "tools.title": "Verbinde deine Tools", "tools.mcp": "F\xFCr Claude Code und MCP-Clients im Terminal ausf\xFChren:", "tools.openai": "F\xFCr OpenAI-kompatible Tools: Basis-URL", "tools.key": "API-Schl\xFCssel", "tools.show": "Anzeigen", "jobs.title": "Deine letzten Auftr\xE4ge", "jobs.none": "Keine Auftr\xE4ge.", "jobs.model": "Modell", "jobs.container": "Container", "jobs.status.queued": "In Warteschlange", "jobs.status.running": "L\xE4uft", "jobs.status.done": "Fertig", "jobs.status.failed": "Fehlgeschlagen", "jobs.status.canceled": "Abgebrochen", "jobs.cost": "{n} Credits", working: "Wird bearbeitet\u2026", "err.agent_down": "BitPull auf diesem Computer antwortet nicht. Es startet innerhalb von 30 Sekunden von selbst neu: Versuch es gleich noch einmal.", "err.server": "Der BitPull-Server ist nicht erreichbar. Pr\xFCf deine Internetverbindung und versuch es noch einmal.", "err.session": "Diese Dashboard-Sitzung ist abgelaufen. \xD6ffne sie erneut \xFCber die BitPull-App.", "err.billing": "Zahlungen sind noch nicht aktiv.", "err.no_folder": "Dieser Ordner existiert auf diesem Computer nicht. Pr\xFCf den Pfad.", "err.not_folder": "Dieser Pfad ist eine Datei, kein Ordner.", "err.credits": "Nicht genug Credits.", "err.device": "Dieser Computer ist noch nicht verbunden. Lass die BitPull-App offen und versuch es in einer Minute noch einmal.", "err.no_model": "Gerade bietet kein Computer im Netzwerk ein KI-Modell an. Versuch es sp\xE4ter noch einmal.", "err.invalid": "Einige Werte sind ung\xFCltig. Pr\xFCf die Felder und versuch es noch einmal.", "tip.lang": "Sprache der App. Deine Auswahl wird auf diesem Computer gespeichert.", "tip.buy.base": "\xD6ffnet die sichere Zahlungsseite f\xFCr den Tarif Base: 4,50 \u20AC pro Monat mit 80 Credits jeden Monat. Du kannst jederzeit k\xFCndigen.", "tip.buy.pro": "\xD6ffnet die sichere Zahlungsseite f\xFCr den Tarif Pro: 9,90 \u20AC pro Monat mit 200 Credits jeden Monat, h\xF6chster Priorit\xE4t und allen GPUs. Du kannst jederzeit k\xFCndigen.", "tip.buy.recharge": "\xD6ffnet die sichere Zahlungsseite, um einmalig 80 Credits f\xFCr 5 \u20AC zu kaufen. Sie verfallen nie.", "tip.pause": "Stoppt das Verleihen sofort. Ein gerade laufender Auftrag wird an einen anderen Computer \xFCbergeben. Klick erneut, um fortzusetzen.", "tip.resume": "Startet das Verleihen wieder, nach deinen Regeln f\xFCrs Verleihen.", "tip.rules.save": "Speichert die Regeln oben. Sie gelten in wenigen Sekunden; nichts \xE4ndert sich, bis du hier klickst.", "tip.folder.add": "Erlaubt BitPull, den links eingegebenen Ordner zu lesen. Dateien au\xDFerhalb freigegebener Ordner werden nie gelesen oder geteilt.", "tip.folder.draft": "Erstellt bitpull.json im Ordner: die Liste seiner Dateien mit leeren Beschreibungen, die deine KI ausf\xFCllt. Es wird noch nichts ver\xF6ffentlicht.", "tip.folder.publish": "Teilt diesen Ordner im Netzwerk als \xF6ffentliches Repo, signiert von diesem Computer. Die Ver\xF6ffentlichung wird blockiert, wenn Schl\xFCssel oder Passw\xF6rter in den Dateien gefunden werden.", "tip.folder.remove": "BitPull liest diesen Ordner nicht mehr. Bereits daraus ver\xF6ffentlichte Repos bleiben online, bis du sie zur\xFCckziehst.", "tip.repo.withdraw": "Entfernt dieses Repo aus dem Netzwerk. Andere Nutzer k\xF6nnen es nicht mehr finden oder herunterladen. Deine Dateien bleiben auf deinem Computer.", "tip.ask": "Sendet deine Frage Ende-zu-Ende-verschl\xFCsselt an einen Computer im Netzwerk, auf dem ein offenes KI-Modell l\xE4uft. Kostet ein paar Credits.", "tip.tier": "Modellgr\xF6\xDFe: Klein ist schnell und g\xFCnstig, Gro\xDF ist schlauer und kostet mehr Credits.", "tip.show_key": "Zeigt den Schl\xFCssel, mit dem KI-Tools auf diesem Computer mit BitPull sprechen. Teile ihn mit niemandem.", "tip.setup.download": "L\xE4dt den offiziellen Installer von {name} f\xFCr diesen Computer in deinen Downloads-Ordner und \xF6ffnet ihn. Folge seinen Schritten, um fertig zu werden.", "tip.setup.start": "Startet {name}, das auf diesem Computer installiert ist, aber nicht l\xE4uft.", "tip.setup.pull": "L\xE4dt das KI-Modell {model} ({size} GB) in Ollama herunter, damit dieser Computer es anderen anbieten kann.", "tip.setup.open": "\xD6ffnet die offizielle Seite von {name} in deinem Browser.", "tip.setup.recheck": "Pr\xFCft erneut, was auf diesem Computer installiert ist und l\xE4uft.", "update.title": "App-Updates", "update.current": "Installierte Version: {v}", "update.latest": "Neueste Version: {v}", "update.button": "Nach Updates suchen", "update.install": "Version {v} jetzt installieren", "update.available": "Version {v} ist verf\xFCgbar.", "update.not_in_app": "Updates werden von der BitPull-App installiert. \xD6ffne dieses Dashboard \xFCber die App, um zu aktualisieren.", "update.state.requested": "App wird um Pr\xFCfung gebeten\u2026", "update.state.checking": "Suche nach Updates\u2026", "update.state.up_to_date": "Du hast die neueste Version.", "update.state.installing": "Version {v} wird heruntergeladen und installiert\u2026 die App startet von selbst neu.", "update.state.restarting": "Neustart mit Version {v}\u2026", "update.state.error": "Das Update hat nicht geklappt: {msg}. Versuch es sp\xE4ter noch einmal.", "tip.update": "Pr\xFCft, ob es eine neuere Version von BitPull gibt. Falls ja, wird sie heruntergeladen, ihre Signatur gepr\xFCft, sie installiert und die App neu gestartet. Das Verleihen pausiert f\xFCr ein paar Sekunden.", "tools.hint": "Lass deinen KI-Assistenten geteilten Code durchsuchen und die offenen Modelle und Computer des Netzwerks nutzen. W\xE4hle dein Tool:", "tools.connect": "Verbinden", "tools.connected": "Verbunden", "tools.copy": "Kopieren", "tools.copied": "Kopiert.", "tools.installed": "Installiert", "tools.not_found": "Auf diesem Computer nicht gefunden", "tools.done": "Fertig. Starte {name} neu, um BitPull zu nutzen.", "tools.manual": "So f\xFCgst du es von Hand hinzu:", "tools.config_invalid": "Die Einstellungsdatei von {name} ist kein g\xFCltiges JSON, daher hat BitPull sie nicht ver\xE4ndert. Korrigiere die Datei oder f\xFCge BitPull mit Kopieren von Hand hinzu.", "tip.tools.connect": "F\xFCgt BitPull automatisch zu den Einstellungen von {name} hinzu. Eine Sicherung der vorherigen Einstellungen wird daneben aufbewahrt.", "tip.tools.copy": "Kopiert den Befehl oder die Einstellungen in die Zwischenablage, damit du BitPull selbst zu {name} hinzuf\xFCgen kannst.", "models.title": "KI-Modelle zum Teilen", "models.hint": "Offene Modelle aller Art, die dieser Computer verleihen kann. Aufgef\xFChrt sind nur Modelle, deren Lizenz die Bereitstellung f\xFCr andere erlaubt. Heruntergeladene Modelle werden dem Netzwerk angeboten, solange das Verleihen aktiv ist.", "models.engine.title": "Engine f\xFCr Bilder, Sprache und Musik", "models.engine.help": "Lemonade (Open Source): Bildgenerierung, Spracherkennung, Sprachausgabe, Musik, Reranking und Hochskalieren. Wird in BitPull installiert, ohne Administratorrechte.", "models.engine.install": "Engine installieren", "models.engine.repair": "Engine neu installieren", "models.engine.unsupported": "Auf diesem Computer nicht verf\xFCgbar (ben\xF6tigt Apple Silicon oder Windows/Linux x64)", "models.need_engine": "Zuerst die Engine installieren", "models.not_here": "Auf diesem Computer nicht verf\xFCgbar", "models.shared": "Heruntergeladen \xB7 geteilt", "models.download": "Herunterladen ({size} GB)", "models.needs_ram": "Ben\xF6tigt etwa {ram} GB Speicher: hier eventuell langsam", "models.recommended": "Empfohlen", "models.license": "Lizenz", "models.ok.engine": "Engine wird installiert\u2026", "task.chat": "Text und Code", "task.vision": "Bilder \u2192 Text", "task.ocr": "Dokumente (OCR)", "task.translate": "\xDCbersetzung", "task.embed": "Embeddings (Suche)", "task.rerank": "Reranking", "task.image": "Bildgenerierung", "task.upscale": "Bilder hochskalieren", "task.stt": "Sprache \u2192 Text", "task.tts": "Text \u2192 Sprache", "task.music": "Musik", "limits.title": "Deine Limits f\xFCr andere", "limits.hint": "Wie viel KI-Arbeit dieser Computer f\xFCr andere leistet. Leer lassen f\xFCr kein Limit. Ist ein Limit erreicht, werden deine Modelle bis zum n\xE4chsten Zeitraum nicht mehr angeboten.", "limits.save": "Limits speichern", "limits.requests": "Anfragen", "limits.tokens": "Tokens", "limits.used": "Genutzt", "limits.day": "Pro Tag", "limits.week": "Pro Woche", "limits.month": "Pro Monat", "limits.none": "kein Limit", "limits.usage": "{requests} Anfragen \xB7 {tokens} Tokens", "limits.saved": "Limits gespeichert.", "tip.models.engine": "L\xE4dt die Open-Source-Engine Lemonade in BitPull, damit dieser Computer Bild-, Sprach- und Musikmodelle verleihen kann.", "tip.models.download": "L\xE4dt {model} ({size} GB) auf diesen Computer, um es anderen anzubieten. Du kannst es sp\xE4ter entfernen.", "tip.limits.save": "Speichert die t\xE4glichen, w\xF6chentlichen und monatlichen Limits f\xFCr KI-Arbeit f\xFCr andere.", "lend.visible": "\u2713 Das Netzwerk sieht diesen Computer: {cpus} CPU, {ram} GB f\xFCr andere verf\xFCgbar.", "lend.invisible": "Das Netzwerk sieht das Verleihen noch nicht: warte bis zu einer Minute; bleibt es so, pr\xFCfe die Internetverbindung.", "lend.unusable": "\u26A0 Noch niemand kann diesen Computer nutzen: hier kann kein Auftrag laufen. {reason}", "lend.unusable.docker": "Docker besteht die Isolationspr\xFCfung von BitPull nicht: siehe \u201EDiesen Computer einrichten\u201C.", "lend.unusable.off": "Container-Auftr\xE4ge sind aus und kein KI-Modell ist installiert: aktiviere \u201EContainer-Auftr\xE4ge\u201C oder lade ein Modell herunter.", "lend.docker_login": "Docker kann keine Images herunterladen, weil seine Docker-Hub-Anmeldung nicht mehr g\xFCltig ist. Klicke in Docker Desktop auf dein Konto (oben rechts) \u2192 Sign out, melde dich dann wieder an oder bleib abgemeldet. Dr\xFCcke danach Erneut pr\xFCfen.", "lend.off_hint": "Das Verleihen ist ausgeschaltet: Hake unten in \u201E{rules}\u201C \u201E{enabled}\u201C an und dr\xFCcke \u201E{save}\u201C. (Pause / Fortsetzen pausiert nur ein bereits aktives Verleihen.)", "lend.low_memory": "Es werden nur {mb} MB Speicher angeboten: nur wenige Auftr\xE4ge passen. Setze in \u201E{rules}\u201C \u201E{memory}\u201C z. B. auf 4096 (= 4 GB) und dr\xFCcke \u201E{save}\u201C.", "rules.awake": "W\xE4hrend des Verleihens wach bleiben", "rules.awake.help": "W\xE4hrend dieser Computer einen Auftrag f\xFCr jemanden ausf\xFChrt, geht er nicht in den Ruhezustand (der Bildschirm kann sich trotzdem ausschalten). Danach wie gewohnt. Verhindert abgebrochene Auftr\xE4ge.", "ask.wait": "Warten bis zu (Minuten)", "ask.wait.save": "Speichern", "ask.wait.saved": "Auf Antworten wird bis zu {n} Minuten gewartet.", "ask.wait.range": "Gib eine Minutenzahl zwischen 1 und 120 ein.", "tip.wait": "Wie lange auf eine Antwort der KI-Modelle des Netzwerks gewartet wird. Modelle auf dem Prozessor anderer k\xF6nnen Minuten brauchen. Auch deine KI kann es \xE4ndern." }, en: { "lang.name": "English", "app.title": "BitPull", "locked.text": "Open the dashboard from the BitPull app: its link contains the access key.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Direct address", "pill.relay_on": "Relay connected", "pill.relay_off": "Relay not connected", "pill.cached": "{n} cached copies", "net.title": "Live network", "net.online": "{n} computers online", "net.lending": "{n} lending now", "net.cpu": "{n} CPU cores", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPUs", "net.models": "{n} AI models", "net.jobs": "{n} jobs running", "credits.title": "Credit balance", "credits.plan": "{plan} plan \xB7 can go down to {n}", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recharge \u20AC5", "buy.ok": "Payment page opened in your browser.", "lend.title": "Lend this computer", "lend.hint": "Jobs run end-to-end encrypted in isolated sandboxes, without access to your files. You earn credits.", "lend.state.off": "Off", "lend.state.waiting": "Waiting", "lend.state.working": "Working", "lend.reason.lending_off": "Lending is off", "lend.reason.paused": "Paused", "lend.reason.outside_hours": "Outside your hours", "lend.reason.on_battery": "On battery", "lend.reason.computer_in_use": "You are using the computer", "lend.reason.no_jobs": "No jobs in the queue", "lend.running": "Running a {kind} job since {time}", "lend.detail": "{reason} \xB7 {n} jobs done \xB7 offers {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} models", "lend.pause": "Pause", "lend.resume": "Resume", "lend.paused_ok": "Lending paused. Any running job was handed to another computer.", "lend.resumed_ok": "Lending resumed.", "setup.title": "Set up this computer", "setup.hint": "What this computer needs to lend. Using the network needs nothing else. Installers come from the official sites; your system asks you to confirm.", "setup.checking": "Checking\u2026", "setup.docker.help": "Runs other people's jobs in isolated sandboxes. Needed for container jobs. Free for personal use and small businesses.", "setup.docker.download": "Download Docker", "setup.docker.start": "Start Docker", "setup.apple.title": "Apple Container (optional)", "setup.apple.help": "Stronger isolation: each job in its own virtual machine. Optional; Docker is enough to start.", "setup.apple.get": "Get Apple Container", "setup.ollama.help": "Runs open AI models (Qwen, Llama, Mistral\u2026). Needed to lend AI models.", "setup.ollama.download": "Download Ollama", "setup.ollama.start": "Start Ollama", "setup.model.title": "AI model", "setup.model.help": "The model this computer offers to others. Suggested for {ram} GB of memory: {model}.", "setup.model.download": "Download {model} ({size} GB)", "setup.model.none": "none yet", "setup.model.need_ollama": "Install and start Ollama first", "setup.nvidia.title": "NVIDIA GPU drivers (optional)", "setup.nvidia.help": "Only if this computer has an NVIDIA graphics card you want to lend.", "setup.nvidia.get": "Get NVIDIA drivers", "setup.status.running": "installed and running", "setup.status.installed": "installed", "setup.status.stopped": "installed, not running", "setup.status.missing": "not installed", "setup.status.found": "found", "setup.status.not_found": "not found", "setup.terminal": "Run in a terminal:", "setup.done": "Done", "setup.opened": "Done: opened {file}, follow its steps", "setup.recheck": "Check again", "setup.ok.download": "Download started. The installer opens by itself when it finishes: follow its steps.", "setup.ok.start": "Starting\u2026 it can take up to a minute. This list updates by itself.", "setup.ok.pull": "Model download started. Progress is shown above.", "setup.ok.page": "Page opened in your browser.", "setup.ok.recheck": "Checked again.", "rules.title": "Lending rules", "rules.enabled": "Lending on", "rules.enabled.help": "Master switch. When off, this computer never runs other people's jobs. You can still use the network yourself.", "rules.cpus": "Max CPUs", "rules.cpus.help": "How many processor cores a job may use at most. Example: on an 8-core computer, 2 leaves 6 cores free for you.", "rules.memory": "Max memory (MB)", "rules.memory.help": "RAM a job may use, in megabytes (1024 MB = 1 GB). BitPull never offers more than half of this computer's memory.", "rules.gpu": "GPU", "rules.gpu.none": "None", "rules.gpu.consumer": "Consumer (8\u201312 GB)", "rules.gpu.high": "High-end (16\u201324 GB)", "rules.gpu.datacenter": "Data-centre (40 GB+)", "rules.gpu.help": "The graphics card you lend, by video memory. Leave None if you have no dedicated GPU or do not want to lend it. A GPU earns the most credits.", "rules.containers": "Container jobs", "rules.containers.help": "Run builds, tests and scripts for others in a sandbox with no internet and no access to your files. Needs Docker (or Apple Container): see \u201CSet up this computer\u201D.", "rules.models": "Open models (Ollama)", "rules.models.help": "Answer AI requests with the open models installed in Ollama on this computer. Needs Ollama and at least one model.", "rules.idle": "Only after minutes idle", "rules.idle.help": "Lend only when you have not touched keyboard or mouse for this many minutes. 0 = lend even while you work.", "rules.ac": "Only when plugged in", "rules.ac.help": "On a laptop, stop lending when running on battery, so lending never drains it.", "rules.hours": "Only from / to hour (empty = always)", "rules.hours.help": "Lend only in this time window, in 24-hour format. Example: 22 and 8 = from 10 pm to 8 am. Leave both empty to lend at any hour.", "rules.cache": "Cached copies of others' repos", "rules.cache.help": "How many public repos of other users this computer keeps a copy of, so they stay available when their authors are offline. Uses a little disk space and earns credits. 0 = none.", "rules.save": "Save rules", "rules.saved": "Rules saved. They apply within a few seconds.", "rules.hours_both": "Fill both hours, or leave both empty to lend at any hour.", "folders.title": "Authorised folders", "folders.hint": "BitPull reads only these folders. To publish one it needs a complete bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Authorise", "folders.none": "No authorised folders.", "folders.draft": "Draft", "folders.publish": "Publish", "folders.remove": "Remove", "folders.need_path": "Write the full path of a folder first, e.g. /Users/you/projects/my-library.", "folders.added": "Folder authorised.", "folders.removed": "Folder removed. BitPull no longer reads it.", "folders.drafted": "Draft ready: {n} files found. Let your AI fill the summary and descriptions (prepare_publish tool), then press Publish.", "folders.published": 'Published "{name}" with {n} files.', "folders.secrets_in": "Found in: {where}", "folders.line": "{file} line {line}", "repos.title": "Your published repos", "repos.hint": "They update by themselves when you change the files (every 5 minutes).", "repos.none": "No published repos.", "repos.withdraw": "Withdraw", "repos.withdrawn": "Repo withdrawn from the network.", "ask.title": "Open models on the network", "ask.offers": "This computer offers: {models}.", "ask.offers_none": "no models (install Ollama to offer some)", "ask.placeholder": "Ask an open model on the network\u2026", "ask.small": "Small", "ask.medium": "Medium", "ask.large": "Large", "ask.button": "Ask", "ask.empty": "Write a question first.", "ask.waiting": "Looking for a computer with the model\u2026 this can take up to a minute.", "ask.credits": "{n} credits", "tools.title": "Connect your tools", "tools.mcp": "For Claude Code and MCP clients, run in a terminal:", "tools.openai": "For OpenAI-compatible tools: base URL", "tools.key": "API key", "tools.show": "Show", "jobs.title": "Your recent jobs", "jobs.none": "No jobs.", "jobs.model": "Model", "jobs.container": "Container", "jobs.status.queued": "Queued", "jobs.status.running": "Running", "jobs.status.done": "Done", "jobs.status.failed": "Failed", "jobs.status.canceled": "Canceled", "jobs.cost": "{n} credits", working: "Working\u2026", "err.agent_down": "BitPull on this computer is not responding. It restarts by itself within 30 seconds: try again shortly.", "err.server": "Can't reach the BitPull server. Check your internet connection and try again.", "err.session": "This dashboard session expired. Reopen it from the BitPull app.", "err.billing": "Payments are not active yet.", "err.no_folder": "This folder does not exist on this computer. Check the path.", "err.not_folder": "This path is a file, not a folder.", "err.credits": "Not enough credits.", "err.device": "This computer is not connected yet. Keep the BitPull app open and try again in a minute.", "err.no_model": "No computer on the network offers an AI model right now. Try again later.", "err.invalid": "Some values are not valid. Check the fields and try again.", "tip.lang": "Language of the app. Your choice is remembered on this computer.", "tip.buy.base": "Opens the secure payment page for the Base plan: \u20AC4.50 per month with 80 credits every month. You can cancel at any time.", "tip.buy.pro": "Opens the secure payment page for the Pro plan: \u20AC9.90 per month with 200 credits every month, top priority and all GPUs. You can cancel at any time.", "tip.buy.recharge": "Opens the secure payment page to buy 80 credits once, for \u20AC5. They never expire.", "tip.pause": "Stops lending right now. A job running at this moment is handed to another computer. Press again to resume.", "tip.resume": "Starts lending again, following your lending rules.", "tip.rules.save": "Saves the lending rules above. They apply within a few seconds; nothing changes until you press this.", "tip.folder.add": "Allows BitPull to read the folder written on the left. Files outside authorised folders are never read or shared.", "tip.folder.draft": "Creates bitpull.json in the folder: the list of its files with empty descriptions for your AI to complete. Nothing is published yet.", "tip.folder.publish": "Shares this folder on the network as a public repo, signed by this computer. Publication is blocked if keys or passwords are found in the files.", "tip.folder.remove": "BitPull stops reading this folder. Repos already published from it stay online until you withdraw them.", "tip.repo.withdraw": "Removes this repo from the network. Other users can no longer find or download it. Your files stay on your computer.", "tip.ask": "Sends your question, end-to-end encrypted, to a computer on the network that runs an open AI model. Costs a few credits.", "tip.tier": "Model size: small is fast and cheap, large is smarter and costs more credits.", "tip.show_key": "Shows the key that AI tools on this computer use to talk to BitPull. Do not share it.", "tip.setup.download": "Downloads the official installer of {name} for this computer into your Downloads folder and opens it. Follow its steps to finish.", "tip.setup.start": "Starts {name}, which is installed on this computer but not running.", "tip.setup.pull": "Downloads the AI model {model} ({size} GB) into Ollama, so this computer can offer it to others.", "tip.setup.open": "Opens the official {name} page in your browser.", "tip.setup.recheck": "Checks again what is installed and running on this computer.", "update.title": "App updates", "update.current": "Installed version: {v}", "update.latest": "Latest version: {v}", "update.button": "Check for updates", "update.install": "Install version {v} now", "update.available": "Version {v} is available.", "update.not_in_app": "Updates are installed by the BitPull app. Open this dashboard from the app to update.", "update.state.requested": "Asking the app to check\u2026", "update.state.checking": "Checking for updates\u2026", "update.state.up_to_date": "You have the latest version.", "update.state.installing": "Downloading and installing version {v}\u2026 the app restarts by itself.", "update.state.restarting": "Restarting with version {v}\u2026", "update.state.error": "The update did not work: {msg}. Try again later.", "tip.update": "Checks whether a newer version of BitPull exists. If it does, it downloads it, verifies its signature, installs it and restarts the app. Lending pauses for a few seconds.", "tools.hint": "Let your AI assistant search shared code and use the network's open models and computers. Pick your tool:", "tools.connect": "Connect", "tools.connected": "Connected", "tools.copy": "Copy", "tools.copied": "Copied.", "tools.installed": "Installed", "tools.not_found": "Not found on this computer", "tools.done": "Done. Restart {name} to start using BitPull.", "tools.manual": "To add it by hand:", "tools.config_invalid": "{name}'s settings file is not valid JSON, so BitPull did not touch it. Fix the file or add BitPull by hand with Copy.", "tip.tools.connect": "Adds BitPull to {name}'s settings automatically. A backup of the previous settings is kept next to them.", "tip.tools.copy": "Copies the command or settings to the clipboard, to add BitPull to {name} yourself.", "models.title": "AI models to share", "models.hint": "Open models of every kind that this computer can lend. Only models whose licence allows serving them to others are listed. Downloaded models are offered to the network while lending is on.", "models.engine.title": "Image, speech and music engine", "models.engine.help": "Lemonade (open source): runs image generation, speech-to-text, text-to-speech, music, reranking and upscaling. Installed inside BitPull, no administrator rights.", "models.engine.install": "Install engine", "models.engine.repair": "Reinstall engine", "models.engine.unsupported": "Not available on this computer (needs Apple silicon, or Windows/Linux x64)", "models.need_engine": "Install the engine first", "models.not_here": "Not available on this computer", "models.shared": "Downloaded \xB7 shared", "models.download": "Download ({size} GB)", "models.needs_ram": "Needs about {ram} GB of memory: it may be slow here", "models.recommended": "Recommended", "models.license": "Licence", "models.ok.engine": "Installing the engine\u2026", "task.chat": "Text and code", "task.vision": "Images \u2192 text", "task.ocr": "Documents (OCR)", "task.translate": "Translation", "task.embed": "Embeddings (search)", "task.rerank": "Reranking", "task.image": "Image generation", "task.upscale": "Image upscaling", "task.stt": "Speech to text", "task.tts": "Text to speech", "task.music": "Music", "limits.title": "Your limits for others", "limits.hint": "How much AI work this computer does for others. Leave empty for no limit. When a limit is reached, your models are no longer offered until the period rolls over.", "limits.save": "Save limits", "limits.requests": "Requests", "limits.tokens": "Tokens", "limits.used": "Used", "limits.day": "Per day", "limits.week": "Per week", "limits.month": "Per month", "limits.none": "no limit", "limits.usage": "{requests} requests \xB7 {tokens} tokens", "limits.saved": "Limits saved.", "tip.models.engine": "Downloads the open-source Lemonade engine into BitPull, so this computer can lend image, speech and music models.", "tip.models.download": "Downloads {model} ({size} GB) to this computer so it can offer it to others. You can remove it later.", "tip.limits.save": "Saves the daily, weekly and monthly limits for AI work done for others.", "lend.visible": "\u2713 The network sees this computer: {cpus} CPU, {ram} GB available to others.", "lend.invisible": "The network does not see the lending yet: wait up to a minute; if it stays like this, check the internet connection.", "lend.unusable": "\u26A0 Nobody can use this computer yet: no job can run here. {reason}", "lend.unusable.docker": `Docker does not pass BitPull's isolation check: see "Set up this computer".`, "lend.unusable.off": 'Container jobs are off and no AI model is installed: turn on "Container jobs" or download a model.', "lend.docker_login": "Docker cannot download images because its Docker Hub login is no longer valid. In Docker Desktop click your account (top right) \u2192 Sign out, then sign in again or stay signed out. Then press Check again.", "lend.off_hint": 'Lending is switched off: tick "{enabled}" in "{rules}" below and press "{save}". (Pause / Resume only pauses lending that is already on.)', "lend.low_memory": 'Only {mb} MB of memory is offered: few jobs fit. In "{rules}" set "{memory}" to e.g. 4096 (= 4 GB) and press "{save}".', "rules.awake": "Stay awake while lending", "rules.awake.help": "While it runs a job for someone, this computer does not go to sleep (the display can still turn off). Afterwards it can sleep as usual. Prevents jobs being cut off.", "ask.wait": "Wait up to (minutes)", "ask.wait.save": "Save", "ask.wait.saved": "Answers will be awaited up to {n} minutes.", "ask.wait.range": "Enter a number of minutes between 1 and 120.", "tip.wait": "How long to wait for an answer from the network's AI models before giving up. Models on someone's processor can take minutes. Your AI can change it too." }, es: { "lang.name": "Espa\xF1ol", "app.title": "BitPull", "locked.text": "Abre el panel desde la app BitPull: su enlace contiene la clave de acceso.", "pill.online": "En l\xEDnea", "pill.offline": "Sin conexi\xF3n", "pill.direct": "Direcci\xF3n directa", "pill.relay_on": "Rel\xE9 conectado", "pill.relay_off": "Rel\xE9 no conectado", "pill.cached": "{n} copias en cach\xE9", "net.title": "Red en vivo", "net.online": "{n} equipos en l\xEDnea", "net.lending": "{n} prestando ahora", "net.cpu": "{n} n\xFAcleos de CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPU", "net.models": "{n} modelos de IA", "net.jobs": "{n} tareas en curso", "credits.title": "Saldo de cr\xE9ditos", "credits.plan": "Plan {plan} \xB7 puede bajar hasta {n}", "plan.free": "Gratis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recargar \u20AC5", "buy.ok": "P\xE1gina de pago abierta en tu navegador.", "lend.title": "Prestar este equipo", "lend.hint": "Las tareas se ejecutan cifradas de extremo a extremo en entornos aislados, sin acceso a tus archivos. Ganas cr\xE9ditos.", "lend.state.off": "Apagado", "lend.state.waiting": "En espera", "lend.state.working": "Trabajando", "lend.reason.lending_off": "El pr\xE9stamo est\xE1 desactivado", "lend.reason.paused": "En pausa", "lend.reason.outside_hours": "Fuera de tu horario", "lend.reason.on_battery": "Con bater\xEDa", "lend.reason.computer_in_use": "Est\xE1s usando el equipo", "lend.reason.no_jobs": "No hay tareas en la cola", "lend.running": "Ejecutando una tarea de {kind} desde {time}", "lend.detail": "{reason} \xB7 {n} tareas hechas \xB7 ofrece {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", entorno aislado {name}", "lend.detail.models": ", {n} modelos", "lend.pause": "Pausar", "lend.resume": "Reanudar", "lend.paused_ok": "Pr\xE9stamo en pausa. La tarea en curso pas\xF3 a otro equipo.", "lend.resumed_ok": "Pr\xE9stamo reanudado.", "setup.title": "Configurar este equipo", "setup.hint": "Lo que este equipo necesita para prestar. Para usar la red no hace falta nada m\xE1s. Los instaladores vienen de los sitios oficiales; tu sistema te pedir\xE1 confirmaci\xF3n.", "setup.checking": "Comprobando\u2026", "setup.docker.help": "Ejecuta las tareas de otras personas en entornos aislados. Necesario para tareas de contenedor. Gratis para uso personal y peque\xF1as empresas.", "setup.docker.download": "Descargar Docker", "setup.docker.start": "Iniciar Docker", "setup.apple.title": "Apple Container (opcional)", "setup.apple.help": "M\xE1s aislamiento: cada tarea en su propia m\xE1quina virtual. Opcional; con Docker basta para empezar.", "setup.apple.get": "Obtener Apple Container", "setup.ollama.help": "Ejecuta modelos de IA abiertos (Qwen, Llama, Mistral\u2026). Necesario para prestar modelos de IA.", "setup.ollama.download": "Descargar Ollama", "setup.ollama.start": "Iniciar Ollama", "setup.model.title": "Modelo de IA", "setup.model.help": "El modelo que este equipo ofrece a otros. Recomendado para {ram} GB de memoria: {model}.", "setup.model.download": "Descargar {model} ({size} GB)", "setup.model.none": "ninguno a\xFAn", "setup.model.need_ollama": "Primero instala e inicia Ollama", "setup.nvidia.title": "Controladores de GPU NVIDIA (opcional)", "setup.nvidia.help": "Solo si este equipo tiene una tarjeta gr\xE1fica NVIDIA que quieras prestar.", "setup.nvidia.get": "Obtener controladores NVIDIA", "setup.status.running": "instalado y en ejecuci\xF3n", "setup.status.installed": "instalado", "setup.status.stopped": "instalado, detenido", "setup.status.missing": "no instalado", "setup.status.found": "encontrado", "setup.status.not_found": "no encontrado", "setup.terminal": "Ejecuta en una terminal:", "setup.done": "Listo", "setup.opened": "Listo: se abri\xF3 {file}, sigue sus pasos", "setup.recheck": "Comprobar de nuevo", "setup.ok.download": "Descarga iniciada. El instalador se abrir\xE1 solo al terminar: sigue sus pasos.", "setup.ok.start": "Iniciando\u2026 puede tardar hasta un minuto. Esta lista se actualiza sola.", "setup.ok.pull": "Descarga del modelo iniciada. El progreso se muestra arriba.", "setup.ok.page": "P\xE1gina abierta en tu navegador.", "setup.ok.recheck": "Comprobado de nuevo.", "rules.title": "Reglas de pr\xE9stamo", "rules.enabled": "Pr\xE9stamo activado", "rules.enabled.help": "Interruptor general. Si est\xE1 apagado, este equipo nunca ejecuta tareas de otros. Aun as\xED puedes usar la red.", "rules.cpus": "CPU m\xE1x.", "rules.cpus.help": "Cu\xE1ntos n\xFAcleos del procesador puede usar una tarea como m\xE1ximo. Ejemplo: en un equipo de 8 n\xFAcleos, 2 te deja 6 libres.", "rules.memory": "Memoria m\xE1x. (MB)", "rules.memory.help": "RAM que puede usar una tarea, en megabytes (1024 MB = 1 GB). BitPull nunca ofrece m\xE1s de la mitad de la memoria de este equipo.", "rules.gpu": "GPU", "rules.gpu.none": "Ninguna", "rules.gpu.consumer": "Dom\xE9stica (8\u201312 GB)", "rules.gpu.high": "Gama alta (16\u201324 GB)", "rules.gpu.datacenter": "Centro de datos (40 GB+)", "rules.gpu.help": "La tarjeta gr\xE1fica que prestas, seg\xFAn su memoria de video. Deja Ninguna si no tienes GPU dedicada o no quieres prestarla. Una GPU es lo que m\xE1s cr\xE9ditos gana.", "rules.containers": "Tareas de contenedor", "rules.containers.help": "Ejecuta compilaciones, pruebas y scripts de otros en un entorno aislado sin internet ni acceso a tus archivos. Requiere Docker (o Apple Container): consulta \xABConfigurar este equipo\xBB.", "rules.models": "Modelos abiertos (Ollama)", "rules.models.help": "Responde solicitudes de IA con los modelos abiertos instalados en Ollama en este equipo. Requiere Ollama y al menos un modelo.", "rules.idle": "Solo tras minutos de inactividad", "rules.idle.help": "Presta solo cuando no hayas tocado el teclado ni el rat\xF3n durante estos minutos. 0 = prestar incluso mientras trabajas.", "rules.ac": "Solo conectado a la corriente", "rules.ac.help": "En un port\xE1til, deja de prestar cuando funciona con bater\xEDa, para no agotarla.", "rules.hours": "Solo de / a la hora (vac\xEDo = siempre)", "rules.hours.help": "Presta solo en este horario, en formato de 24 horas. Ejemplo: 22 y 8 = de 22:00 a 8:00. Deja ambos vac\xEDos para prestar a cualquier hora.", "rules.cache": "Copias en cach\xE9 de repos ajenos", "rules.cache.help": "Cu\xE1ntos repos p\xFAblicos de otros usuarios guarda este equipo, para que sigan disponibles cuando sus autores no est\xE9n conectados. Usa poco espacio en disco y gana cr\xE9ditos. 0 = ninguno.", "rules.save": "Guardar reglas", "rules.saved": "Reglas guardadas. Se aplican en unos segundos.", "rules.hours_both": "Rellena ambas horas o d\xE9jalas vac\xEDas para prestar a cualquier hora.", "folders.title": "Carpetas autorizadas", "folders.hint": "BitPull solo lee estas carpetas. Para publicar una necesita un bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizar", "folders.none": "No hay carpetas autorizadas.", "folders.draft": "Borrador", "folders.publish": "Publicar", "folders.remove": "Quitar", "folders.need_path": "Primero escribe la ruta completa de una carpeta, p. ej. /Users/you/projects/my-library.", "folders.added": "Carpeta autorizada.", "folders.removed": "Carpeta quitada. BitPull ya no la lee.", "folders.drafted": "Borrador listo: {n} archivos encontrados. Deja que tu IA complete el resumen y las descripciones (herramienta prepare_publish) y luego pulsa Publicar.", "folders.published": 'Publicado "{name}" con {n} archivos.', "folders.secrets_in": "Encontrado en: {where}", "folders.line": "{file} l\xEDnea {line}", "repos.title": "Tus repos publicados", "repos.hint": "Se actualizan solos cuando cambias los archivos (cada 5 minutos).", "repos.none": "No hay repos publicados.", "repos.withdraw": "Retirar", "repos.withdrawn": "Repo retirado de la red.", "ask.title": "Modelos abiertos en la red", "ask.offers": "Este equipo ofrece: {models}.", "ask.offers_none": "ning\xFAn modelo (instala Ollama para ofrecer alguno)", "ask.placeholder": "Pregunta a un modelo abierto de la red\u2026", "ask.small": "Peque\xF1o", "ask.medium": "Mediano", "ask.large": "Grande", "ask.button": "Preguntar", "ask.empty": "Primero escribe una pregunta.", "ask.waiting": "Buscando un equipo con el modelo\u2026 puede tardar hasta un minuto.", "ask.credits": "{n} cr\xE9ditos", "tools.title": "Conecta tus herramientas", "tools.mcp": "Para Claude Code y clientes MCP, ejecuta en una terminal:", "tools.openai": "Para herramientas compatibles con OpenAI: URL base", "tools.key": "Clave de API", "tools.show": "Mostrar", "jobs.title": "Tus tareas recientes", "jobs.none": "No hay tareas.", "jobs.model": "Modelo", "jobs.container": "Contenedor", "jobs.status.queued": "En cola", "jobs.status.running": "En curso", "jobs.status.done": "Hecha", "jobs.status.failed": "Fallida", "jobs.status.canceled": "Cancelada", "jobs.cost": "{n} cr\xE9ditos", working: "Procesando\u2026", "err.agent_down": "BitPull no responde en este equipo. Se reinicia solo en 30 segundos: int\xE9ntalo de nuevo en breve.", "err.server": "No se puede conectar con el servidor de BitPull. Revisa tu conexi\xF3n a internet e int\xE9ntalo de nuevo.", "err.session": "La sesi\xF3n del panel caduc\xF3. Vuelve a abrirlo desde la app BitPull.", "err.billing": "Los pagos a\xFAn no est\xE1n activos.", "err.no_folder": "Esta carpeta no existe en este equipo. Revisa la ruta.", "err.not_folder": "Esta ruta es un archivo, no una carpeta.", "err.credits": "No tienes suficientes cr\xE9ditos.", "err.device": "Este equipo a\xFAn no est\xE1 conectado. Mant\xE9n abierta la app BitPull e int\xE9ntalo en un minuto.", "err.no_model": "Ahora mismo ning\xFAn equipo de la red ofrece un modelo de IA. Int\xE9ntalo m\xE1s tarde.", "err.invalid": "Algunos valores no son v\xE1lidos. Revisa los campos e int\xE9ntalo de nuevo.", "tip.lang": "Idioma de la app. Tu elecci\xF3n se recuerda en este equipo.", "tip.buy.base": "Abre la p\xE1gina de pago seguro del plan Base: \u20AC4.50 al mes con 80 cr\xE9ditos cada mes. Puedes cancelar cuando quieras.", "tip.buy.pro": "Abre la p\xE1gina de pago seguro del plan Pro: \u20AC9.90 al mes con 200 cr\xE9ditos cada mes, m\xE1xima prioridad y todas las GPU. Puedes cancelar cuando quieras.", "tip.buy.recharge": "Abre la p\xE1gina de pago seguro para comprar 80 cr\xE9ditos una sola vez, por \u20AC5. No caducan nunca.", "tip.pause": "Detiene el pr\xE9stamo ahora mismo. La tarea que se est\xE9 ejecutando en ese momento pasa a otro equipo. Pulsa de nuevo para reanudar.", "tip.resume": "Vuelve a prestar el equipo, siguiendo tus reglas de pr\xE9stamo.", "tip.rules.save": "Guarda las reglas de pr\xE9stamo de arriba. Se aplican en unos segundos; nada cambia hasta que pulses aqu\xED.", "tip.folder.add": "Permite que BitPull lea la carpeta escrita a la izquierda. Los archivos fuera de las carpetas autorizadas nunca se leen ni se comparten.", "tip.folder.draft": "Crea bitpull.json en la carpeta: la lista de sus archivos con descripciones vac\xEDas para que tu AI las complete. Todav\xEDa no se publica nada.", "tip.folder.publish": "Comparte esta carpeta en la red como repo p\xFAblico, firmado por este equipo. La publicaci\xF3n se bloquea si se encuentran claves o contrase\xF1as en los archivos.", "tip.folder.remove": "BitPull deja de leer esta carpeta. Los repos ya publicados desde ella siguen en l\xEDnea hasta que los retires.", "tip.repo.withdraw": "Quita este repo de la red. Los dem\xE1s usuarios ya no podr\xE1n encontrarlo ni descargarlo. Tus archivos se quedan en tu equipo.", "tip.ask": "Env\xEDa tu pregunta, cifrada de extremo a extremo, a un equipo de la red que ejecuta un modelo de AI abierto. Cuesta unos pocos cr\xE9ditos.", "tip.tier": "Tama\xF1o del modelo: el peque\xF1o es r\xE1pido y barato; el grande es m\xE1s inteligente y cuesta m\xE1s cr\xE9ditos.", "tip.show_key": "Muestra la clave que usan las herramientas de AI de este equipo para comunicarse con BitPull. No la compartas.", "tip.setup.download": "Descarga el instalador oficial de {name} para este equipo en tu carpeta Descargas y lo abre. Sigue sus pasos para terminar.", "tip.setup.start": "Inicia {name}, que est\xE1 instalado en este equipo pero no se est\xE1 ejecutando.", "tip.setup.pull": "Descarga el modelo de AI {model} ({size} GB) en Ollama, para que este equipo pueda ofrecerlo a otros.", "tip.setup.open": "Abre la p\xE1gina oficial de {name} en tu navegador.", "tip.setup.recheck": "Vuelve a comprobar qu\xE9 est\xE1 instalado y en ejecuci\xF3n en este equipo.", "update.title": "Actualizaciones de la app", "update.current": "Versi\xF3n instalada: {v}", "update.latest": "\xDAltima versi\xF3n: {v}", "update.button": "Buscar actualizaciones", "update.install": "Instalar la versi\xF3n {v} ahora", "update.available": "La versi\xF3n {v} est\xE1 disponible.", "update.not_in_app": "Las actualizaciones las instala la app BitPull. Abre este panel desde la app para actualizar.", "update.state.requested": "Pidiendo a la app que busque\u2026", "update.state.checking": "Buscando actualizaciones\u2026", "update.state.up_to_date": "Tienes la \xFAltima versi\xF3n.", "update.state.installing": "Descargando e instalando la versi\xF3n {v}\u2026 la app se reinicia sola.", "update.state.restarting": "Reiniciando con la versi\xF3n {v}\u2026", "update.state.error": "La actualizaci\xF3n no funcion\xF3: {msg}. Int\xE9ntalo m\xE1s tarde.", "tip.update": "Comprueba si existe una versi\xF3n m\xE1s reciente de BitPull. Si la hay, la descarga, verifica su firma, la instala y reinicia la app. El pr\xE9stamo se pausa unos segundos.", "tools.hint": "Deja que tu asistente de AI busque c\xF3digo compartido y use los modelos abiertos y los equipos de la red. Elige tu herramienta:", "tools.connect": "Conectar", "tools.connected": "Conectado", "tools.copy": "Copiar", "tools.copied": "Copiado.", "tools.installed": "Instalado", "tools.not_found": "No se encontr\xF3 en este equipo", "tools.done": "Listo. Reinicia {name} para empezar a usar BitPull.", "tools.manual": "Para a\xF1adirlo a mano:", "tools.config_invalid": "El archivo de configuraci\xF3n de {name} no es JSON v\xE1lido, as\xED que BitPull no lo modific\xF3. Corrige el archivo o a\xF1ade BitPull a mano con Copiar.", "tip.tools.connect": "A\xF1ade BitPull a la configuraci\xF3n de {name} autom\xE1ticamente. Se guarda una copia de seguridad de la configuraci\xF3n anterior junto a ella.", "tip.tools.copy": "Copia el comando o la configuraci\xF3n al portapapeles, para que a\xF1adas BitPull a {name} t\xFA mismo.", "models.title": "Modelos de IA para compartir", "models.hint": "Modelos abiertos de todo tipo que este ordenador puede prestar. Solo se muestran modelos cuya licencia permite servirlos a otros. Los modelos descargados se ofrecen a la red mientras el pr\xE9stamo est\xE1 activo.", "models.engine.title": "Motor de im\xE1genes, voz y m\xFAsica", "models.engine.help": "Lemonade (c\xF3digo abierto): genera im\xE1genes, transcribe voz, lee textos en voz alta, crea m\xFAsica, reordena documentos y ampl\xEDa im\xE1genes. Se instala dentro de BitPull, sin permisos de administrador.", "models.engine.install": "Instalar motor", "models.engine.repair": "Reinstalar motor", "models.engine.unsupported": "No disponible en este ordenador (requiere Apple silicon, o Windows/Linux x64)", "models.need_engine": "Instala primero el motor", "models.not_here": "No disponible en este ordenador", "models.shared": "Descargado \xB7 compartido", "models.download": "Descargar ({size} GB)", "models.needs_ram": "Necesita unos {ram} GB de memoria: aqu\xED puede ir lento", "models.recommended": "Recomendado", "models.license": "Licencia", "models.ok.engine": "Instalando el motor\u2026", "task.chat": "Texto y c\xF3digo", "task.vision": "Im\xE1genes \u2192 texto", "task.ocr": "Documentos (OCR)", "task.translate": "Traducci\xF3n", "task.embed": "Embeddings (b\xFAsqueda)", "task.rerank": "Reordenaci\xF3n", "task.image": "Generaci\xF3n de im\xE1genes", "task.upscale": "Ampliaci\xF3n de im\xE1genes", "task.stt": "Voz a texto", "task.tts": "Texto a voz", "task.music": "M\xFAsica", "limits.title": "Tus l\xEDmites para otros", "limits.hint": "Cu\xE1nto trabajo de IA hace este ordenador para otros. D\xE9jalo vac\xEDo para no poner l\xEDmite. Al alcanzar un l\xEDmite, tus modelos dejan de ofrecerse hasta el siguiente periodo.", "limits.save": "Guardar l\xEDmites", "limits.requests": "Solicitudes", "limits.tokens": "Tokens", "limits.used": "Usado", "limits.day": "Por d\xEDa", "limits.week": "Por semana", "limits.month": "Por mes", "limits.none": "sin l\xEDmite", "limits.usage": "{requests} solicitudes \xB7 {tokens} tokens", "limits.saved": "L\xEDmites guardados.", "tip.models.engine": "Descarga en BitPull el motor de c\xF3digo abierto Lemonade, para que este ordenador pueda prestar modelos de imagen, voz y m\xFAsica.", "tip.models.download": "Descarga {model} ({size} GB) en este ordenador para ofrecerlo a otros. Puedes eliminarlo despu\xE9s.", "tip.limits.save": "Guarda los l\xEDmites diarios, semanales y mensuales del trabajo de IA para otros.", "lend.visible": "\u2713 La red ve este ordenador: {cpus} CPU, {ram} GB disponibles para otros.", "lend.invisible": "La red a\xFAn no ve el pr\xE9stamo: espera hasta un minuto; si sigue as\xED, revisa la conexi\xF3n a internet.", "lend.unusable": "\u26A0 Nadie puede usar a\xFAn este ordenador: aqu\xED no puede ejecutarse ning\xFAn trabajo. {reason}", "lend.unusable.docker": 'Docker no supera la comprobaci\xF3n de aislamiento de BitPull: mira "Configurar este ordenador".', "lend.unusable.off": 'Los trabajos en contenedor est\xE1n desactivados y no hay ning\xFAn modelo de IA: activa "Trabajos en contenedor" o descarga un modelo.', "lend.docker_login": "Docker no puede descargar im\xE1genes porque su sesi\xF3n de Docker Hub ya no es v\xE1lida. En Docker Desktop haz clic en tu cuenta (arriba a la derecha) \u2192 Sign out, luego vuelve a iniciar sesi\xF3n o qu\xE9date sin sesi\xF3n. Despu\xE9s pulsa Comprobar de nuevo.", "lend.off_hint": 'El pr\xE9stamo est\xE1 apagado: marca "{enabled}" en "{rules}" abajo y pulsa "{save}". (Pausa / Reanudar solo pausa un pr\xE9stamo ya activo.)', "lend.low_memory": 'Solo ofreces {mb} MB de memoria: caben pocos trabajos. En "{rules}" pon "{memory}" por ejemplo en 4096 (= 4 GB) y pulsa "{save}".', "rules.awake": "Permanecer activo durante el pr\xE9stamo", "rules.awake.help": "Mientras ejecuta un trabajo para alguien, este ordenador no entra en suspensi\xF3n (la pantalla puede apagarse igualmente). Despu\xE9s se suspende como siempre. Evita que se corten trabajos.", "ask.wait": "Esperar hasta (minutos)", "ask.wait.save": "Guardar", "ask.wait.saved": "Las respuestas se esperar\xE1n hasta {n} minutos.", "ask.wait.range": "Introduce un n\xFAmero de minutos entre 1 y 120.", "tip.wait": "Cu\xE1nto esperar la respuesta de los modelos de IA de la red antes de rendirse. Los modelos en el procesador de alguien pueden tardar minutos. Tambi\xE9n puede cambiarlo tu IA." }, fr: { "lang.name": "Fran\xE7ais", "app.title": "BitPull", "locked.text": "Ouvrez le tableau de bord depuis l'app BitPull : son lien contient la cl\xE9 d'acc\xE8s.", "pill.online": "En ligne", "pill.offline": "Hors ligne", "pill.direct": "Adresse directe", "pill.relay_on": "Relais connect\xE9", "pill.relay_off": "Relais non connect\xE9", "pill.cached": "{n} copies en cache", "net.title": "R\xE9seau en direct", "net.online": "{n} ordinateurs en ligne", "net.lending": "{n} en pr\xEAt actuellement", "net.cpu": "{n} c\u0153urs CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPU", "net.models": "{n} mod\xE8les d'IA", "net.jobs": "{n} t\xE2ches en cours", "credits.title": "Solde de cr\xE9dits", "credits.plan": "Forfait {plan} \xB7 peut descendre jusqu'\xE0 {n}", "plan.free": "Gratuit", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Recharger 5 \u20AC", "buy.ok": "Page de paiement ouverte dans votre navigateur.", "lend.title": "Pr\xEAter cet ordinateur", "lend.hint": "Les t\xE2ches s'ex\xE9cutent chiffr\xE9es de bout en bout dans des bacs \xE0 sable isol\xE9s, sans acc\xE8s \xE0 vos fichiers. Vous gagnez des cr\xE9dits.", "lend.state.off": "D\xE9sactiv\xE9", "lend.state.waiting": "En attente", "lend.state.working": "Au travail", "lend.reason.lending_off": "Le pr\xEAt est d\xE9sactiv\xE9", "lend.reason.paused": "En pause", "lend.reason.outside_hours": "Hors de vos horaires", "lend.reason.on_battery": "Sur batterie", "lend.reason.computer_in_use": "Vous utilisez l'ordinateur", "lend.reason.no_jobs": "Aucune t\xE2che en file d'attente", "lend.running": "Ex\xE9cute une t\xE2che {kind} depuis {time}", "lend.detail": "{reason} \xB7 {n} t\xE2ches termin\xE9es \xB7 offre {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", bac \xE0 sable {name}", "lend.detail.models": ", {n} mod\xE8les", "lend.pause": "Pause", "lend.resume": "Reprendre", "lend.paused_ok": "Pr\xEAt en pause. Toute t\xE2che en cours a \xE9t\xE9 confi\xE9e \xE0 un autre ordinateur.", "lend.resumed_ok": "Pr\xEAt repris.", "setup.title": "Configurer cet ordinateur", "setup.hint": "Ce dont cet ordinateur a besoin pour pr\xEAter. Utiliser le r\xE9seau ne demande rien d'autre. Les installateurs viennent des sites officiels ; votre syst\xE8me vous demande de confirmer.", "setup.checking": "V\xE9rification\u2026", "setup.docker.help": "Ex\xE9cute les t\xE2ches des autres dans des bacs \xE0 sable isol\xE9s. N\xE9cessaire pour les t\xE2ches conteneur. Gratuit pour un usage personnel et les petites entreprises.", "setup.docker.download": "T\xE9l\xE9charger Docker", "setup.docker.start": "D\xE9marrer Docker", "setup.apple.title": "Apple Container (facultatif)", "setup.apple.help": "Isolation renforc\xE9e : chaque t\xE2che dans sa propre machine virtuelle. Facultatif ; Docker suffit pour commencer.", "setup.apple.get": "Obtenir Apple Container", "setup.ollama.help": "Ex\xE9cute des mod\xE8les d'IA ouverts (Qwen, Llama, Mistral\u2026). N\xE9cessaire pour pr\xEAter des mod\xE8les d'IA.", "setup.ollama.download": "T\xE9l\xE9charger Ollama", "setup.ollama.start": "D\xE9marrer Ollama", "setup.model.title": "Mod\xE8le d'IA", "setup.model.help": "Le mod\xE8le que cet ordinateur propose aux autres. Sugg\xE9r\xE9 pour {ram} GB de m\xE9moire : {model}.", "setup.model.download": "T\xE9l\xE9charger {model} ({size} GB)", "setup.model.none": "aucun pour l'instant", "setup.model.need_ollama": "Installez et d\xE9marrez d'abord Ollama", "setup.nvidia.title": "Pilotes GPU NVIDIA (facultatif)", "setup.nvidia.help": "Seulement si cet ordinateur a une carte graphique NVIDIA que vous voulez pr\xEAter.", "setup.nvidia.get": "Obtenir les pilotes NVIDIA", "setup.status.running": "install\xE9 et actif", "setup.status.installed": "install\xE9", "setup.status.stopped": "install\xE9, non d\xE9marr\xE9", "setup.status.missing": "non install\xE9", "setup.status.found": "trouv\xE9", "setup.status.not_found": "introuvable", "setup.terminal": "Ex\xE9cutez dans un terminal :", "setup.done": "Termin\xE9", "setup.opened": "Termin\xE9 : {file} ouvert, suivez ses \xE9tapes", "setup.recheck": "Rev\xE9rifier", "setup.ok.download": "T\xE9l\xE9chargement lanc\xE9. L'installateur s'ouvrira tout seul \xE0 la fin : suivez ses \xE9tapes.", "setup.ok.start": "D\xE9marrage\u2026 cela peut prendre jusqu'\xE0 une minute. Cette liste se met \xE0 jour toute seule.", "setup.ok.pull": "T\xE9l\xE9chargement du mod\xE8le lanc\xE9. La progression s'affiche ci-dessus.", "setup.ok.page": "Page ouverte dans votre navigateur.", "setup.ok.recheck": "V\xE9rification refaite.", "rules.title": "R\xE8gles de pr\xEAt", "rules.enabled": "Pr\xEAt activ\xE9", "rules.enabled.help": "Interrupteur g\xE9n\xE9ral. D\xE9sactiv\xE9, cet ordinateur n'ex\xE9cute jamais les t\xE2ches des autres. Vous pouvez toujours utiliser le r\xE9seau vous-m\xEAme.", "rules.cpus": "CPU max", "rules.cpus.help": "Nombre maximal de c\u0153urs de processeur qu'une t\xE2che peut utiliser. Exemple : sur un ordinateur \xE0 8 c\u0153urs, 2 vous laisse 6 c\u0153urs libres.", "rules.memory": "M\xE9moire max (MB)", "rules.memory.help": "RAM qu'une t\xE2che peut utiliser, en m\xE9gaoctets (1024 MB = 1 GB). BitPull ne propose jamais plus de la moiti\xE9 de la m\xE9moire de cet ordinateur.", "rules.gpu": "GPU", "rules.gpu.none": "Aucun", "rules.gpu.consumer": "Grand public (8\u201312 GB)", "rules.gpu.high": "Haut de gamme (16\u201324 GB)", "rules.gpu.datacenter": "Centre de donn\xE9es (40 GB+)", "rules.gpu.help": "La carte graphique que vous pr\xEAtez, selon sa m\xE9moire vid\xE9o. Laissez Aucun si vous n'avez pas de GPU d\xE9di\xE9 ou ne voulez pas le pr\xEAter. Un GPU rapporte le plus de cr\xE9dits.", "rules.containers": "T\xE2ches conteneur", "rules.containers.help": "Ex\xE9cute des compilations, tests et scripts pour d'autres dans un bac \xE0 sable sans internet ni acc\xE8s \xE0 vos fichiers. N\xE9cessite Docker (ou Apple Container) : voir \xAB Configurer cet ordinateur \xBB.", "rules.models": "Mod\xE8les ouverts (Ollama)", "rules.models.help": "R\xE9pond aux requ\xEAtes d'IA avec les mod\xE8les ouverts install\xE9s dans Ollama sur cet ordinateur. N\xE9cessite Ollama et au moins un mod\xE8le.", "rules.idle": "Seulement apr\xE8s X minutes d'inactivit\xE9", "rules.idle.help": "Pr\xEAte seulement si vous n'avez pas touch\xE9 le clavier ni la souris depuis ce nombre de minutes. 0 = pr\xEAter m\xEAme pendant que vous travaillez.", "rules.ac": "Seulement sur secteur", "rules.ac.help": "Sur un portable, arr\xEAte de pr\xEAter quand il est sur batterie, pour que le pr\xEAt ne la vide jamais.", "rules.hours": "Seulement de / \xE0 heure (vide = toujours)", "rules.hours.help": "Pr\xEAte seulement dans cette plage horaire, au format 24 h. Exemple : 22 et 8 = de 22 h \xE0 8 h. Laissez les deux vides pour pr\xEAter \xE0 toute heure.", "rules.cache": "Copies en cache des d\xE9p\xF4ts d'autres", "rules.cache.help": "Nombre de d\xE9p\xF4ts publics d'autres utilisateurs dont cet ordinateur garde une copie, pour qu'ils restent disponibles quand leurs auteurs sont hors ligne. Utilise un peu d'espace disque et rapporte des cr\xE9dits. 0 = aucun.", "rules.save": "Enregistrer", "rules.saved": "R\xE8gles enregistr\xE9es. Elles s'appliquent en quelques secondes.", "rules.hours_both": "Remplissez les deux heures, ou laissez-les vides pour pr\xEAter \xE0 toute heure.", "folders.title": "Dossiers autoris\xE9s", "folders.hint": "BitPull lit uniquement ces dossiers. Pour en publier un, il faut un bitpull.json complet.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autoriser", "folders.none": "Aucun dossier autoris\xE9.", "folders.draft": "Brouillon", "folders.publish": "Publier", "folders.remove": "Retirer", "folders.need_path": "Saisissez d'abord le chemin complet d'un dossier, par ex. /Users/you/projects/my-library.", "folders.added": "Dossier autoris\xE9.", "folders.removed": "Dossier retir\xE9. BitPull ne le lit plus.", "folders.drafted": "Brouillon pr\xEAt : {n} fichiers trouv\xE9s. Laissez votre IA remplir le r\xE9sum\xE9 et les descriptions (outil prepare_publish), puis cliquez sur Publier.", "folders.published": "\xAB {name} \xBB publi\xE9 avec {n} fichiers.", "folders.secrets_in": "Trouv\xE9 dans : {where}", "folders.line": "{file} ligne {line}", "repos.title": "Vos d\xE9p\xF4ts publi\xE9s", "repos.hint": "Ils se mettent \xE0 jour tout seuls quand vous modifiez les fichiers (toutes les 5 minutes).", "repos.none": "Aucun d\xE9p\xF4t publi\xE9.", "repos.withdraw": "Retirer", "repos.withdrawn": "D\xE9p\xF4t retir\xE9 du r\xE9seau.", "ask.title": "Mod\xE8les ouverts sur le r\xE9seau", "ask.offers": "Cet ordinateur propose : {models}.", "ask.offers_none": "aucun mod\xE8le (installez Ollama pour en proposer)", "ask.placeholder": "Interrogez un mod\xE8le ouvert du r\xE9seau\u2026", "ask.small": "Petit", "ask.medium": "Moyen", "ask.large": "Grand", "ask.button": "Demander", "ask.empty": "\xC9crivez d'abord une question.", "ask.waiting": "Recherche d'un ordinateur avec ce mod\xE8le\u2026 cela peut prendre jusqu'\xE0 une minute.", "ask.credits": "{n} cr\xE9dits", "tools.title": "Connectez vos outils", "tools.mcp": "Pour Claude Code et les clients MCP, ex\xE9cutez dans un terminal :", "tools.openai": "Pour les outils compatibles OpenAI : URL de base", "tools.key": "Cl\xE9 API", "tools.show": "Afficher", "jobs.title": "Vos t\xE2ches r\xE9centes", "jobs.none": "Aucune t\xE2che.", "jobs.model": "Mod\xE8le", "jobs.container": "Conteneur", "jobs.status.queued": "En file", "jobs.status.running": "En cours", "jobs.status.done": "Termin\xE9e", "jobs.status.failed": "\xC9chou\xE9e", "jobs.status.canceled": "Annul\xE9e", "jobs.cost": "{n} cr\xE9dits", working: "En cours\u2026", "err.agent_down": "BitPull ne r\xE9pond pas sur cet ordinateur. Il red\xE9marre tout seul en 30 secondes : r\xE9essayez bient\xF4t.", "err.server": "Impossible de joindre le serveur BitPull. V\xE9rifiez votre connexion internet et r\xE9essayez.", "err.session": "Cette session du tableau de bord a expir\xE9. Rouvrez-le depuis l'app BitPull.", "err.billing": "Les paiements ne sont pas encore actifs.", "err.no_folder": "Ce dossier n'existe pas sur cet ordinateur. V\xE9rifiez le chemin.", "err.not_folder": "Ce chemin est un fichier, pas un dossier.", "err.credits": "Cr\xE9dits insuffisants.", "err.device": "Cet ordinateur n'est pas encore connect\xE9. Gardez l'app BitPull ouverte et r\xE9essayez dans une minute.", "err.no_model": "Aucun ordinateur du r\xE9seau ne propose de mod\xE8le d'IA pour le moment. R\xE9essayez plus tard.", "err.invalid": "Certaines valeurs ne sont pas valides. V\xE9rifiez les champs et r\xE9essayez.", "tip.lang": "Langue de l'application. Votre choix est m\xE9moris\xE9 sur cet ordinateur.", "tip.buy.base": "Ouvre la page de paiement s\xE9curis\xE9 du forfait Base : 4,50 \u20AC par mois avec 80 cr\xE9dits chaque mois. Vous pouvez r\xE9silier \xE0 tout moment.", "tip.buy.pro": "Ouvre la page de paiement s\xE9curis\xE9 du forfait Pro : 9,90 \u20AC par mois avec 200 cr\xE9dits chaque mois, la priorit\xE9 maximale et tous les GPU. Vous pouvez r\xE9silier \xE0 tout moment.", "tip.buy.recharge": "Ouvre la page de paiement s\xE9curis\xE9 pour acheter 80 cr\xE9dits en une fois, pour 5 \u20AC. Ils n'expirent jamais.", "tip.pause": "Arr\xEAte le pr\xEAt imm\xE9diatement. Une t\xE2che en cours \xE0 ce moment-l\xE0 est confi\xE9e \xE0 un autre ordinateur. Appuyez \xE0 nouveau pour reprendre.", "tip.resume": "Reprend le pr\xEAt, en suivant vos r\xE8gles de pr\xEAt.", "tip.rules.save": "Enregistre les r\xE8gles de pr\xEAt ci-dessus. Elles s'appliquent en quelques secondes ; rien ne change tant que vous n'appuyez pas ici.", "tip.folder.add": "Autorise BitPull \xE0 lire le dossier indiqu\xE9 \xE0 gauche. Les fichiers situ\xE9s hors des dossiers autoris\xE9s ne sont jamais lus ni partag\xE9s.", "tip.folder.draft": "Cr\xE9e bitpull.json dans le dossier : la liste de ses fichiers avec des descriptions vides que votre AI compl\xE9tera. Rien n'est encore publi\xE9.", "tip.folder.publish": "Partage ce dossier sur le r\xE9seau en tant que d\xE9p\xF4t public, sign\xE9 par cet ordinateur. La publication est bloqu\xE9e si des cl\xE9s ou des mots de passe sont trouv\xE9s dans les fichiers.", "tip.folder.remove": "BitPull arr\xEAte de lire ce dossier. Les d\xE9p\xF4ts d\xE9j\xE0 publi\xE9s depuis ce dossier restent en ligne jusqu'\xE0 ce que vous les retiriez.", "tip.repo.withdraw": "Retire ce d\xE9p\xF4t du r\xE9seau. Les autres utilisateurs ne peuvent plus le trouver ni le t\xE9l\xE9charger. Vos fichiers restent sur votre ordinateur.", "tip.ask": "Envoie votre question, chiffr\xE9e de bout en bout, \xE0 un ordinateur du r\xE9seau qui ex\xE9cute un mod\xE8le d'AI ouvert. Co\xFBte quelques cr\xE9dits.", "tip.tier": "Taille du mod\xE8le : le petit est rapide et \xE9conomique, le grand est plus intelligent et co\xFBte plus de cr\xE9dits.", "tip.show_key": "Affiche la cl\xE9 que les outils d'AI de cet ordinateur utilisent pour communiquer avec BitPull. Ne la partagez pas.", "tip.setup.download": "T\xE9l\xE9charge l'installateur officiel de {name} pour cet ordinateur dans votre dossier T\xE9l\xE9chargements et l'ouvre. Suivez ses \xE9tapes pour terminer.", "tip.setup.start": "D\xE9marre {name}, qui est install\xE9 sur cet ordinateur mais n'est pas lanc\xE9.", "tip.setup.pull": "T\xE9l\xE9charge le mod\xE8le d'AI {model} ({size} GB) dans Ollama, pour que cet ordinateur puisse le proposer aux autres.", "tip.setup.open": "Ouvre la page officielle de {name} dans votre navigateur.", "tip.setup.recheck": "V\xE9rifie \xE0 nouveau ce qui est install\xE9 et lanc\xE9 sur cet ordinateur.", "update.title": "Mises \xE0 jour de l'app", "update.current": "Version install\xE9e : {v}", "update.latest": "Derni\xE8re version : {v}", "update.button": "Rechercher des mises \xE0 jour", "update.install": "Installer la version {v} maintenant", "update.available": "La version {v} est disponible.", "update.not_in_app": "Les mises \xE0 jour sont install\xE9es par l'app BitPull. Ouvrez ce tableau de bord depuis l'app pour mettre \xE0 jour.", "update.state.requested": "Demande de v\xE9rification \xE0 l'app\u2026", "update.state.checking": "Recherche de mises \xE0 jour\u2026", "update.state.up_to_date": "Vous avez la derni\xE8re version.", "update.state.installing": "T\xE9l\xE9chargement et installation de la version {v}\u2026 l'app red\xE9marre toute seule.", "update.state.restarting": "Red\xE9marrage avec la version {v}\u2026", "update.state.error": "La mise \xE0 jour a \xE9chou\xE9 : {msg}. R\xE9essayez plus tard.", "tip.update": "V\xE9rifie s'il existe une version plus r\xE9cente de BitPull. Si oui, la t\xE9l\xE9charge, v\xE9rifie sa signature, l'installe et red\xE9marre l'app. Le pr\xEAt est suspendu quelques secondes.", "tools.hint": "Laissez votre assistant d'AI chercher dans le code partag\xE9 et utiliser les mod\xE8les ouverts et les ordinateurs du r\xE9seau. Choisissez votre outil :", "tools.connect": "Connecter", "tools.connected": "Connect\xE9", "tools.copy": "Copier", "tools.copied": "Copi\xE9.", "tools.installed": "Install\xE9", "tools.not_found": "Introuvable sur cet ordinateur", "tools.done": "Termin\xE9. Red\xE9marrez {name} pour commencer \xE0 utiliser BitPull.", "tools.manual": "Pour l'ajouter \xE0 la main :", "tools.config_invalid": "Le fichier de param\xE8tres de {name} n'est pas un JSON valide, BitPull n'y a donc pas touch\xE9. Corrigez le fichier ou ajoutez BitPull \xE0 la main avec Copier.", "tip.tools.connect": "Ajoute BitPull aux param\xE8tres de {name} automatiquement. Une sauvegarde des param\xE8tres pr\xE9c\xE9dents est conserv\xE9e \xE0 c\xF4t\xE9.", "tip.tools.copy": "Copie la commande ou les param\xE8tres dans le presse-papiers, pour ajouter BitPull \xE0 {name} vous-m\xEAme.", "models.title": "Mod\xE8les d'IA \xE0 partager", "models.hint": "Mod\xE8les ouverts de tous types que cet ordinateur peut pr\xEAter. Seuls les mod\xE8les dont la licence permet de les servir \xE0 d'autres sont list\xE9s. Les mod\xE8les t\xE9l\xE9charg\xE9s sont propos\xE9s au r\xE9seau tant que le pr\xEAt est actif.", "models.engine.title": "Moteur images, voix et musique", "models.engine.help": "Lemonade (open source) : g\xE9n\xE9ration d'images, transcription vocale, synth\xE8se vocale, musique, reclassement et agrandissement d'images. Install\xE9 dans BitPull, sans droits administrateur.", "models.engine.install": "Installer le moteur", "models.engine.repair": "R\xE9installer le moteur", "models.engine.unsupported": "Indisponible sur cet ordinateur (n\xE9cessite Apple silicon, ou Windows/Linux x64)", "models.need_engine": "Installez d'abord le moteur", "models.not_here": "Indisponible sur cet ordinateur", "models.shared": "T\xE9l\xE9charg\xE9 \xB7 partag\xE9", "models.download": "T\xE9l\xE9charger ({size} Go)", "models.needs_ram": "N\xE9cessite environ {ram} Go de m\xE9moire : peut \xEAtre lent ici", "models.recommended": "Recommand\xE9", "models.license": "Licence", "models.ok.engine": "Installation du moteur\u2026", "task.chat": "Texte et code", "task.vision": "Images \u2192 texte", "task.ocr": "Documents (OCR)", "task.translate": "Traduction", "task.embed": "Embeddings (recherche)", "task.rerank": "Reclassement", "task.image": "G\xE9n\xE9ration d'images", "task.upscale": "Agrandissement d'images", "task.stt": "Voix \u2192 texte", "task.tts": "Texte \u2192 voix", "task.music": "Musique", "limits.title": "Vos limites pour les autres", "limits.hint": "Quantit\xE9 de travail d'IA que cet ordinateur fait pour les autres. Laissez vide pour aucune limite. Une fois une limite atteinte, vos mod\xE8les ne sont plus propos\xE9s jusqu'\xE0 la p\xE9riode suivante.", "limits.save": "Enregistrer les limites", "limits.requests": "Requ\xEAtes", "limits.tokens": "Tokens", "limits.used": "Utilis\xE9", "limits.day": "Par jour", "limits.week": "Par semaine", "limits.month": "Par mois", "limits.none": "aucune limite", "limits.usage": "{requests} requ\xEAtes \xB7 {tokens} tokens", "limits.saved": "Limites enregistr\xE9es.", "tip.models.engine": "T\xE9l\xE9charge dans BitPull le moteur open source Lemonade, pour que cet ordinateur puisse pr\xEAter des mod\xE8les d'image, de voix et de musique.", "tip.models.download": "T\xE9l\xE9charge {model} ({size} Go) sur cet ordinateur pour le proposer aux autres. Vous pourrez le supprimer plus tard.", "tip.limits.save": "Enregistre les limites quotidiennes, hebdomadaires et mensuelles du travail d'IA fait pour les autres.", "lend.visible": "\u2713 Le r\xE9seau voit cet ordinateur : {cpus} CPU, {ram} Go disponibles pour les autres.", "lend.invisible": "Le r\xE9seau ne voit pas encore le pr\xEAt : attendez jusqu'\xE0 une minute ; si cela persiste, v\xE9rifiez la connexion internet.", "lend.unusable": "\u26A0 Personne ne peut encore utiliser cet ordinateur : aucune t\xE2che ne peut s'ex\xE9cuter ici. {reason}", "lend.unusable.docker": "Docker ne passe pas la v\xE9rification d'isolation de BitPull : voir \xAB Configurer cet ordinateur \xBB.", "lend.unusable.off": "Les t\xE2ches en conteneur sont d\xE9sactiv\xE9es et aucun mod\xE8le d'IA n'est install\xE9 : activez \xAB T\xE2ches en conteneur \xBB ou t\xE9l\xE9chargez un mod\xE8le.", "lend.docker_login": "Docker ne peut pas t\xE9l\xE9charger d'images car sa connexion \xE0 Docker Hub n'est plus valide. Dans Docker Desktop, cliquez sur votre compte (en haut \xE0 droite) \u2192 Sign out, puis reconnectez-vous ou restez d\xE9connect\xE9. Appuyez ensuite sur V\xE9rifier \xE0 nouveau.", "lend.off_hint": "Le pr\xEAt est d\xE9sactiv\xE9 : cochez \xAB {enabled} \xBB dans \xAB {rules} \xBB ci-dessous et appuyez sur \xAB {save} \xBB. (Pause / Reprendre ne fait que suspendre un pr\xEAt d\xE9j\xE0 actif.)", "lend.low_memory": "Seulement {mb} Mo de m\xE9moire offerts : peu de t\xE2ches y tiennent. Dans \xAB {rules} \xBB, r\xE9glez \xAB {memory} \xBB par exemple \xE0 4096 (= 4 Go) et appuyez sur \xAB {save} \xBB.", "rules.awake": "Rester \xE9veill\xE9 pendant le pr\xEAt", "rules.awake.help": "Pendant qu'il ex\xE9cute une t\xE2che pour quelqu'un, cet ordinateur ne se met pas en veille (l'\xE9cran peut tout de m\xEAme s'\xE9teindre). Ensuite, veille comme d'habitude. \xC9vite les t\xE2ches interrompues.", "ask.wait": "Attendre jusqu'\xE0 (minutes)", "ask.wait.save": "Enregistrer", "ask.wait.saved": "Les r\xE9ponses seront attendues jusqu'\xE0 {n} minutes.", "ask.wait.range": "Saisissez un nombre de minutes entre 1 et 120.", "tip.wait": "Combien de temps attendre la r\xE9ponse des mod\xE8les d'IA du r\xE9seau. Les mod\xE8les sur le processeur de quelqu'un peuvent prendre des minutes. Votre IA peut aussi le modifier." }, hi: { "lang.name": "\u0939\u093F\u0928\u094D\u0926\u0940", "app.title": "BitPull", "locked.text": "\u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 BitPull \u0910\u092A \u0938\u0947 \u0916\u094B\u0932\u0947\u0902: \u0909\u0938\u0915\u0947 \u0932\u093F\u0902\u0915 \u092E\u0947\u0902 \u090F\u0915\u094D\u0938\u0947\u0938 \u0915\u0941\u0902\u091C\u0940 \u0939\u094B\u0924\u0940 \u0939\u0948\u0964", "pill.online": "\u0911\u0928\u0932\u093E\u0907\u0928", "pill.offline": "\u0911\u092B\u093C\u0932\u093E\u0907\u0928", "pill.direct": "\u0938\u0940\u0927\u093E \u092A\u0924\u093E", "pill.relay_on": "\u0930\u093F\u0932\u0947 \u091C\u0941\u0921\u093C\u093E \u0939\u0948", "pill.relay_off": "\u0930\u093F\u0932\u0947 \u0928\u0939\u0940\u0902 \u091C\u0941\u0921\u093C\u093E", "pill.cached": "{n} \u0915\u0948\u0936 \u0915\u0940 \u0917\u0908 \u092A\u094D\u0930\u0924\u093F\u092F\u093E\u0901", "net.title": "\u0932\u093E\u0907\u0935 \u0928\u0947\u091F\u0935\u0930\u094D\u0915", "net.online": "{n} \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0911\u0928\u0932\u093E\u0907\u0928", "net.lending": "{n} \u0905\u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0930\u0939\u0947 \u0939\u0948\u0902", "net.cpu": "{n} CPU \u0915\u094B\u0930", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPU", "net.models": "{n} AI \u092E\u0949\u0921\u0932", "net.jobs": "{n} \u091C\u0949\u092C \u091A\u0932 \u0930\u0939\u0947 \u0939\u0948\u0902", "credits.title": "\u0915\u094D\u0930\u0947\u0921\u093F\u091F \u092C\u0948\u0932\u0947\u0902\u0938", "credits.plan": "{plan} \u092A\u094D\u0932\u093E\u0928 \xB7 {n} \u0924\u0915 \u0928\u0940\u091A\u0947 \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948", "plan.free": "\u092E\u0941\u092B\u093C\u094D\u0924", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "\u20AC5 \u0930\u093F\u091A\u093E\u0930\u094D\u091C", "buy.ok": "\u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 \u0916\u0941\u0932 \u0917\u092F\u093E\u0964", "lend.title": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902", "lend.hint": "\u091C\u0949\u092C \u0905\u0932\u0917-\u0925\u0932\u0917 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u090F\u0902\u0921-\u091F\u0942-\u090F\u0902\u0921 \u090F\u0928\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F\u0947\u0921 \u091A\u0932\u0924\u0947 \u0939\u0948\u0902, \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u0915\u0947 \u092C\u093F\u0928\u093E\u0964 \u0906\u092A \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u0947 \u0939\u0948\u0902\u0964", "lend.state.off": "\u092C\u0902\u0926", "lend.state.waiting": "\u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u092E\u0947\u0902", "lend.state.working": "\u0915\u093E\u092E \u0915\u0930 \u0930\u0939\u093E \u0939\u0948", "lend.reason.lending_off": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0939\u0948", "lend.reason.paused": "\u0930\u0941\u0915\u093E \u0939\u0941\u0906", "lend.reason.outside_hours": "\u0906\u092A\u0915\u0947 \u0924\u092F \u0918\u0902\u091F\u094B\u0902 \u0938\u0947 \u092C\u093E\u0939\u0930", "lend.reason.on_battery": "\u092C\u0948\u091F\u0930\u0940 \u092A\u0930", "lend.reason.computer_in_use": "\u0906\u092A \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902", "lend.reason.no_jobs": "\u0915\u0924\u093E\u0930 \u092E\u0947\u0902 \u0915\u094B\u0908 \u091C\u0949\u092C \u0928\u0939\u0940\u0902", "lend.running": "{time} \u0938\u0947 \u090F\u0915 {kind} \u091C\u0949\u092C \u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "lend.detail": "{reason} \xB7 {n} \u091C\u0949\u092C \u092A\u0942\u0930\u0947 \xB7 {cpus} CPU, {ram} GB \u0909\u092A\u0932\u092C\u094D\u0927", "lend.detail.sandbox": ", \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 {name}", "lend.detail.models": ", {n} \u092E\u0949\u0921\u0932", "lend.pause": "\u0930\u094B\u0915\u0947\u0902", "lend.resume": "\u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "lend.paused_ok": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0930\u094B\u0915\u093E \u0917\u092F\u093E\u0964 \u091A\u0932 \u0930\u0939\u093E \u091C\u0949\u092C \u0926\u0942\u0938\u0930\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u094C\u0902\u092A \u0926\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "lend.resumed_ok": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964", "setup.title": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0938\u0947\u091F \u0915\u0930\u0947\u0902", "setup.hint": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F\u0964 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0914\u0930 \u0915\u0941\u091B \u0928\u0939\u0940\u0902 \u091A\u093E\u0939\u093F\u090F\u0964 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u0938\u093E\u0907\u091F\u094B\u0902 \u0938\u0947 \u0906\u0924\u0947 \u0939\u0948\u0902; \u0906\u092A\u0915\u093E \u0938\u093F\u0938\u094D\u091F\u092E \u092A\u0941\u0937\u094D\u091F\u093F \u092E\u093E\u0901\u0917\u0947\u0917\u093E\u0964", "setup.checking": "\u091C\u093E\u0901\u091A \u0939\u094B \u0930\u0939\u0940 \u0939\u0948\u2026", "setup.docker.help": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u091C\u0949\u092C \u0905\u0932\u0917-\u0925\u0932\u0917 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 \u0915\u0902\u091F\u0947\u0928\u0930 \u091C\u0949\u092C \u0915\u0947 \u0932\u093F\u090F \u091C\u093C\u0930\u0942\u0930\u0940\u0964 \u0928\u093F\u091C\u0940 \u0909\u092A\u092F\u094B\u0917 \u0914\u0930 \u091B\u094B\u091F\u0947 \u0935\u094D\u092F\u0935\u0938\u093E\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u092E\u0941\u092B\u093C\u094D\u0924\u0964", "setup.docker.download": "Docker \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902", "setup.docker.start": "Docker \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.apple.title": "Apple Container (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)", "setup.apple.help": "\u091C\u093C\u094D\u092F\u093E\u0926\u093E \u092E\u091C\u093C\u092C\u0942\u0924 \u0905\u0932\u0917\u093E\u0935: \u0939\u0930 \u091C\u0949\u092C \u0905\u092A\u0928\u0940 \u0935\u0930\u094D\u091A\u0941\u0905\u0932 \u092E\u0936\u0940\u0928 \u092E\u0947\u0902\u0964 \u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915; \u0936\u0941\u0930\u0941\u0906\u0924 \u0915\u0947 \u0932\u093F\u090F Docker \u0915\u093E\u092B\u093C\u0940 \u0939\u0948\u0964", "setup.apple.get": "Apple Container \u092A\u093E\u090F\u0901", "setup.ollama.help": "\u0913\u092A\u0928 AI \u092E\u0949\u0921\u0932 (Qwen, Llama, Mistral\u2026) \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 AI \u092E\u0949\u0921\u0932 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091C\u093C\u0930\u0942\u0930\u0940\u0964", "setup.ollama.download": "Ollama \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902", "setup.ollama.start": "Ollama \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.model.title": "AI \u092E\u0949\u0921\u0932", "setup.model.help": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u091C\u094B \u092E\u0949\u0921\u0932 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 {ram} GB \u092E\u0947\u092E\u094B\u0930\u0940 \u0915\u0947 \u0932\u093F\u090F \u0938\u0941\u091D\u093E\u092F\u093E \u0917\u092F\u093E: {model}\u0964", "setup.model.download": "{model} \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902 ({size} GB)", "setup.model.none": "\u0905\u092D\u0940 \u0915\u094B\u0908 \u0928\u0939\u0940\u0902", "setup.model.need_ollama": "\u092A\u0939\u0932\u0947 Ollama \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0915\u0947 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", "setup.nvidia.title": "NVIDIA GPU \u0921\u094D\u0930\u093E\u0907\u0935\u0930 (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)", "setup.nvidia.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0924\u092C, \u091C\u092C \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092E\u0947\u0902 NVIDIA \u0917\u094D\u0930\u093E\u092B\u093C\u093F\u0915\u094D\u0938 \u0915\u093E\u0930\u094D\u0921 \u0939\u0948 \u091C\u093F\u0938\u0947 \u0906\u092A \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902\u0964", "setup.nvidia.get": "NVIDIA \u0921\u094D\u0930\u093E\u0907\u0935\u0930 \u092A\u093E\u090F\u0901", "setup.status.running": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0914\u0930 \u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "setup.status.installed": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948", "setup.status.stopped": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948, \u091A\u0932 \u0928\u0939\u0940\u0902 \u0930\u0939\u093E", "setup.status.missing": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0928\u0939\u0940\u0902 \u0939\u0948", "setup.status.found": "\u092E\u093F\u0932\u093E", "setup.status.not_found": "\u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E", "setup.terminal": "\u091F\u0930\u094D\u092E\u093F\u0928\u0932 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901:", "setup.done": "\u0939\u094B \u0917\u092F\u093E", "setup.opened": "\u0939\u094B \u0917\u092F\u093E: {file} \u0916\u094B\u0932\u0940 \u0917\u0908, \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902", "setup.recheck": "\u092B\u093F\u0930 \u091C\u093E\u0901\u091A\u0947\u0902", "setup.ok.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964 \u092A\u0942\u0930\u093E \u0939\u094B\u0928\u0947 \u092A\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0905\u092A\u0928\u0947 \u0906\u092A \u0916\u0941\u0932\u0947\u0917\u093E: \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902\u0964", "setup.ok.start": "\u0936\u0941\u0930\u0942 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026 \u0907\u0938\u092E\u0947\u0902 \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u0932\u0917 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u092F\u0939 \u0938\u0942\u091A\u0940 \u0905\u092A\u0928\u0947 \u0906\u092A \u0905\u092A\u0921\u0947\u091F \u0939\u094B\u0924\u0940 \u0939\u0948\u0964", "setup.ok.pull": "\u092E\u0949\u0921\u0932 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0936\u0941\u0930\u0942 \u0939\u0941\u0906\u0964 \u092A\u094D\u0930\u0917\u0924\u093F \u090A\u092A\u0930 \u0926\u093F\u0916 \u0930\u0939\u0940 \u0939\u0948\u0964", "setup.ok.page": "\u092A\u0947\u091C \u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 \u0916\u0941\u0932 \u0917\u092F\u093E\u0964", "setup.ok.recheck": "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A \u0932\u0940 \u0917\u0908\u0964", "rules.title": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E", "rules.enabled": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0932\u0942", "rules.enabled.help": "\u092E\u0941\u0916\u094D\u092F \u0938\u094D\u0935\u093F\u091A\u0964 \u092C\u0902\u0926 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u092D\u0940 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u091C\u0949\u092C \u0928\u0939\u0940\u0902 \u091A\u0932\u093E\u0924\u093E\u0964 \u0906\u092A \u092B\u093F\u0930 \u092D\u0940 \u0916\u0941\u0926 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "rules.cpus": "\u0905\u0927\u093F\u0915\u0924\u092E CPU", "rules.cpus.help": "\u090F\u0915 \u091C\u0949\u092C \u0905\u0927\u093F\u0915\u0924\u092E \u0915\u093F\u0924\u0928\u0947 \u092A\u094D\u0930\u094B\u0938\u0947\u0938\u0930 \u0915\u094B\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0909\u0926\u093E\u0939\u0930\u0923: 8-\u0915\u094B\u0930 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 2 \u0930\u0916\u0928\u0947 \u0938\u0947 \u0906\u092A\u0915\u0947 \u0932\u093F\u090F 6 \u0915\u094B\u0930 \u0916\u093E\u0932\u0940 \u0930\u0939\u0924\u0947 \u0939\u0948\u0902\u0964", "rules.memory": "\u0905\u0927\u093F\u0915\u0924\u092E \u092E\u0947\u092E\u094B\u0930\u0940 (MB)", "rules.memory.help": "\u090F\u0915 \u091C\u0949\u092C \u0915\u093F\u0924\u0928\u0940 RAM \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0948, \u092E\u0947\u0917\u093E\u092C\u093E\u0907\u091F \u092E\u0947\u0902 (1024 MB = 1 GB)\u0964 BitPull \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0940 \u0906\u0927\u0940 \u092E\u0947\u092E\u094B\u0930\u0940 \u0938\u0947 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u092D\u0940 \u0928\u0939\u0940\u0902 \u0926\u0947\u0924\u093E\u0964", "rules.gpu": "GPU", "rules.gpu.none": "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902", "rules.gpu.consumer": "\u0938\u093E\u092E\u093E\u0928\u094D\u092F (8\u201312 GB)", "rules.gpu.high": "\u0939\u093E\u0908-\u090F\u0902\u0921 (16\u201324 GB)", "rules.gpu.datacenter": "\u0921\u0947\u091F\u093E \u0938\u0947\u0902\u091F\u0930 (40 GB+)", "rules.gpu.help": '\u0906\u092A \u091C\u094B \u0917\u094D\u0930\u093E\u092B\u093C\u093F\u0915\u094D\u0938 \u0915\u093E\u0930\u094D\u0921 \u0909\u0927\u093E\u0930 \u0926\u0947\u0924\u0947 \u0939\u0948\u0902, \u0935\u0940\u0921\u093F\u092F\u094B \u092E\u0947\u092E\u094B\u0930\u0940 \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930\u0964 \u0905\u0917\u0930 \u0905\u0932\u0917 GPU \u0928\u0939\u0940\u0902 \u0939\u0948 \u092F\u093E \u0909\u0927\u093E\u0930 \u0928\u0939\u0940\u0902 \u0926\u0947\u0928\u093E \u091A\u093E\u0939\u0924\u0947, \u0924\u094B "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902" \u0930\u0939\u0928\u0947 \u0926\u0947\u0902\u0964 GPU \u0938\u092C\u0938\u0947 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u093E \u0939\u0948\u0964', "rules.containers": "\u0915\u0902\u091F\u0947\u0928\u0930 \u091C\u0949\u092C", "rules.containers.help": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u092C\u093F\u0932\u094D\u0921, \u091F\u0947\u0938\u094D\u091F \u0914\u0930 \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u0910\u0938\u0947 \u0938\u0948\u0902\u0921\u092C\u0949\u0915\u094D\u0938 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901 \u091C\u093F\u0938\u092E\u0947\u0902 \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0914\u0930 \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0924\u0915 \u092A\u0939\u0941\u0901\u091A \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 Docker (\u092F\u093E Apple Container) \u091C\u093C\u0930\u0942\u0930\u0940: \u201C\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0938\u0947\u091F \u0915\u0930\u0947\u0902\u201D \u0926\u0947\u0916\u0947\u0902\u0964", "rules.models": "\u0913\u092A\u0928 \u092E\u0949\u0921\u0932 (Ollama)", "rules.models.help": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 Ollama \u092E\u0947\u0902 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0938\u0947 AI \u0905\u0928\u0941\u0930\u094B\u0927\u094B\u0902 \u0915\u093E \u091C\u0935\u093E\u092C \u0926\u0947\u0902\u0964 Ollama \u0914\u0930 \u0915\u092E \u0938\u0947 \u0915\u092E \u090F\u0915 \u092E\u0949\u0921\u0932 \u091C\u093C\u0930\u0942\u0930\u0940\u0964", "rules.idle": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0924\u0928\u0947 \u092E\u093F\u0928\u091F \u0928\u093F\u0937\u094D\u0915\u094D\u0930\u093F\u092F \u0930\u0939\u0928\u0947 \u0915\u0947 \u092C\u093E\u0926", "rules.idle.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0924\u092C \u0909\u0927\u093E\u0930 \u0926\u0947\u0902 \u091C\u092C \u0906\u092A\u0928\u0947 \u0907\u0924\u0928\u0947 \u092E\u093F\u0928\u091F \u0924\u0915 \u0915\u0940\u092C\u094B\u0930\u094D\u0921 \u092F\u093E \u092E\u093E\u0909\u0938 \u0928 \u091B\u0941\u0906 \u0939\u094B\u0964 0 = \u0915\u093E\u092E \u0915\u0930\u0924\u0947 \u0938\u092E\u092F \u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902\u0964", "rules.ac": "\u0938\u093F\u0930\u094D\u092B\u093C \u091A\u093E\u0930\u094D\u091C\u0930 \u0932\u0917\u0947 \u0939\u094B\u0928\u0947 \u092A\u0930", "rules.ac.help": "\u0932\u0948\u092A\u091F\u0949\u092A \u092A\u0930, \u092C\u0948\u091F\u0930\u0940 \u092A\u0930 \u091A\u0932\u0924\u0947 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0915\u0930\u0947\u0902, \u0924\u093E\u0915\u093F \u092C\u0948\u091F\u0930\u0940 \u0916\u0924\u094D\u092E \u0928 \u0939\u094B\u0964", "rules.hours": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0938 \u0918\u0902\u091F\u0947 \u0938\u0947 / \u0924\u0915 (\u0916\u093E\u0932\u0940 = \u0939\u092E\u0947\u0936\u093E)", "rules.hours.help": "\u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0938 \u0938\u092E\u092F \u092E\u0947\u0902 \u0909\u0927\u093E\u0930 \u0926\u0947\u0902, 24-\u0918\u0902\u091F\u0947 \u0915\u0947 \u092B\u093C\u0949\u0930\u094D\u092E\u0948\u091F \u092E\u0947\u0902\u0964 \u0909\u0926\u093E\u0939\u0930\u0923: 22 \u0914\u0930 8 = \u0930\u093E\u0924 10 \u092C\u091C\u0947 \u0938\u0947 \u0938\u0941\u092C\u0939 8 \u092C\u091C\u0947 \u0924\u0915\u0964 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u0928\u094B\u0902 \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964", "rules.cache": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0930\u093F\u092A\u094B \u0915\u0940 \u0915\u0948\u0936 \u092A\u094D\u0930\u0924\u093F\u092F\u093E\u0901", "rules.cache.help": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u0947 \u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E\u0913\u0902 \u0915\u0947 \u0915\u093F\u0924\u0928\u0947 \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0930\u093F\u092A\u094B \u0915\u0940 \u092A\u094D\u0930\u0924\u093F \u0930\u0916\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u0909\u0928\u0915\u0947 \u0932\u0947\u0916\u0915 \u0911\u092B\u093C\u0932\u093E\u0907\u0928 \u0939\u094B\u0928\u0947 \u092A\u0930 \u092D\u0940 \u0935\u0947 \u0909\u092A\u0932\u092C\u094D\u0927 \u0930\u0939\u0947\u0902\u0964 \u0925\u094B\u0921\u093C\u0940 \u0921\u093F\u0938\u094D\u0915 \u091C\u0917\u0939 \u0932\u0947\u0924\u093E \u0939\u0948 \u0914\u0930 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u092E\u093E\u0924\u093E \u0939\u0948\u0964 0 = \u0915\u094B\u0908 \u0928\u0939\u0940\u0902\u0964", "rules.save": "\u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0947\u0902", "rules.saved": "\u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0947 \u0917\u090F\u0964 \u0915\u0941\u091B \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0932\u093E\u0917\u0942 \u0939\u094B\u0902\u0917\u0947\u0964", "rules.hours_both": "\u0926\u094B\u0928\u094B\u0902 \u0918\u0902\u091F\u0947 \u092D\u0930\u0947\u0902, \u092F\u093E \u0915\u093F\u0938\u0940 \u092D\u0940 \u0938\u092E\u092F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u0928\u094B\u0902 \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964", "folders.title": "\u0905\u0927\u093F\u0915\u0943\u0924 \u092B\u093C\u094B\u0932\u094D\u0921\u0930", "folders.hint": "BitPull \u0938\u093F\u0930\u094D\u092B\u093C \u0907\u0928 \u092B\u093C\u094B\u0932\u094D\u0921\u0930\u094B\u0902 \u0915\u094B \u092A\u0922\u093C\u0924\u093E \u0939\u0948\u0964 \u0915\u093F\u0938\u0940 \u0915\u094B \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092A\u0942\u0930\u0940 bitpull.json \u091A\u093E\u0939\u093F\u090F\u0964", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0905\u0927\u093F\u0915\u0943\u0924 \u0915\u0930\u0947\u0902", "folders.none": "\u0915\u094B\u0908 \u0905\u0927\u093F\u0915\u0943\u0924 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0928\u0939\u0940\u0902\u0964", "folders.draft": "\u0921\u094D\u0930\u093E\u092B\u093C\u094D\u091F", "folders.publish": "\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0947\u0902", "folders.remove": "\u0939\u091F\u093E\u090F\u0901", "folders.need_path": "\u092A\u0939\u0932\u0947 \u0915\u093F\u0938\u0940 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u093E \u092A\u0942\u0930\u093E \u092A\u0925 \u0932\u093F\u0916\u0947\u0902, \u091C\u0948\u0938\u0947 /Users/you/projects/my-library\u0964", "folders.added": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0905\u0927\u093F\u0915\u0943\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "folders.removed": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0939\u091F\u093E\u092F\u093E \u0917\u092F\u093E\u0964 BitPull \u0905\u092C \u0907\u0938\u0947 \u0928\u0939\u0940\u0902 \u092A\u0922\u093C\u0924\u093E\u0964", "folders.drafted": '\u0921\u094D\u0930\u093E\u092B\u093C\u094D\u091F \u0924\u0948\u092F\u093E\u0930: {n} \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u092E\u093F\u0932\u0940\u0902\u0964 \u0905\u092A\u0928\u0947 AI \u0938\u0947 \u0938\u093E\u0930\u093E\u0902\u0936 \u0914\u0930 \u0935\u093F\u0935\u0930\u0923 \u092D\u0930\u0935\u093E\u090F\u0901 (prepare_publish \u091F\u0942\u0932), \u092B\u093F\u0930 "\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0947\u0902" \u0926\u092C\u093E\u090F\u0901\u0964', "folders.published": '"{name}" {n} \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u0947 \u0938\u093E\u0925 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0939\u0941\u0906\u0964', "folders.secrets_in": "\u092F\u0939\u093E\u0901 \u092E\u093F\u0932\u093E: {where}", "folders.line": "{file} \u092A\u0902\u0915\u094D\u0924\u093F {line}", "repos.title": "\u0906\u092A\u0915\u0947 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B", "repos.hint": "\u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u092C\u0926\u0932\u0928\u0947 \u092A\u0930 \u092F\u0947 \u0905\u092A\u0928\u0947 \u0906\u092A \u0905\u092A\u0921\u0947\u091F \u0939\u094B\u0924\u0947 \u0939\u0948\u0902 (\u0939\u0930 5 \u092E\u093F\u0928\u091F \u092E\u0947\u0902)\u0964", "repos.none": "\u0915\u094B\u0908 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B \u0928\u0939\u0940\u0902\u0964", "repos.withdraw": "\u0935\u093E\u092A\u0938 \u0932\u0947\u0902", "repos.withdrawn": "\u0930\u093F\u092A\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0938\u0947 \u0935\u093E\u092A\u0938 \u0932\u093F\u092F\u093E \u0917\u092F\u093E\u0964", "ask.title": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932", "ask.offers": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0947\u0924\u093E \u0939\u0948: {models}\u0964", "ask.offers_none": "\u0915\u094B\u0908 \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 (\u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F Ollama \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902)", "ask.placeholder": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0915\u093F\u0938\u0940 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0938\u0947 \u092A\u0942\u091B\u0947\u0902\u2026", "ask.small": "\u091B\u094B\u091F\u093E", "ask.medium": "\u092E\u0927\u094D\u092F\u092E", "ask.large": "\u092C\u0921\u093C\u093E", "ask.button": "\u092A\u0942\u091B\u0947\u0902", "ask.empty": "\u092A\u0939\u0932\u0947 \u090F\u0915 \u0938\u0935\u093E\u0932 \u0932\u093F\u0916\u0947\u0902\u0964", "ask.waiting": "\u092E\u0949\u0921\u0932 \u0935\u093E\u0932\u093E \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0916\u094B\u091C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026 \u0907\u0938\u092E\u0947\u0902 \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u0932\u0917 \u0938\u0915\u0924\u093E \u0939\u0948\u0964", "ask.credits": "{n} \u0915\u094D\u0930\u0947\u0921\u093F\u091F", "tools.title": "\u0905\u092A\u0928\u0947 \u091F\u0942\u0932 \u091C\u094B\u0921\u093C\u0947\u0902", "tools.mcp": "Claude Code \u0914\u0930 MCP \u0915\u094D\u0932\u093E\u0907\u0902\u091F \u0915\u0947 \u0932\u093F\u090F, \u091F\u0930\u094D\u092E\u093F\u0928\u0932 \u092E\u0947\u0902 \u091A\u0932\u093E\u090F\u0901:", "tools.openai": "OpenAI-\u0938\u0902\u0917\u0924 \u091F\u0942\u0932 \u0915\u0947 \u0932\u093F\u090F: \u092C\u0947\u0938 URL", "tools.key": "API \u0915\u0941\u0902\u091C\u0940", "tools.show": "\u0926\u093F\u0916\u093E\u090F\u0901", "jobs.title": "\u0906\u092A\u0915\u0947 \u0939\u093E\u0932 \u0915\u0947 \u091C\u0949\u092C", "jobs.none": "\u0915\u094B\u0908 \u091C\u0949\u092C \u0928\u0939\u0940\u0902\u0964", "jobs.model": "\u092E\u0949\u0921\u0932", "jobs.container": "\u0915\u0902\u091F\u0947\u0928\u0930", "jobs.status.queued": "\u0915\u0924\u093E\u0930 \u092E\u0947\u0902", "jobs.status.running": "\u091A\u0932 \u0930\u0939\u093E \u0939\u0948", "jobs.status.done": "\u092A\u0942\u0930\u093E", "jobs.status.failed": "\u0935\u093F\u092B\u0932", "jobs.status.canceled": "\u0930\u0926\u094D\u0926", "jobs.cost": "{n} \u0915\u094D\u0930\u0947\u0921\u093F\u091F", working: "\u0915\u093E\u092E \u091A\u0932 \u0930\u0939\u093E \u0939\u0948\u2026", "err.agent_down": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 BitPull \u091C\u0935\u093E\u092C \u0928\u0939\u0940\u0902 \u0926\u0947 \u0930\u0939\u093E\u0964 \u092F\u0939 30 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0906\u092A \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0939\u094B\u0924\u093E \u0939\u0948: \u0925\u094B\u0921\u093C\u0940 \u0926\u0947\u0930 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.server": "BitPull \u0938\u0930\u094D\u0935\u0930 \u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0928\u0939\u0940\u0902 \u0939\u094B \u092A\u093E \u0930\u0939\u093E\u0964 \u0905\u092A\u0928\u093E \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.session": "\u0907\u0938 \u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 \u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E\u0964 \u0907\u0938\u0947 BitPull \u0910\u092A \u0938\u0947 \u092B\u093F\u0930 \u0916\u094B\u0932\u0947\u0902\u0964", "err.billing": "\u092D\u0941\u0917\u0924\u093E\u0928 \u0905\u092D\u0940 \u0938\u0915\u094D\u0930\u093F\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964", "err.no_folder": "\u092F\u0939 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u092E\u094C\u091C\u0942\u0926 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092A\u0925 \u091C\u093E\u0901\u091A\u0947\u0902\u0964", "err.not_folder": "\u092F\u0939 \u092A\u0925 \u090F\u0915 \u092B\u093C\u093E\u0907\u0932 \u0939\u0948, \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0928\u0939\u0940\u0902\u0964", "err.credits": "\u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964", "err.device": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0905\u092D\u0940 \u091C\u0941\u0921\u093C\u093E \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 BitPull \u0910\u092A \u0916\u0941\u0932\u093E \u0930\u0916\u0947\u0902 \u0914\u0930 \u090F\u0915 \u092E\u093F\u0928\u091F \u092C\u093E\u0926 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.no_model": "\u0905\u092D\u0940 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u0915\u094B\u0908 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 AI \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 \u0926\u0947 \u0930\u0939\u093E\u0964 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "err.invalid": "\u0915\u0941\u091B \u092E\u093E\u0928 \u092E\u093E\u0928\u094D\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 \u092B\u093C\u0940\u0932\u094D\u0921 \u091C\u093E\u0901\u091A\u0947\u0902 \u0914\u0930 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "tip.lang": "\u0910\u092A \u0915\u0940 \u092D\u093E\u0937\u093E\u0964 \u0906\u092A\u0915\u0940 \u092A\u0938\u0902\u0926 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u092F\u093E\u0926 \u0930\u0916\u0940 \u091C\u093E\u0924\u0940 \u0939\u0948\u0964", "tip.buy.base": "Base \u092A\u094D\u0932\u093E\u0928 \u0915\u093E \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948: \u20AC4.50 \u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939, \u0939\u0930 \u092E\u0939\u0940\u0928\u0947 80 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u0947 \u0938\u093E\u0925\u0964 \u0906\u092A \u0915\u092D\u0940 \u092D\u0940 \u0930\u0926\u094D\u0926 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.buy.pro": "Pro \u092A\u094D\u0932\u093E\u0928 \u0915\u093E \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948: \u20AC9.90 \u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939, \u0939\u0930 \u092E\u0939\u0940\u0928\u0947 200 \u0915\u094D\u0930\u0947\u0921\u093F\u091F, \u0938\u092C\u0938\u0947 \u090A\u0901\u091A\u0940 \u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915\u0924\u093E \u0914\u0930 \u0938\u092D\u0940 GPU \u0915\u0947 \u0938\u093E\u0925\u0964 \u0906\u092A \u0915\u092D\u0940 \u092D\u0940 \u0930\u0926\u094D\u0926 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.buy.recharge": "\u20AC5 \u092E\u0947\u0902 \u090F\u0915 \u092C\u093E\u0930 80 \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0916\u0930\u0940\u0926\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924 \u092D\u0941\u0917\u0924\u093E\u0928 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964 \u092F\u0947 \u0915\u092D\u0940 \u0938\u092E\u093E\u092A\u094D\u0924 \u0928\u0939\u0940\u0902 \u0939\u094B\u0924\u0947\u0964", "tip.pause": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0905\u092D\u0940 \u0930\u094B\u0915 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0907\u0938 \u0938\u092E\u092F \u091A\u0932 \u0930\u0939\u093E \u091C\u0949\u092C \u0926\u0942\u0938\u0930\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u094C\u0902\u092A \u0926\u093F\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964 \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u094B\u092C\u093E\u0930\u093E \u0926\u092C\u093E\u090F\u0901\u0964", "tip.resume": "\u0906\u092A\u0915\u0947 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E\u094B\u0902 \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0924\u093E \u0939\u0948\u0964", "tip.rules.save": "\u090A\u092A\u0930 \u0926\u093F\u090F \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0928\u093F\u092F\u092E \u0938\u0939\u0947\u091C\u0924\u093E \u0939\u0948\u0964 \u092F\u0947 \u0915\u0941\u091B \u0939\u0940 \u0938\u0947\u0915\u0902\u0921 \u092E\u0947\u0902 \u0932\u093E\u0917\u0942 \u0939\u094B\u0924\u0947 \u0939\u0948\u0902; \u091C\u092C \u0924\u0915 \u0906\u092A \u0907\u0938\u0947 \u0928\u0939\u0940\u0902 \u0926\u092C\u093E\u0924\u0947, \u0915\u0941\u091B \u0928\u0939\u0940\u0902 \u092C\u0926\u0932\u0924\u093E\u0964", "tip.folder.add": "BitPull \u0915\u094B \u092C\u093E\u0908\u0902 \u0913\u0930 \u0932\u093F\u0916\u093E \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092A\u0922\u093C\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0905\u0928\u0941\u092E\u0924\u093F \u0935\u093E\u0932\u0947 \u092B\u093C\u094B\u0932\u094D\u0921\u0930\u094B\u0902 \u0938\u0947 \u092C\u093E\u0939\u0930 \u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0915\u092D\u0940 \u092A\u0922\u093C\u0940 \u092F\u093E \u0938\u093E\u091D\u093E \u0928\u0939\u0940\u0902 \u0915\u0940 \u091C\u093E\u0924\u0940\u0902\u0964", "tip.folder.draft": "\u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092E\u0947\u0902 bitpull.json \u092C\u0928\u093E\u0924\u093E \u0939\u0948: \u0909\u0938\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u0940 \u0938\u0942\u091A\u0940, \u0916\u093E\u0932\u0940 \u0935\u093F\u0935\u0930\u0923\u094B\u0902 \u0915\u0947 \u0938\u093E\u0925 \u091C\u093F\u0928\u094D\u0939\u0947\u0902 \u0906\u092A\u0915\u093E AI \u092D\u0930\u0947\u0917\u093E\u0964 \u0905\u092D\u0940 \u0915\u0941\u091B \u092D\u0940 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u094B\u0924\u093E\u0964", "tip.folder.publish": "\u0907\u0938 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u092A\u0930 \u090F\u0915 \u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 \u0930\u093F\u092A\u094B \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u093E\u091D\u093E \u0915\u0930\u0924\u093E \u0939\u0948, \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 \u0939\u0938\u094D\u0924\u093E\u0915\u094D\u0937\u0930 \u0915\u0947 \u0938\u093E\u0925\u0964 \u0905\u0917\u0930 \u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u092E\u0947\u0902 \u0915\u0941\u0902\u091C\u093F\u092F\u093E\u0901 \u092F\u093E \u092A\u093E\u0938\u0935\u0930\u094D\u0921 \u092E\u093F\u0932\u0924\u0947 \u0939\u0948\u0902, \u0924\u094B \u092A\u094D\u0930\u0915\u093E\u0936\u0928 \u0930\u094B\u0915 \u0926\u093F\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964", "tip.folder.remove": "BitPull \u0907\u0938 \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u0915\u094B \u092A\u0922\u093C\u0928\u093E \u092C\u0902\u0926 \u0915\u0930 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0907\u0938\u0938\u0947 \u092A\u0939\u0932\u0947 \u0938\u0947 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0930\u093F\u092A\u094B \u0924\u092C \u0924\u0915 \u0911\u0928\u0932\u093E\u0907\u0928 \u0930\u0939\u0924\u0947 \u0939\u0948\u0902 \u091C\u092C \u0924\u0915 \u0906\u092A \u0909\u0928\u094D\u0939\u0947\u0902 \u0935\u093E\u092A\u0938 \u0928\u0939\u0940\u0902 \u0932\u0947\u0924\u0947\u0964", "tip.repo.withdraw": "\u0907\u0938 \u0930\u093F\u092A\u094B \u0915\u094B \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0938\u0947 \u0939\u091F\u093E \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0926\u0942\u0938\u0930\u0947 \u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0907\u0938\u0947 \u0905\u092C \u0928 \u0922\u0942\u0901\u0922 \u092A\u093E\u090F\u0901\u0917\u0947, \u0928 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930 \u092A\u093E\u090F\u0901\u0917\u0947\u0964 \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0906\u092A\u0915\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0939\u0940 \u0930\u0939\u0924\u0940 \u0939\u0948\u0902\u0964", "tip.ask": "\u0906\u092A\u0915\u093E \u0938\u0935\u093E\u0932 \u090F\u0902\u0921-\u091F\u0942-\u090F\u0902\u0921 \u090F\u0928\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F\u0947\u0921 \u0930\u0942\u092A \u092E\u0947\u0902 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u0947 \u0910\u0938\u0947 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u092D\u0947\u091C\u0924\u093E \u0939\u0948 \u091C\u094B \u090F\u0915 \u0913\u092A\u0928 AI \u092E\u0949\u0921\u0932 \u091A\u0932\u093E\u0924\u093E \u0939\u0948\u0964 \u0907\u0938\u092E\u0947\u0902 \u0915\u0941\u091B \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0932\u0917\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.tier": "\u092E\u0949\u0921\u0932 \u0915\u093E \u0906\u0915\u093E\u0930: \u091B\u094B\u091F\u093E \u0924\u0947\u091C\u093C \u0914\u0930 \u0938\u0938\u094D\u0924\u093E \u0939\u0948, \u092C\u0921\u093C\u093E \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0938\u092E\u091D\u0926\u093E\u0930 \u0939\u0948 \u0914\u0930 \u091C\u093C\u094D\u092F\u093E\u0926\u093E \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0932\u0947\u0924\u093E \u0939\u0948\u0964", "tip.show_key": "\u0935\u0939 \u0915\u0941\u0902\u091C\u0940 \u0926\u093F\u0916\u093E\u0924\u093E \u0939\u0948 \u091C\u093F\u0938\u0938\u0947 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 AI \u091F\u0942\u0932 BitPull \u0938\u0947 \u092C\u093E\u0924 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902\u0964 \u0907\u0938\u0947 \u0915\u093F\u0938\u0940 \u0938\u0947 \u0938\u093E\u091D\u093E \u0928 \u0915\u0930\u0947\u0902\u0964", "tip.setup.download": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u0947 \u0932\u093F\u090F {name} \u0915\u093E \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u0907\u0902\u0938\u094D\u091F\u0949\u0932\u0930 \u0906\u092A\u0915\u0947 Downloads \u092B\u093C\u094B\u0932\u094D\u0921\u0930 \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0915\u0947 \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964 \u092A\u0942\u0930\u093E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0909\u0938\u0915\u0947 \u091A\u0930\u0923\u094B\u0902 \u0915\u093E \u092A\u093E\u0932\u0928 \u0915\u0930\u0947\u0902\u0964", "tip.setup.start": "{name} \u0936\u0941\u0930\u0942 \u0915\u0930\u0924\u093E \u0939\u0948, \u091C\u094B \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0932\u0947\u0915\u093F\u0928 \u091A\u0932 \u0928\u0939\u0940\u0902 \u0930\u0939\u093E\u0964", "tip.setup.pull": "AI \u092E\u0949\u0921\u0932 {model} ({size} GB) \u0915\u094B Ollama \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u0947 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0926\u0947 \u0938\u0915\u0947\u0964", "tip.setup.open": "\u0906\u092A\u0915\u0947 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u092E\u0947\u0902 {name} \u0915\u093E \u0906\u0927\u093F\u0915\u093E\u0930\u093F\u0915 \u092A\u0947\u091C \u0916\u094B\u0932\u0924\u093E \u0939\u0948\u0964", "tip.setup.recheck": "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A\u0924\u093E \u0939\u0948 \u0915\u093F \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0915\u094D\u092F\u093E \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948 \u0914\u0930 \u0915\u094D\u092F\u093E \u091A\u0932 \u0930\u0939\u093E \u0939\u0948\u0964", "update.title": "\u0910\u092A \u0905\u092A\u0921\u0947\u091F", "update.current": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0938\u0902\u0938\u094D\u0915\u0930\u0923: {v}", "update.latest": "\u0928\u0935\u0940\u0928\u0924\u092E \u0938\u0902\u0938\u094D\u0915\u0930\u0923: {v}", "update.button": "\u0905\u092A\u0921\u0947\u091F \u091C\u093E\u0901\u091A\u0947\u0902", "update.install": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0905\u092D\u0940 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "update.available": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0909\u092A\u0932\u092C\u094D\u0927 \u0939\u0948\u0964", "update.not_in_app": "\u0905\u092A\u0921\u0947\u091F BitPull \u0910\u092A \u0926\u094D\u0935\u093E\u0930\u093E \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u093F\u090F \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964 \u0905\u092A\u0921\u0947\u091F \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u092F\u0939 \u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921 \u0910\u092A \u0938\u0947 \u0916\u094B\u0932\u0947\u0902\u0964", "update.state.requested": "\u0910\u092A \u0938\u0947 \u091C\u093E\u0901\u091A\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u0939\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u2026", "update.state.checking": "\u0905\u092A\u0921\u0947\u091F \u091C\u093E\u0901\u091A\u0947 \u091C\u093E \u0930\u0939\u0947 \u0939\u0948\u0902\u2026", "update.state.up_to_date": "\u0906\u092A\u0915\u0947 \u092A\u093E\u0938 \u0928\u0935\u0940\u0928\u0924\u092E \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0939\u0948\u0964", "update.state.installing": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0914\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026 \u0910\u092A \u0905\u092A\u0928\u0947-\u0906\u092A \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0939\u094B\u0917\u093E\u0964", "update.state.restarting": "\u0938\u0902\u0938\u094D\u0915\u0930\u0923 {v} \u0915\u0947 \u0938\u093E\u0925 \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026", "update.state.error": "\u0905\u092A\u0921\u0947\u091F \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E: {msg}\u0964 \u092C\u093E\u0926 \u092E\u0947\u0902 \u092B\u093F\u0930 \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902\u0964", "tip.update": "\u091C\u093E\u0901\u091A\u0924\u093E \u0939\u0948 \u0915\u093F BitPull \u0915\u093E \u0928\u092F\u093E \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0939\u0948 \u092F\u093E \u0928\u0939\u0940\u0902\u0964 \u0905\u0917\u0930 \u0939\u0948, \u0924\u094B \u0909\u0938\u0947 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0909\u0938\u0915\u0947 \u0939\u0938\u094D\u0924\u093E\u0915\u094D\u0937\u0930 \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0924\u093E \u0939\u0948, \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0924\u093E \u0939\u0948 \u0914\u0930 \u0910\u092A \u0915\u094B \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0915\u0930\u0924\u093E \u0939\u0948\u0964 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0915\u0941\u091B \u0938\u0947\u0915\u0902\u0921 \u0915\u0947 \u0932\u093F\u090F \u0930\u0941\u0915\u0924\u093E \u0939\u0948\u0964", "tools.hint": "\u0905\u092A\u0928\u0947 AI \u0938\u0939\u093E\u092F\u0915 \u0915\u094B \u0938\u093E\u091D\u093E \u0915\u094B\u0921 \u0916\u094B\u091C\u0928\u0947 \u0914\u0930 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u0947 \u0913\u092A\u0928 \u092E\u0949\u0921\u0932 \u0914\u0930 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0926\u0947\u0902\u0964 \u0905\u092A\u0928\u093E \u091F\u0942\u0932 \u091A\u0941\u0928\u0947\u0902:", "tools.connect": "\u091C\u094B\u0921\u093C\u0947\u0902", "tools.connected": "\u091C\u0941\u0921\u093C\u093E \u0939\u0941\u0906", "tools.copy": "\u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902", "tools.copied": "\u0915\u0949\u092A\u0940 \u0939\u094B \u0917\u092F\u093E\u0964", "tools.installed": "\u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u0948", "tools.not_found": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E", "tools.done": "\u0939\u094B \u0917\u092F\u093E\u0964 BitPull \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u093E \u0936\u0941\u0930\u0942 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F {name} \u0915\u094B \u0930\u0940\u0938\u094D\u091F\u093E\u0930\u094D\u091F \u0915\u0930\u0947\u0902\u0964", "tools.manual": "\u0907\u0938\u0947 \u0916\u0941\u0926 \u091C\u094B\u0921\u093C\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F:", "tools.config_invalid": '{name} \u0915\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u092B\u093C\u093E\u0907\u0932 \u092E\u093E\u0928\u094D\u092F JSON \u0928\u0939\u0940\u0902 \u0939\u0948, \u0907\u0938\u0932\u093F\u090F BitPull \u0928\u0947 \u0909\u0938\u0947 \u0928\u0939\u0940\u0902 \u091B\u0941\u0906\u0964 \u092B\u093C\u093E\u0907\u0932 \u0920\u0940\u0915 \u0915\u0930\u0947\u0902 \u092F\u093E "\u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902" \u0938\u0947 BitPull \u0915\u094B \u0916\u0941\u0926 \u091C\u094B\u0921\u093C\u0947\u0902\u0964', "tip.tools.connect": "BitPull \u0915\u094B \u0905\u092A\u0928\u0947-\u0906\u092A {name} \u0915\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u0924\u093E \u0939\u0948\u0964 \u092A\u093F\u091B\u0932\u0940 \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u093E \u092C\u0948\u0915\u0905\u092A \u0909\u0928\u094D\u0939\u0940\u0902 \u0915\u0947 \u092A\u093E\u0938 \u0930\u0916\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964", "tip.tools.copy": "\u0915\u092E\u093E\u0902\u0921 \u092F\u093E \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u094B \u0915\u094D\u0932\u093F\u092A\u092C\u094B\u0930\u094D\u0921 \u092A\u0930 \u0915\u0949\u092A\u0940 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u0906\u092A BitPull \u0915\u094B \u0916\u0941\u0926 {name} \u092E\u0947\u0902 \u091C\u094B\u0921\u093C \u0938\u0915\u0947\u0902\u0964", "models.title": "\u0938\u093E\u091D\u093E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F AI \u092E\u0949\u0921\u0932", "models.hint": "\u0939\u0930 \u092A\u094D\u0930\u0915\u093E\u0930 \u0915\u0947 \u0916\u0941\u0932\u0947 \u092E\u0949\u0921\u0932 \u091C\u093F\u0928\u094D\u0939\u0947\u0902 \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0915\u0947\u0935\u0932 \u0935\u0947 \u092E\u0949\u0921\u0932 \u0926\u093F\u0916\u093E\u090F \u0917\u090F \u0939\u0948\u0902 \u091C\u093F\u0928\u0915\u093E \u0932\u093E\u0907\u0938\u0947\u0902\u0938 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0938\u0947\u0935\u093E \u0926\u0947\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u091A\u093E\u0932\u0942 \u0930\u0939\u0928\u0947 \u092A\u0930 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u093F\u090F \u0917\u090F \u092E\u0949\u0921\u0932 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u094B \u0926\u093F\u090F \u091C\u093E\u0924\u0947 \u0939\u0948\u0902\u0964", "models.engine.title": "\u091B\u0935\u093F, \u0906\u0935\u093E\u091C\u093C \u0914\u0930 \u0938\u0902\u0917\u0940\u0924 \u0907\u0902\u091C\u0928", "models.engine.help": "Lemonade (\u0913\u092A\u0928 \u0938\u094B\u0930\u094D\u0938): \u091B\u0935\u093F \u0928\u093F\u0930\u094D\u092E\u093E\u0923, \u0906\u0935\u093E\u091C\u093C \u0938\u0947 \u091F\u0947\u0915\u094D\u0938\u094D\u091F, \u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0938\u0947 \u0906\u0935\u093E\u091C\u093C, \u0938\u0902\u0917\u0940\u0924, \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u0915\u0940 \u0930\u0948\u0902\u0915\u093F\u0902\u0917 \u0914\u0930 \u091B\u0935\u093F \u092C\u0921\u093C\u093E \u0915\u0930\u0928\u093E\u0964 BitPull \u0915\u0947 \u0905\u0902\u0926\u0930 \u0907\u0902\u0938\u094D\u091F\u0949\u0932, \u090F\u0921\u092E\u093F\u0928 \u0905\u0927\u093F\u0915\u093E\u0930 \u0915\u0940 \u091C\u093C\u0930\u0942\u0930\u0924 \u0928\u0939\u0940\u0902\u0964", "models.engine.install": "\u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.engine.repair": "\u0907\u0902\u091C\u0928 \u092B\u093F\u0930 \u0938\u0947 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.engine.unsupported": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 (Apple silicon, \u092F\u093E Windows/Linux x64 \u091A\u093E\u0939\u093F\u090F)", "models.need_engine": "\u092A\u0939\u0932\u0947 \u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0915\u0930\u0947\u0902", "models.not_here": "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902", "models.shared": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0939\u0941\u0906 \xB7 \u0938\u093E\u091D\u093E", "models.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902 ({size} GB)", "models.needs_ram": "\u0932\u0917\u092D\u0917 {ram} GB \u092E\u0947\u092E\u094B\u0930\u0940 \u091A\u093E\u0939\u093F\u090F: \u092F\u0939\u093E\u0901 \u0927\u0940\u092E\u093E \u0939\u094B \u0938\u0915\u0924\u093E \u0939\u0948", "models.recommended": "\u0905\u0928\u0941\u0936\u0902\u0938\u093F\u0924", "models.license": "\u0932\u093E\u0907\u0938\u0947\u0902\u0938", "models.ok.engine": "\u0907\u0902\u091C\u0928 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026", "task.chat": "\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0914\u0930 \u0915\u094B\u0921", "task.vision": "\u091B\u0935\u093F \u2192 \u091F\u0947\u0915\u094D\u0938\u094D\u091F", "task.ocr": "\u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C (OCR)", "task.translate": "\u0905\u0928\u0941\u0935\u093E\u0926", "task.embed": "\u090F\u092E\u094D\u092C\u0947\u0921\u093F\u0902\u0917 (\u0916\u094B\u091C)", "task.rerank": "\u0930\u0940\u0930\u0948\u0902\u0915\u093F\u0902\u0917", "task.image": "\u091B\u0935\u093F \u0928\u093F\u0930\u094D\u092E\u093E\u0923", "task.upscale": "\u091B\u0935\u093F \u092C\u0921\u093C\u093E \u0915\u0930\u0928\u093E", "task.stt": "\u0906\u0935\u093E\u091C\u093C \u0938\u0947 \u091F\u0947\u0915\u094D\u0938\u094D\u091F", "task.tts": "\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0938\u0947 \u0906\u0935\u093E\u091C\u093C", "task.music": "\u0938\u0902\u0917\u0940\u0924", "limits.title": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0906\u092A\u0915\u0940 \u0938\u0940\u092E\u093E\u090F\u0901", "limits.hint": "\u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0915\u093F\u0924\u0928\u093E AI \u0915\u093E\u092E \u0915\u0930\u0924\u093E \u0939\u0948\u0964 \u0915\u094B\u0908 \u0938\u0940\u092E\u093E \u0928 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0916\u093E\u0932\u0940 \u091B\u094B\u0921\u093C\u0947\u0902\u0964 \u0938\u0940\u092E\u093E \u092A\u0942\u0930\u0940 \u0939\u094B\u0928\u0947 \u092A\u0930 \u0905\u0917\u0932\u0940 \u0905\u0935\u0927\u093F \u0936\u0941\u0930\u0942 \u0939\u094B\u0928\u0947 \u0924\u0915 \u0906\u092A\u0915\u0947 \u092E\u0949\u0921\u0932 \u0928\u0939\u0940\u0902 \u0926\u093F\u090F \u091C\u093E\u0924\u0947\u0964", "limits.save": "\u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0947\u0902", "limits.requests": "\u0905\u0928\u0941\u0930\u094B\u0927", "limits.tokens": "\u091F\u094B\u0915\u0928", "limits.used": "\u0909\u092A\u092F\u094B\u0917", "limits.day": "\u092A\u094D\u0930\u0924\u093F\u0926\u093F\u0928", "limits.week": "\u092A\u094D\u0930\u0924\u093F \u0938\u092A\u094D\u0924\u093E\u0939", "limits.month": "\u092A\u094D\u0930\u0924\u093F \u092E\u093E\u0939", "limits.none": "\u0915\u094B\u0908 \u0938\u0940\u092E\u093E \u0928\u0939\u0940\u0902", "limits.usage": "{requests} \u0905\u0928\u0941\u0930\u094B\u0927 \xB7 {tokens} \u091F\u094B\u0915\u0928", "limits.saved": "\u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0940 \u0917\u0908\u0902\u0964", "tip.models.engine": "\u0913\u092A\u0928 \u0938\u094B\u0930\u094D\u0938 Lemonade \u0907\u0902\u091C\u0928 \u0915\u094B BitPull \u092E\u0947\u0902 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u091B\u0935\u093F, \u0906\u0935\u093E\u091C\u093C \u0914\u0930 \u0938\u0902\u0917\u0940\u0924 \u092E\u0949\u0921\u0932 \u0909\u0927\u093E\u0930 \u0926\u0947 \u0938\u0915\u0947\u0964", "tip.models.download": "{model} ({size} GB) \u0915\u094B \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u092A\u0930 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0924\u093E \u0939\u0948 \u0924\u093E\u0915\u093F \u0907\u0938\u0947 \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u094B \u0926\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0947\u0964 \u0906\u092A \u0907\u0938\u0947 \u092C\u093E\u0926 \u092E\u0947\u0902 \u0939\u091F\u093E \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964", "tip.limits.save": "\u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F AI \u0915\u093E\u092E \u0915\u0940 \u0926\u0948\u0928\u093F\u0915, \u0938\u093E\u092A\u094D\u0924\u093E\u0939\u093F\u0915 \u0914\u0930 \u092E\u093E\u0938\u093F\u0915 \u0938\u0940\u092E\u093E\u090F\u0901 \u0938\u0939\u0947\u091C\u0924\u093E \u0939\u0948\u0964", "lend.visible": "\u2713 \u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0926\u0947\u0916 \u0930\u0939\u093E \u0939\u0948: \u0926\u0942\u0938\u0930\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F {cpus} CPU, {ram} GB \u0909\u092A\u0932\u092C\u094D\u0927\u0964", "lend.invisible": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0905\u092D\u0940 \u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u0928\u0939\u0940\u0902 \u0926\u0947\u0916 \u0930\u0939\u093E: \u090F\u0915 \u092E\u093F\u0928\u091F \u0924\u0915 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902; \u0905\u0917\u0930 \u0910\u0938\u093E \u0939\u0940 \u0930\u0939\u0947 \u0924\u094B \u0907\u0902\u091F\u0930\u0928\u0947\u091F \u0915\u0928\u0947\u0915\u094D\u0936\u0928 \u091C\u093E\u0901\u091A\u0947\u0902\u0964", "lend.unusable": "\u26A0 \u0905\u092D\u0940 \u0915\u094B\u0908 \u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u093E: \u092F\u0939\u093E\u0901 \u0915\u094B\u0908 \u0915\u093E\u092E \u0928\u0939\u0940\u0902 \u091A\u0932 \u0938\u0915\u0924\u093E\u0964 {reason}", "lend.unusable.docker": 'Docker, BitPull \u0915\u0940 \u0906\u0907\u0938\u094B\u0932\u0947\u0936\u0928 \u091C\u093E\u0901\u091A \u092A\u093E\u0938 \u0928\u0939\u0940\u0902 \u0915\u0930\u0924\u093E: "\u0907\u0938 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0915\u094B \u0938\u0947\u091F \u0905\u092A \u0915\u0930\u0947\u0902" \u0926\u0947\u0916\u0947\u0902\u0964', "lend.unusable.off": '\u0915\u0902\u091F\u0947\u0928\u0930 \u0915\u093E\u092E \u092C\u0902\u0926 \u0939\u0948\u0902 \u0914\u0930 \u0915\u094B\u0908 AI \u092E\u0949\u0921\u0932 \u0907\u0902\u0938\u094D\u091F\u0949\u0932 \u0928\u0939\u0940\u0902 \u0939\u0948: "\u0915\u0902\u091F\u0947\u0928\u0930 \u0915\u093E\u092E" \u091A\u093E\u0932\u0942 \u0915\u0930\u0947\u0902 \u092F\u093E \u0915\u094B\u0908 \u092E\u0949\u0921\u0932 \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902\u0964', "lend.docker_login": 'Docker \u0907\u092E\u0947\u091C \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0915\u0930 \u092A\u093E \u0930\u0939\u093E \u0915\u094D\u092F\u094B\u0902\u0915\u093F \u0909\u0938\u0915\u093E Docker Hub \u0932\u0949\u0917\u093F\u0928 \u0905\u092C \u092E\u093E\u0928\u094D\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 Docker Desktop \u092E\u0947\u0902 \u0905\u092A\u0928\u0947 \u0916\u093E\u0924\u0947 (\u090A\u092A\u0930 \u0926\u093E\u0908\u0902 \u0913\u0930) \u2192 Sign out \u092A\u0930 \u0915\u094D\u0932\u093F\u0915 \u0915\u0930\u0947\u0902, \u092B\u093F\u0930 \u0926\u094B\u092C\u093E\u0930\u093E \u0932\u0949\u0917 \u0907\u0928 \u0915\u0930\u0947\u0902 \u092F\u093E \u0932\u0949\u0917 \u0906\u0909\u091F \u0939\u0940 \u0930\u0939\u0947\u0902\u0964 \u092B\u093F\u0930 "\u092B\u093F\u0930 \u0938\u0947 \u091C\u093E\u0901\u091A\u0947\u0902" \u0926\u092C\u093E\u090F\u0901\u0964', "lend.off_hint": '\u0909\u0927\u093E\u0930 \u0926\u0947\u0928\u093E \u092C\u0902\u0926 \u0939\u0948: \u0928\u0940\u091A\u0947 "{rules}" \u092E\u0947\u0902 "{enabled}" \u092A\u0930 \u091F\u093F\u0915 \u0915\u0930\u0947\u0902 \u0914\u0930 "{save}" \u0926\u092C\u093E\u090F\u0901\u0964 (\u0930\u094B\u0915\u0947\u0902 / \u092B\u093F\u0930 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 \u0915\u0947\u0935\u0932 \u092A\u0939\u0932\u0947 \u0938\u0947 \u091A\u093E\u0932\u0942 \u0909\u0927\u093E\u0930 \u0915\u094B \u0930\u094B\u0915\u0924\u093E \u0939\u0948\u0964)', "lend.low_memory": '\u0915\u0947\u0935\u0932 {mb} MB \u092E\u0947\u092E\u094B\u0930\u0940 \u0926\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948: \u092C\u0939\u0941\u0924 \u0915\u092E \u0915\u093E\u092E \u091A\u0932 \u092A\u093E\u090F\u0901\u0917\u0947\u0964 "{rules}" \u092E\u0947\u0902 "{memory}" \u0915\u094B \u0909\u0926\u093E\u0939\u0930\u0923 \u0915\u0947 \u0932\u093F\u090F 4096 (= 4 GB) \u0915\u0930\u0947\u0902 \u0914\u0930 "{save}" \u0926\u092C\u093E\u090F\u0901\u0964', "rules.awake": "\u0909\u0927\u093E\u0930 \u0926\u0947\u0924\u0947 \u0938\u092E\u092F \u091C\u093E\u0917\u0924\u0947 \u0930\u0939\u0947\u0902", "rules.awake.help": "\u0915\u093F\u0938\u0940 \u0915\u0947 \u0932\u093F\u090F \u0915\u093E\u092E \u091A\u0932\u093E\u0924\u0947 \u0938\u092E\u092F \u092F\u0939 \u0915\u0902\u092A\u094D\u092F\u0942\u091F\u0930 \u0938\u094D\u0932\u0940\u092A \u092E\u0947\u0902 \u0928\u0939\u0940\u0902 \u091C\u093E\u090F\u0917\u093E (\u0938\u094D\u0915\u094D\u0930\u0940\u0928 \u092B\u093F\u0930 \u092D\u0940 \u092C\u0902\u0926 \u0939\u094B \u0938\u0915\u0924\u0940 \u0939\u0948)\u0964 \u092C\u093E\u0926 \u092E\u0947\u0902 \u0938\u093E\u092E\u093E\u0928\u094D\u092F \u0930\u0942\u092A \u0938\u0947 \u0938\u094D\u0932\u0940\u092A \u0939\u094B\u0917\u093E\u0964 \u0915\u093E\u092E \u092C\u0940\u091A \u092E\u0947\u0902 \u0928\u0939\u0940\u0902 \u0915\u091F\u0947\u0902\u0917\u0947\u0964", "ask.wait": "\u0907\u0924\u0928\u0947 \u0924\u0915 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E (\u092E\u093F\u0928\u091F)", "ask.wait.save": "\u0938\u0939\u0947\u091C\u0947\u0902", "ask.wait.saved": "\u0909\u0924\u094D\u0924\u0930\u094B\u0902 \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E {n} \u092E\u093F\u0928\u091F \u0924\u0915 \u0939\u094B\u0917\u0940\u0964", "ask.wait.range": "1 \u0938\u0947 120 \u0915\u0947 \u092C\u0940\u091A \u092E\u093F\u0928\u091F \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964", "tip.wait": "\u0928\u0947\u091F\u0935\u0930\u094D\u0915 \u0915\u0947 AI \u092E\u0949\u0921\u0932\u094B\u0902 \u0915\u0947 \u0909\u0924\u094D\u0924\u0930 \u0915\u0940 \u0915\u093F\u0924\u0928\u0940 \u0926\u0947\u0930 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902\u0964 \u0915\u093F\u0938\u0940 \u0915\u0947 \u092A\u094D\u0930\u094B\u0938\u0947\u0938\u0930 \u092A\u0930 \u091A\u0932\u0928\u0947 \u0935\u093E\u0932\u0947 \u092E\u0949\u0921\u0932 \u092E\u093F\u0928\u091F \u0932\u0947 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 \u0906\u092A\u0915\u093E AI \u092D\u0940 \u0907\u0938\u0947 \u092C\u0926\u0932 \u0938\u0915\u0924\u093E \u0939\u0948\u0964" }, id: { "lang.name": "Bahasa Indonesia", "app.title": "BitPull", "locked.text": "Buka dasbor dari aplikasi BitPull: tautannya berisi kunci akses.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Alamat langsung", "pill.relay_on": "Relay terhubung", "pill.relay_off": "Relay tidak terhubung", "pill.cached": "{n} salinan tersimpan", "net.title": "Jaringan langsung", "net.online": "{n} komputer online", "net.lending": "{n} sedang meminjamkan", "net.cpu": "{n} core CPU", "net.ram": "{n} GB RAM", "net.gpu": "{n} GPU", "net.models": "{n} model AI", "net.jobs": "{n} tugas berjalan", "credits.title": "Saldo kredit", "credits.plan": "Paket {plan} \xB7 bisa turun hingga {n}", "plan.free": "Gratis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Isi ulang \u20AC5", "buy.ok": "Halaman pembayaran dibuka di browser Anda.", "lend.title": "Pinjamkan komputer ini", "lend.hint": "Tugas berjalan dengan enkripsi end-to-end di sandbox terisolasi, tanpa akses ke file Anda. Anda mendapat kredit.", "lend.state.off": "Mati", "lend.state.waiting": "Menunggu", "lend.state.working": "Bekerja", "lend.reason.lending_off": "Peminjaman mati", "lend.reason.paused": "Dijeda", "lend.reason.outside_hours": "Di luar jam Anda", "lend.reason.on_battery": "Memakai baterai", "lend.reason.computer_in_use": "Anda sedang memakai komputer", "lend.reason.no_jobs": "Tidak ada tugas di antrean", "lend.running": "Menjalankan tugas {kind} sejak {time}", "lend.detail": "{reason} \xB7 {n} tugas selesai \xB7 menawarkan {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} model", "lend.pause": "Jeda", "lend.resume": "Lanjutkan", "lend.paused_ok": "Peminjaman dijeda. Tugas yang berjalan dialihkan ke komputer lain.", "lend.resumed_ok": "Peminjaman dilanjutkan.", "setup.title": "Siapkan komputer ini", "setup.hint": "Yang dibutuhkan komputer ini untuk meminjamkan. Untuk memakai jaringan tidak perlu apa-apa lagi. Installer berasal dari situs resmi; sistem akan meminta konfirmasi Anda.", "setup.checking": "Memeriksa\u2026", "setup.docker.help": "Menjalankan tugas orang lain di sandbox terisolasi. Diperlukan untuk tugas kontainer. Gratis untuk penggunaan pribadi dan usaha kecil.", "setup.docker.download": "Unduh Docker", "setup.docker.start": "Jalankan Docker", "setup.apple.title": "Apple Container (opsional)", "setup.apple.help": "Isolasi lebih kuat: setiap tugas di mesin virtualnya sendiri. Opsional; Docker sudah cukup untuk mulai.", "setup.apple.get": "Dapatkan Apple Container", "setup.ollama.help": "Menjalankan model AI terbuka (Qwen, Llama, Mistral\u2026). Diperlukan untuk meminjamkan model AI.", "setup.ollama.download": "Unduh Ollama", "setup.ollama.start": "Jalankan Ollama", "setup.model.title": "Model AI", "setup.model.help": "Model yang ditawarkan komputer ini ke orang lain. Disarankan untuk memori {ram} GB: {model}.", "setup.model.download": "Unduh {model} ({size} GB)", "setup.model.none": "belum ada", "setup.model.need_ollama": "Pasang dan jalankan Ollama dulu", "setup.nvidia.title": "Driver GPU NVIDIA (opsional)", "setup.nvidia.help": "Hanya jika komputer ini punya kartu grafis NVIDIA yang ingin Anda pinjamkan.", "setup.nvidia.get": "Dapatkan driver NVIDIA", "setup.status.running": "terpasang dan berjalan", "setup.status.installed": "terpasang", "setup.status.stopped": "terpasang, tidak berjalan", "setup.status.missing": "belum terpasang", "setup.status.found": "ditemukan", "setup.status.not_found": "tidak ditemukan", "setup.terminal": "Jalankan di terminal:", "setup.done": "Selesai", "setup.opened": "Selesai: {file} dibuka, ikuti langkahnya", "setup.recheck": "Periksa lagi", "setup.ok.download": "Unduhan dimulai. Installer terbuka sendiri setelah selesai: ikuti langkahnya.", "setup.ok.start": "Menjalankan\u2026 bisa memakan waktu hingga satu menit. Daftar ini diperbarui sendiri.", "setup.ok.pull": "Unduhan model dimulai. Progres ditampilkan di atas.", "setup.ok.page": "Halaman dibuka di browser Anda.", "setup.ok.recheck": "Sudah diperiksa lagi.", "rules.title": "Aturan peminjaman", "rules.enabled": "Peminjaman aktif", "rules.enabled.help": "Sakelar utama. Saat mati, komputer ini tidak pernah menjalankan tugas orang lain. Anda tetap bisa memakai jaringan.", "rules.cpus": "CPU maks.", "rules.cpus.help": "Berapa core prosesor yang boleh dipakai satu tugas. Contoh: di komputer 8 core, nilai 2 menyisakan 6 core untuk Anda.", "rules.memory": "Memori maks. (MB)", "rules.memory.help": "RAM yang boleh dipakai satu tugas, dalam megabyte (1024 MB = 1 GB). BitPull tidak pernah menawarkan lebih dari separuh memori komputer ini.", "rules.gpu": "GPU", "rules.gpu.none": "Tidak ada", "rules.gpu.consumer": "Konsumen (8\u201312 GB)", "rules.gpu.high": "Kelas atas (16\u201324 GB)", "rules.gpu.datacenter": "Pusat data (40 GB+)", "rules.gpu.help": "Kartu grafis yang Anda pinjamkan, menurut memori videonya. Biarkan Tidak ada jika tidak punya GPU khusus atau tidak ingin meminjamkannya. GPU menghasilkan kredit paling banyak.", "rules.containers": "Tugas kontainer", "rules.containers.help": "Menjalankan build, tes, dan skrip orang lain di sandbox tanpa internet dan tanpa akses ke file Anda. Perlu Docker (atau Apple Container): lihat \u201CSiapkan komputer ini\u201D.", "rules.models": "Model terbuka (Ollama)", "rules.models.help": "Menjawab permintaan AI dengan model terbuka yang terpasang di Ollama pada komputer ini. Perlu Ollama dan minimal satu model.", "rules.idle": "Hanya setelah menit menganggur", "rules.idle.help": "Pinjamkan hanya jika Anda tidak menyentuh keyboard atau mouse selama sekian menit. 0 = tetap meminjamkan saat Anda bekerja.", "rules.ac": "Hanya saat dicas", "rules.ac.help": "Di laptop, berhenti meminjamkan saat memakai baterai, agar baterai tidak terkuras.", "rules.hours": "Hanya dari / sampai jam (kosong = selalu)", "rules.hours.help": "Pinjamkan hanya dalam rentang waktu ini, format 24 jam. Contoh: 22 dan 8 = dari pukul 22.00 sampai 08.00. Kosongkan keduanya untuk meminjamkan kapan saja.", "rules.cache": "Salinan repo orang lain", "rules.cache.help": "Berapa repo publik pengguna lain yang disalin di komputer ini, agar tetap tersedia saat pemiliknya offline. Memakai sedikit ruang disk dan menghasilkan kredit. 0 = tidak ada.", "rules.save": "Simpan aturan", "rules.saved": "Aturan disimpan. Berlaku dalam beberapa detik.", "rules.hours_both": "Isi kedua jam, atau kosongkan keduanya untuk meminjamkan kapan saja.", "folders.title": "Folder yang diizinkan", "folders.hint": "BitPull hanya membaca folder ini. Untuk memublikasikan folder, diperlukan bitpull.json yang lengkap.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Izinkan", "folders.none": "Tidak ada folder yang diizinkan.", "folders.draft": "Draf", "folders.publish": "Publikasikan", "folders.remove": "Hapus", "folders.need_path": "Tulis dulu path lengkap folder, mis. /Users/you/projects/my-library.", "folders.added": "Folder diizinkan.", "folders.removed": "Folder dihapus. BitPull tidak lagi membacanya.", "folders.drafted": "Draf siap: {n} file ditemukan. Biarkan AI Anda mengisi ringkasan dan deskripsi (alat prepare_publish), lalu tekan Publikasikan.", "folders.published": '"{name}" dipublikasikan dengan {n} file.', "folders.secrets_in": "Ditemukan di: {where}", "folders.line": "{file} baris {line}", "repos.title": "Repo Anda yang dipublikasikan", "repos.hint": "Diperbarui sendiri saat Anda mengubah file (setiap 5 menit).", "repos.none": "Belum ada repo yang dipublikasikan.", "repos.withdraw": "Tarik", "repos.withdrawn": "Repo ditarik dari jaringan.", "ask.title": "Model terbuka di jaringan", "ask.offers": "Komputer ini menawarkan: {models}.", "ask.offers_none": "tidak ada model (pasang Ollama untuk menawarkan)", "ask.placeholder": "Tanya model terbuka di jaringan\u2026", "ask.small": "Kecil", "ask.medium": "Sedang", "ask.large": "Besar", "ask.button": "Tanya", "ask.empty": "Tulis pertanyaan dulu.", "ask.waiting": "Mencari komputer dengan model tersebut\u2026 bisa memakan waktu hingga satu menit.", "ask.credits": "{n} kredit", "tools.title": "Hubungkan alat Anda", "tools.mcp": "Untuk Claude Code dan klien MCP, jalankan di terminal:", "tools.openai": "Untuk alat yang kompatibel dengan OpenAI: URL dasar", "tools.key": "Kunci API", "tools.show": "Tampilkan", "jobs.title": "Tugas terbaru Anda", "jobs.none": "Tidak ada tugas.", "jobs.model": "Model", "jobs.container": "Kontainer", "jobs.status.queued": "Antre", "jobs.status.running": "Berjalan", "jobs.status.done": "Selesai", "jobs.status.failed": "Gagal", "jobs.status.canceled": "Dibatalkan", "jobs.cost": "{n} kredit", working: "Memproses\u2026", "err.agent_down": "BitPull di komputer ini tidak merespons. Ia akan memulai ulang sendiri dalam 30 detik: coba lagi sebentar lagi.", "err.server": "Tidak dapat menjangkau server BitPull. Periksa koneksi internet Anda dan coba lagi.", "err.session": "Sesi dasbor ini kedaluwarsa. Buka lagi dari aplikasi BitPull.", "err.billing": "Pembayaran belum aktif.", "err.no_folder": "Folder ini tidak ada di komputer ini. Periksa path-nya.", "err.not_folder": "Path ini adalah file, bukan folder.", "err.credits": "Kredit tidak cukup.", "err.device": "Komputer ini belum terhubung. Biarkan aplikasi BitPull terbuka dan coba lagi dalam satu menit.", "err.no_model": "Saat ini tidak ada komputer di jaringan yang menawarkan model AI. Coba lagi nanti.", "err.invalid": "Beberapa nilai tidak valid. Periksa kolom dan coba lagi.", "tip.lang": "Bahasa aplikasi. Pilihan Anda disimpan di komputer ini.", "tip.buy.base": "Membuka halaman pembayaran aman untuk paket Base: \u20AC4.50 per bulan dengan 80 kredit setiap bulan. Anda bisa membatalkan kapan saja.", "tip.buy.pro": "Membuka halaman pembayaran aman untuk paket Pro: \u20AC9.90 per bulan dengan 200 kredit setiap bulan, prioritas tertinggi, dan semua GPU. Anda bisa membatalkan kapan saja.", "tip.buy.recharge": "Membuka halaman pembayaran aman untuk membeli 80 kredit sekali saja, seharga \u20AC5. Kreditnya tidak pernah kedaluwarsa.", "tip.pause": "Menghentikan peminjaman sekarang juga. Tugas yang sedang berjalan saat ini dialihkan ke komputer lain. Tekan lagi untuk melanjutkan.", "tip.resume": "Memulai peminjaman lagi, sesuai aturan peminjaman Anda.", "tip.rules.save": "Menyimpan aturan peminjaman di atas. Aturan berlaku dalam beberapa detik; tidak ada yang berubah sampai Anda menekan tombol ini.", "tip.folder.add": "Mengizinkan BitPull membaca folder yang ditulis di sebelah kiri. File di luar folder yang diizinkan tidak pernah dibaca atau dibagikan.", "tip.folder.draft": "Membuat bitpull.json di folder: daftar file-nya dengan deskripsi kosong untuk dilengkapi AI Anda. Belum ada yang dipublikasikan.", "tip.folder.publish": "Membagikan folder ini di jaringan sebagai repo publik, ditandatangani oleh komputer ini. Publikasi diblokir jika ditemukan kunci atau kata sandi di dalam file.", "tip.folder.remove": "BitPull berhenti membaca folder ini. Repo yang sudah dipublikasikan dari folder ini tetap online sampai Anda menariknya.", "tip.repo.withdraw": "Menghapus repo ini dari jaringan. Pengguna lain tidak bisa lagi menemukan atau mengunduhnya. File Anda tetap ada di komputer Anda.", "tip.ask": "Mengirim pertanyaan Anda, dengan enkripsi end-to-end, ke komputer di jaringan yang menjalankan model AI terbuka. Memakai beberapa kredit.", "tip.tier": "Ukuran model: yang kecil cepat dan murah, yang besar lebih pintar dan memakai lebih banyak kredit.", "tip.show_key": "Menampilkan kunci yang dipakai alat AI di komputer ini untuk berkomunikasi dengan BitPull. Jangan bagikan kunci ini.", "tip.setup.download": "Mengunduh installer resmi {name} untuk komputer ini ke folder Downloads Anda lalu membukanya. Ikuti langkah-langkahnya untuk menyelesaikan.", "tip.setup.start": "Menjalankan {name}, yang sudah terpasang di komputer ini tetapi belum berjalan.", "tip.setup.pull": "Mengunduh model AI {model} ({size} GB) ke Ollama, agar komputer ini bisa menawarkannya kepada orang lain.", "tip.setup.open": "Membuka halaman resmi {name} di browser Anda.", "tip.setup.recheck": "Memeriksa lagi apa yang terpasang dan berjalan di komputer ini.", "update.title": "Pembaruan aplikasi", "update.current": "Versi terpasang: {v}", "update.latest": "Versi terbaru: {v}", "update.button": "Periksa pembaruan", "update.install": "Pasang versi {v} sekarang", "update.available": "Versi {v} tersedia.", "update.not_in_app": "Pembaruan dipasang oleh aplikasi BitPull. Buka dasbor ini dari aplikasi untuk memperbarui.", "update.state.requested": "Meminta aplikasi untuk memeriksa\u2026", "update.state.checking": "Memeriksa pembaruan\u2026", "update.state.up_to_date": "Anda sudah memakai versi terbaru.", "update.state.installing": "Mengunduh dan memasang versi {v}\u2026 aplikasi akan memulai ulang sendiri.", "update.state.restarting": "Memulai ulang dengan versi {v}\u2026", "update.state.error": "Pembaruan gagal: {msg}. Coba lagi nanti.", "tip.update": "Memeriksa apakah ada versi BitPull yang lebih baru. Jika ada, mengunduhnya, memverifikasi tanda tangannya, memasangnya, dan memulai ulang aplikasi. Peminjaman berhenti sejenak selama beberapa detik.", "tools.hint": "Biarkan asisten AI Anda mencari kode bersama dan memakai model terbuka serta komputer di jaringan. Pilih alat Anda:", "tools.connect": "Hubungkan", "tools.connected": "Terhubung", "tools.copy": "Salin", "tools.copied": "Disalin.", "tools.installed": "Terpasang", "tools.not_found": "Tidak ditemukan di komputer ini", "tools.done": "Selesai. Mulai ulang {name} untuk mulai memakai BitPull.", "tools.manual": "Untuk menambahkannya secara manual:", "tools.config_invalid": "File pengaturan {name} bukan JSON yang valid, jadi BitPull tidak mengubahnya. Perbaiki file tersebut atau tambahkan BitPull secara manual dengan Salin.", "tip.tools.connect": "Menambahkan BitPull ke pengaturan {name} secara otomatis. Cadangan pengaturan sebelumnya disimpan di sebelahnya.", "tip.tools.copy": "Menyalin perintah atau pengaturan ke papan klip, agar Anda bisa menambahkan BitPull ke {name} sendiri.", "models.title": "Model AI untuk dibagikan", "models.hint": "Model terbuka dari segala jenis yang dapat dipinjamkan komputer ini. Hanya model yang lisensinya mengizinkan melayani orang lain yang ditampilkan. Model yang diunduh ditawarkan ke jaringan selama peminjaman aktif.", "models.engine.title": "Mesin gambar, suara, dan musik", "models.engine.help": "Lemonade (sumber terbuka): membuat gambar, suara ke teks, teks ke suara, musik, pemeringkatan ulang dokumen, dan memperbesar gambar. Dipasang di dalam BitPull, tanpa hak administrator.", "models.engine.install": "Pasang mesin", "models.engine.repair": "Pasang ulang mesin", "models.engine.unsupported": "Tidak tersedia di komputer ini (perlu Apple silicon, atau Windows/Linux x64)", "models.need_engine": "Pasang mesin terlebih dahulu", "models.not_here": "Tidak tersedia di komputer ini", "models.shared": "Terunduh \xB7 dibagikan", "models.download": "Unduh ({size} GB)", "models.needs_ram": "Perlu sekitar {ram} GB memori: mungkin lambat di sini", "models.recommended": "Disarankan", "models.license": "Lisensi", "models.ok.engine": "Memasang mesin\u2026", "task.chat": "Teks dan kode", "task.vision": "Gambar \u2192 teks", "task.ocr": "Dokumen (OCR)", "task.translate": "Terjemahan", "task.embed": "Embedding (pencarian)", "task.rerank": "Pemeringkatan ulang", "task.image": "Pembuatan gambar", "task.upscale": "Perbesar gambar", "task.stt": "Suara ke teks", "task.tts": "Teks ke suara", "task.music": "Musik", "limits.title": "Batas Anda untuk orang lain", "limits.hint": "Seberapa banyak pekerjaan AI yang dilakukan komputer ini untuk orang lain. Kosongkan untuk tanpa batas. Saat batas tercapai, model Anda tidak ditawarkan lagi hingga periode berikutnya.", "limits.save": "Simpan batas", "limits.requests": "Permintaan", "limits.tokens": "Token", "limits.used": "Terpakai", "limits.day": "Per hari", "limits.week": "Per minggu", "limits.month": "Per bulan", "limits.none": "tanpa batas", "limits.usage": "{requests} permintaan \xB7 {tokens} token", "limits.saved": "Batas disimpan.", "tip.models.engine": "Mengunduh mesin sumber terbuka Lemonade ke dalam BitPull, agar komputer ini dapat meminjamkan model gambar, suara, dan musik.", "tip.models.download": "Mengunduh {model} ({size} GB) ke komputer ini agar dapat ditawarkan ke orang lain. Anda bisa menghapusnya nanti.", "tip.limits.save": "Menyimpan batas harian, mingguan, dan bulanan untuk pekerjaan AI bagi orang lain.", "lend.visible": "\u2713 Jaringan melihat komputer ini: {cpus} CPU, {ram} GB tersedia untuk orang lain.", "lend.invisible": "Jaringan belum melihat peminjaman: tunggu hingga satu menit; jika tetap begini, periksa koneksi internet.", "lend.unusable": "\u26A0 Belum ada yang bisa memakai komputer ini: tidak ada pekerjaan yang bisa berjalan di sini. {reason}", "lend.unusable.docker": 'Docker tidak lolos pemeriksaan isolasi BitPull: lihat "Atur komputer ini".', "lend.unusable.off": 'Pekerjaan kontainer mati dan tidak ada model AI terpasang: aktifkan "Pekerjaan kontainer" atau unduh model.', "lend.docker_login": "Docker tidak dapat mengunduh image karena login Docker Hub-nya sudah tidak berlaku. Di Docker Desktop klik akun Anda (kanan atas) \u2192 Sign out, lalu masuk lagi atau tetap keluar. Lalu tekan Periksa lagi.", "lend.off_hint": 'Peminjaman mati: centang "{enabled}" di "{rules}" di bawah lalu tekan "{save}". (Jeda / Lanjutkan hanya menjeda peminjaman yang sudah aktif.)', "lend.low_memory": 'Hanya {mb} MB memori yang ditawarkan: hanya sedikit pekerjaan yang muat. Di "{rules}" atur "{memory}" misalnya 4096 (= 4 GB) lalu tekan "{save}".', "rules.awake": "Tetap menyala saat meminjamkan", "rules.awake.help": "Saat menjalankan pekerjaan untuk orang lain, komputer ini tidak tidur (layar tetap bisa mati). Setelahnya tidur seperti biasa. Mencegah pekerjaan terputus.", "ask.wait": "Tunggu hingga (menit)", "ask.wait.save": "Simpan", "ask.wait.saved": "Jawaban akan ditunggu hingga {n} menit.", "ask.wait.range": "Masukkan jumlah menit antara 1 dan 120.", "tip.wait": "Berapa lama menunggu jawaban model AI jaringan. Model di prosesor orang lain bisa butuh beberapa menit. AI Anda juga bisa mengubahnya." }, it: { "lang.name": "Italiano", "app.title": "BitPull", "locked.text": "Apri la dashboard dall'app BitPull: il suo link contiene la chiave di accesso.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Indirizzo diretto", "pill.relay_on": "Relay connesso", "pill.relay_off": "Relay non connesso", "pill.cached": "{n} copie in cache", "net.title": "Rete in tempo reale", "net.online": "{n} computer online", "net.lending": "{n} in prestito ora", "net.cpu": "{n} core CPU", "net.ram": "{n} GB di RAM", "net.gpu": "{n} GPU", "net.models": "{n} modelli di IA", "net.jobs": "{n} lavori in corso", "credits.title": "Saldo crediti", "credits.plan": "Piano {plan} \xB7 puoi scendere fino a {n}", "plan.free": "Free", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base 4,50 \u20AC", "buy.pro": "Pro 9,90 \u20AC", "buy.recharge": "Ricarica 5 \u20AC", "buy.ok": "Pagina di pagamento aperta nel browser.", "lend.title": "Presta questo computer", "lend.hint": "I lavori girano cifrati end-to-end in sandbox isolate, senza accesso ai tuoi file. Guadagni crediti.", "lend.state.off": "Spento", "lend.state.waiting": "In attesa", "lend.state.working": "Al lavoro", "lend.reason.lending_off": "Prestito disattivato", "lend.reason.paused": "In pausa", "lend.reason.outside_hours": "Fuori dai tuoi orari", "lend.reason.on_battery": "A batteria", "lend.reason.computer_in_use": "Stai usando il computer", "lend.reason.no_jobs": "Nessun lavoro in coda", "lend.running": "Esegue un lavoro {kind} dalle {time}", "lend.detail": "{reason} \xB7 {n} lavori completati \xB7 offre {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} modelli", "lend.pause": "Pausa", "lend.resume": "Riprendi", "lend.paused_ok": "Prestito in pausa. L'eventuale lavoro in corso \xE8 passato a un altro computer.", "lend.resumed_ok": "Prestito ripreso.", "setup.title": "Configura questo computer", "setup.hint": "Cosa serve a questo computer per prestare. Per usare la rete non serve altro. Gli installer arrivano dai siti ufficiali; il sistema ti chiede di confermare.", "setup.checking": "Verifica in corso\u2026", "setup.docker.help": "Esegue i lavori degli altri in sandbox isolate. Serve per i lavori in container. Gratis per uso personale e piccole aziende.", "setup.docker.download": "Scarica Docker", "setup.docker.start": "Avvia Docker", "setup.apple.title": "Apple Container (facoltativo)", "setup.apple.help": "Isolamento pi\xF9 forte: ogni lavoro nella sua macchina virtuale. Facoltativo; per iniziare basta Docker.", "setup.apple.get": "Ottieni Apple Container", "setup.ollama.help": "Esegue modelli di IA aperti (Qwen, Llama, Mistral\u2026). Serve per prestare modelli di IA.", "setup.ollama.download": "Scarica Ollama", "setup.ollama.start": "Avvia Ollama", "setup.model.title": "Modello di IA", "setup.model.help": "Il modello che questo computer offre agli altri. Consigliato per {ram} GB di memoria: {model}.", "setup.model.download": "Scarica {model} ({size} GB)", "setup.model.none": "ancora nessuno", "setup.model.need_ollama": "Prima installa e avvia Ollama", "setup.nvidia.title": "Driver GPU NVIDIA (facoltativi)", "setup.nvidia.help": "Solo se questo computer ha una scheda grafica NVIDIA che vuoi prestare.", "setup.nvidia.get": "Ottieni i driver NVIDIA", "setup.status.running": "installato e in esecuzione", "setup.status.installed": "installato", "setup.status.stopped": "installato, non in esecuzione", "setup.status.missing": "non installato", "setup.status.found": "trovato", "setup.status.not_found": "non trovato", "setup.terminal": "Esegui in un terminale:", "setup.done": "Fatto", "setup.opened": "Fatto: aperto {file}, segui i suoi passaggi", "setup.recheck": "Verifica di nuovo", "setup.ok.download": "Download avviato. L'installer si apre da solo quando finisce: segui i suoi passaggi.", "setup.ok.start": "Avvio in corso\u2026 pu\xF2 volerci fino a un minuto. Questo elenco si aggiorna da solo.", "setup.ok.pull": "Download del modello avviato. L'avanzamento \xE8 mostrato sopra.", "setup.ok.page": "Pagina aperta nel browser.", "setup.ok.recheck": "Verificato di nuovo.", "rules.title": "Regole di prestito", "rules.enabled": "Prestito attivo", "rules.enabled.help": "Interruttore generale. Se spento, questo computer non esegue mai i lavori degli altri. Puoi comunque usare la rete tu.", "rules.cpus": "CPU max", "rules.cpus.help": "Quanti core del processore pu\xF2 usare al massimo un lavoro. Esempio: su un computer con 8 core, con 2 te ne restano 6 liberi.", "rules.memory": "Memoria max (MB)", "rules.memory.help": "RAM che un lavoro pu\xF2 usare, in megabyte (1024 MB = 1 GB). BitPull non offre mai pi\xF9 della met\xE0 della memoria di questo computer.", "rules.gpu": "GPU", "rules.gpu.none": "Nessuna", "rules.gpu.consumer": "Consumer (8\u201312 GB)", "rules.gpu.high": "Fascia alta (16\u201324 GB)", "rules.gpu.datacenter": "Data center (40 GB+)", "rules.gpu.help": "La scheda grafica che presti, in base alla memoria video. Lascia Nessuna se non hai una GPU dedicata o non vuoi prestarla. Una GPU fa guadagnare pi\xF9 crediti.", "rules.containers": "Lavori in container", "rules.containers.help": "Esegue build, test e script per gli altri in una sandbox senza internet e senza accesso ai tuoi file. Serve Docker (o Apple Container): vedi \u201CConfigura questo computer\u201D.", "rules.models": "Modelli aperti (Ollama)", "rules.models.help": "Risponde alle richieste di IA con i modelli aperti installati in Ollama su questo computer. Servono Ollama e almeno un modello.", "rules.idle": "Solo dopo minuti di inattivit\xE0", "rules.idle.help": "Presta solo quando non tocchi tastiera o mouse da questi minuti. 0 = presta anche mentre lavori.", "rules.ac": "Solo con alimentatore collegato", "rules.ac.help": "Su un portatile, smette di prestare quando va a batteria, cos\xEC il prestito non la scarica mai.", "rules.hours": "Solo dalle / alle ore (vuoto = sempre)", "rules.hours.help": "Presta solo in questa fascia oraria, nel formato 24 ore. Esempio: 22 e 8 = dalle 22 alle 8. Lascia entrambi vuoti per prestare a qualsiasi ora.", "rules.cache": "Copie in cache dei repo altrui", "rules.cache.help": "Di quanti repo pubblici di altri utenti questo computer tiene una copia, cos\xEC restano disponibili quando i loro autori sono offline. Usa un po' di spazio su disco e fa guadagnare crediti. 0 = nessuno.", "rules.save": "Salva regole", "rules.saved": "Regole salvate. Si applicano entro pochi secondi.", "rules.hours_both": "Compila entrambe le ore, oppure lasciale vuote per prestare a qualsiasi ora.", "folders.title": "Cartelle autorizzate", "folders.hint": "BitPull legge solo queste cartelle. Per pubblicarne una serve un bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizza", "folders.none": "Nessuna cartella autorizzata.", "folders.draft": "Bozza", "folders.publish": "Pubblica", "folders.remove": "Rimuovi", "folders.need_path": "Prima scrivi il percorso completo di una cartella, ad es. /Users/you/projects/my-library.", "folders.added": "Cartella autorizzata.", "folders.removed": "Cartella rimossa. BitPull non la legge pi\xF9.", "folders.drafted": "Bozza pronta: {n} file trovati. Fai compilare alla tua IA il riepilogo e le descrizioni (strumento prepare_publish), poi premi Pubblica.", "folders.published": 'Pubblicato "{name}" con {n} file.', "folders.secrets_in": "Trovato in: {where}", "folders.line": "{file} riga {line}", "repos.title": "I tuoi repo pubblicati", "repos.hint": "Si aggiornano da soli quando modifichi i file (ogni 5 minuti).", "repos.none": "Nessun repo pubblicato.", "repos.withdraw": "Ritira", "repos.withdrawn": "Repo ritirato dalla rete.", "ask.title": "Modelli aperti sulla rete", "ask.offers": "Questo computer offre: {models}.", "ask.offers_none": "nessun modello (installa Ollama per offrirne)", "ask.placeholder": "Chiedi a un modello aperto sulla rete\u2026", "ask.small": "Piccolo", "ask.medium": "Medio", "ask.large": "Grande", "ask.button": "Chiedi", "ask.empty": "Prima scrivi una domanda.", "ask.waiting": "Cerco un computer con il modello\u2026 pu\xF2 volerci fino a un minuto.", "ask.credits": "{n} crediti", "tools.title": "Collega i tuoi strumenti", "tools.mcp": "Per Claude Code e i client MCP, esegui in un terminale:", "tools.openai": "Per strumenti compatibili con OpenAI: URL di base", "tools.key": "Chiave API", "tools.show": "Mostra", "jobs.title": "I tuoi lavori recenti", "jobs.none": "Nessun lavoro.", "jobs.model": "Modello", "jobs.container": "Container", "jobs.status.queued": "In coda", "jobs.status.running": "In corso", "jobs.status.done": "Completato", "jobs.status.failed": "Non riuscito", "jobs.status.canceled": "Annullato", "jobs.cost": "{n} crediti", working: "In corso\u2026", "err.agent_down": "BitPull su questo computer non risponde. Si riavvia da solo entro 30 secondi: riprova tra poco.", "err.server": "Impossibile raggiungere il server BitPull. Controlla la connessione a internet e riprova.", "err.session": "Questa sessione della dashboard \xE8 scaduta. Riaprila dall'app BitPull.", "err.billing": "I pagamenti non sono ancora attivi.", "err.no_folder": "Questa cartella non esiste su questo computer. Controlla il percorso.", "err.not_folder": "Questo percorso \xE8 un file, non una cartella.", "err.credits": "Crediti insufficienti.", "err.device": "Questo computer non \xE8 ancora connesso. Tieni aperta l'app BitPull e riprova tra un minuto.", "err.no_model": "Al momento nessun computer della rete offre un modello di IA. Riprova pi\xF9 tardi.", "err.invalid": "Alcuni valori non sono validi. Controlla i campi e riprova.", "tip.lang": "Lingua dell'app. La tua scelta viene ricordata su questo computer.", "tip.buy.base": "Apre la pagina di pagamento sicura per il piano Base: 4,50 \u20AC al mese con 80 crediti ogni mese. Puoi disdire in qualsiasi momento.", "tip.buy.pro": "Apre la pagina di pagamento sicura per il piano Pro: 9,90 \u20AC al mese con 200 crediti ogni mese, priorit\xE0 massima e tutte le GPU. Puoi disdire in qualsiasi momento.", "tip.buy.recharge": "Apre la pagina di pagamento sicura per comprare 80 crediti una tantum, a 5 \u20AC. Non scadono mai.", "tip.pause": "Ferma subito il prestito. Un lavoro in corso in quel momento passa a un altro computer. Premi di nuovo per riprendere.", "tip.resume": "Riprende il prestito, seguendo le tue regole di prestito.", "tip.rules.save": "Salva le regole di prestito qui sopra. Si applicano entro pochi secondi; non cambia nulla finch\xE9 non premi qui.", "tip.folder.add": "Permette a BitPull di leggere la cartella scritta a sinistra. I file fuori dalle cartelle autorizzate non vengono mai letti n\xE9 condivisi.", "tip.folder.draft": "Crea bitpull.json nella cartella: l'elenco dei suoi file con descrizioni vuote che la tua IA completer\xE0. Non viene ancora pubblicato nulla.", "tip.folder.publish": "Condivide questa cartella sulla rete come repo pubblico, firmato da questo computer. La pubblicazione viene bloccata se nei file ci sono chiavi o password.", "tip.folder.remove": "BitPull smette di leggere questa cartella. I repo gi\xE0 pubblicati da qui restano online finch\xE9 non li ritiri.", "tip.repo.withdraw": "Rimuove questo repo dalla rete. Gli altri utenti non possono pi\xF9 trovarlo n\xE9 scaricarlo. I tuoi file restano sul tuo computer.", "tip.ask": "Invia la tua domanda, cifrata end-to-end, a un computer della rete che esegue un modello di IA aperto. Costa pochi crediti.", "tip.tier": "Dimensione del modello: piccolo \xE8 veloce ed economico, grande \xE8 pi\xF9 intelligente e costa pi\xF9 crediti.", "tip.show_key": "Mostra la chiave che gli strumenti di IA su questo computer usano per parlare con BitPull. Non condividerla.", "tip.setup.download": "Scarica l'installer ufficiale di {name} per questo computer nella cartella Download e lo apre. Segui i suoi passaggi per finire.", "tip.setup.start": "Avvia {name}, che \xE8 installato su questo computer ma non \xE8 in esecuzione.", "tip.setup.pull": "Scarica il modello di IA {model} ({size} GB) in Ollama, cos\xEC questo computer pu\xF2 offrirlo agli altri.", "tip.setup.open": "Apre la pagina ufficiale di {name} nel browser.", "tip.setup.recheck": "Verifica di nuovo cosa \xE8 installato e in esecuzione su questo computer.", "update.title": "Aggiornamenti dell'app", "update.current": "Versione installata: {v}", "update.latest": "Ultima versione: {v}", "update.button": "Cerca aggiornamenti", "update.install": "Installa ora la versione {v}", "update.available": "\xC8 disponibile la versione {v}.", "update.not_in_app": "Gli aggiornamenti vengono installati dall'app BitPull. Apri questa dashboard dall'app per aggiornare.", "update.state.requested": "Chiedo all'app di verificare\u2026", "update.state.checking": "Ricerca aggiornamenti\u2026", "update.state.up_to_date": "Hai l'ultima versione.", "update.state.installing": "Download e installazione della versione {v}\u2026 l'app si riavvia da sola.", "update.state.restarting": "Riavvio con la versione {v}\u2026", "update.state.error": "L'aggiornamento non \xE8 riuscito: {msg}. Riprova pi\xF9 tardi.", "tip.update": "Verifica se esiste una versione pi\xF9 recente di BitPull. Se c'\xE8, la scarica, ne verifica la firma, la installa e riavvia l'app. Il prestito si ferma per qualche secondo.", "tools.hint": "Lascia che il tuo assistente di IA cerchi nel codice condiviso e usi i modelli aperti e i computer della rete. Scegli il tuo strumento:", "tools.connect": "Collega", "tools.connected": "Collegato", "tools.copy": "Copia", "tools.copied": "Copiato.", "tools.installed": "Installato", "tools.not_found": "Non trovato su questo computer", "tools.done": "Fatto. Riavvia {name} per iniziare a usare BitPull.", "tools.manual": "Per aggiungerlo a mano:", "tools.config_invalid": "Il file delle impostazioni di {name} non \xE8 un JSON valido, quindi BitPull non l'ha toccato. Correggi il file o aggiungi BitPull a mano con Copia.", "tip.tools.connect": "Aggiunge BitPull alle impostazioni di {name} automaticamente. Un backup delle impostazioni precedenti viene conservato accanto.", "tip.tools.copy": "Copia il comando o le impostazioni negli appunti, cos\xEC puoi aggiungere BitPull a {name} da solo.", "models.title": "Modelli AI da condividere", "models.hint": "Modelli open di ogni tipo che questo computer pu\xF2 prestare. Sono elencati solo i modelli la cui licenza permette di servirli ad altri. I modelli scaricati vengono offerti alla rete mentre il prestito \xE8 attivo.", "models.engine.title": "Motore per immagini, voce e musica", "models.engine.help": "Lemonade (open source): genera immagini, trascrive la voce, legge testi ad alta voce, crea musica, riordina documenti e ingrandisce immagini. Installato dentro BitPull, senza diritti di amministratore.", "models.engine.install": "Installa motore", "models.engine.repair": "Reinstalla motore", "models.engine.unsupported": "Non disponibile su questo computer (serve Apple silicon, oppure Windows/Linux x64)", "models.need_engine": "Installa prima il motore", "models.not_here": "Non disponibile su questo computer", "models.shared": "Scaricato \xB7 condiviso", "models.download": "Scarica ({size} GB)", "models.needs_ram": "Richiede circa {ram} GB di memoria: qui potrebbe essere lento", "models.recommended": "Consigliato", "models.license": "Licenza", "models.ok.engine": "Installazione del motore\u2026", "task.chat": "Testo e codice", "task.vision": "Immagini \u2192 testo", "task.ocr": "Documenti (OCR)", "task.translate": "Traduzione", "task.embed": "Embedding (ricerca)", "task.rerank": "Riordino documenti", "task.image": "Generazione immagini", "task.upscale": "Ingrandimento immagini", "task.stt": "Voce \u2192 testo", "task.tts": "Testo \u2192 voce", "task.music": "Musica", "limits.title": "I tuoi limiti per gli altri", "limits.hint": "Quanto lavoro AI questo computer fa per gli altri. Lascia vuoto per nessun limite. Quando un limite \xE8 raggiunto, i tuoi modelli non vengono pi\xF9 offerti fino all'inizio del periodo successivo.", "limits.save": "Salva limiti", "limits.requests": "Richieste", "limits.tokens": "Token", "limits.used": "Usati", "limits.day": "Al giorno", "limits.week": "A settimana", "limits.month": "Al mese", "limits.none": "nessun limite", "limits.usage": "{requests} richieste \xB7 {tokens} token", "limits.saved": "Limiti salvati.", "tip.models.engine": "Scarica in BitPull il motore open source Lemonade, cos\xEC questo computer pu\xF2 prestare modelli per immagini, voce e musica.", "tip.models.download": "Scarica {model} ({size} GB) su questo computer per offrirlo agli altri. Puoi rimuoverlo in seguito.", "tip.limits.save": "Salva i limiti giornalieri, settimanali e mensili del lavoro AI svolto per gli altri.", "lend.visible": "\u2713 La rete vede questo computer: {cpus} CPU, {ram} GB disponibili per gli altri.", "lend.invisible": "La rete non vede ancora il prestito: attendi fino a un minuto; se resta cos\xEC, controlla la connessione a internet.", "lend.unusable": "\u26A0 Nessuno pu\xF2 ancora usare questo computer: qui non pu\xF2 girare nessun lavoro. {reason}", "lend.unusable.docker": 'Docker non supera il controllo di isolamento di BitPull: vedi "Configura questo computer".', "lend.unusable.off": `I lavori in container sono spenti e non c'\xE8 nessun modello AI: attiva "Lavori in container" o scarica un modello.`, "lend.docker_login": "Docker non riesce a scaricare le immagini perch\xE9 il suo accesso a Docker Hub non \xE8 pi\xF9 valido. In Docker Desktop clicca il tuo account (in alto a destra) \u2192 Sign out, poi rientra oppure resta disconnesso. Poi premi Verifica di nuovo.", "lend.off_hint": 'Il prestito \xE8 spento: spunta "{enabled}" in "{rules}" qui sotto e premi "{save}". (Pausa / Riprendi sospende solo un prestito gi\xE0 acceso.)', "lend.low_memory": 'Offri solo {mb} MB di memoria: ci stanno pochi lavori. In "{rules}" imposta "{memory}" ad esempio a 4096 (= 4 GB) e premi "{save}".', "rules.awake": "Resta acceso durante il prestito", "rules.awake.help": "Mentre esegue un lavoro per qualcuno, questo computer non va in sospensione (lo schermo pu\xF2 comunque spegnersi). Poi torna a sospendersi come sempre. Evita che i lavori vengano interrotti.", "ask.wait": "Attendi fino a (minuti)", "ask.wait.save": "Salva", "ask.wait.saved": "Le risposte verranno attese fino a {n} minuti.", "ask.wait.range": "Inserisci un numero di minuti tra 1 e 120.", "tip.wait": "Quanto aspettare la risposta dei modelli AI della rete prima di rinunciare. I modelli sul processore di qualcuno possono metterci minuti. Pu\xF2 cambiarlo anche la tua AI." }, pt: { "lang.name": "Portugu\xEAs", "app.title": "BitPull", "locked.text": "Abra o painel pelo app BitPull: o link dele cont\xE9m a chave de acesso.", "pill.online": "Online", "pill.offline": "Offline", "pill.direct": "Endere\xE7o direto", "pill.relay_on": "Relay conectado", "pill.relay_off": "Relay n\xE3o conectado", "pill.cached": "{n} c\xF3pias em cache", "net.title": "Rede ao vivo", "net.online": "{n} computadores online", "net.lending": "{n} emprestando agora", "net.cpu": "{n} n\xFAcleos de CPU", "net.ram": "{n} GB de RAM", "net.gpu": "{n} GPUs", "net.models": "{n} modelos de IA", "net.jobs": "{n} tarefas em execu\xE7\xE3o", "credits.title": "Saldo de cr\xE9ditos", "credits.plan": "Plano {plan} \xB7 pode chegar a {n}", "plan.free": "Gr\xE1tis", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "Recarregar \u20AC5", "buy.ok": "P\xE1gina de pagamento aberta no seu navegador.", "lend.title": "Emprestar este computador", "lend.hint": "As tarefas rodam com criptografia de ponta a ponta em sandboxes isoladas, sem acesso aos seus arquivos. Voc\xEA ganha cr\xE9ditos.", "lend.state.off": "Desligado", "lend.state.waiting": "Aguardando", "lend.state.working": "Trabalhando", "lend.reason.lending_off": "Empr\xE9stimo desligado", "lend.reason.paused": "Pausado", "lend.reason.outside_hours": "Fora do seu hor\xE1rio", "lend.reason.on_battery": "Na bateria", "lend.reason.computer_in_use": "Voc\xEA est\xE1 usando o computador", "lend.reason.no_jobs": "Nenhuma tarefa na fila", "lend.running": "Executando uma tarefa {kind} desde {time}", "lend.detail": "{reason} \xB7 {n} tarefas conclu\xEDdas \xB7 oferece {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", sandbox {name}", "lend.detail.models": ", {n} modelos", "lend.pause": "Pausar", "lend.resume": "Retomar", "lend.paused_ok": "Empr\xE9stimo pausado. Tarefas em andamento foram passadas para outro computador.", "lend.resumed_ok": "Empr\xE9stimo retomado.", "setup.title": "Configurar este computador", "setup.hint": "O que este computador precisa para emprestar. Para usar a rede, nada mais \xE9 necess\xE1rio. Os instaladores v\xEAm dos sites oficiais; o sistema pedir\xE1 sua confirma\xE7\xE3o.", "setup.checking": "Verificando\u2026", "setup.docker.help": "Executa tarefas de outras pessoas em sandboxes isoladas. Necess\xE1rio para tarefas de cont\xEAiner. Gr\xE1tis para uso pessoal e pequenas empresas.", "setup.docker.download": "Baixar Docker", "setup.docker.start": "Iniciar Docker", "setup.apple.title": "Apple Container (opcional)", "setup.apple.help": "Isolamento mais forte: cada tarefa em sua pr\xF3pria m\xE1quina virtual. Opcional; o Docker basta para come\xE7ar.", "setup.apple.get": "Obter Apple Container", "setup.ollama.help": "Executa modelos de IA abertos (Qwen, Llama, Mistral\u2026). Necess\xE1rio para emprestar modelos de IA.", "setup.ollama.download": "Baixar Ollama", "setup.ollama.start": "Iniciar Ollama", "setup.model.title": "Modelo de IA", "setup.model.help": "O modelo que este computador oferece aos outros. Sugerido para {ram} GB de mem\xF3ria: {model}.", "setup.model.download": "Baixar {model} ({size} GB)", "setup.model.none": "nenhum ainda", "setup.model.need_ollama": "Instale e inicie o Ollama primeiro", "setup.nvidia.title": "Drivers de GPU NVIDIA (opcional)", "setup.nvidia.help": "S\xF3 se este computador tiver uma placa de v\xEDdeo NVIDIA que voc\xEA queira emprestar.", "setup.nvidia.get": "Obter drivers NVIDIA", "setup.status.running": "instalado e em execu\xE7\xE3o", "setup.status.installed": "instalado", "setup.status.stopped": "instalado, parado", "setup.status.missing": "n\xE3o instalado", "setup.status.found": "encontrado", "setup.status.not_found": "n\xE3o encontrado", "setup.terminal": "Execute em um terminal:", "setup.done": "Pronto", "setup.opened": "Pronto: {file} aberto, siga os passos", "setup.recheck": "Verificar de novo", "setup.ok.download": "Download iniciado. O instalador abre sozinho quando terminar: siga os passos.", "setup.ok.start": "Iniciando\u2026 pode levar at\xE9 um minuto. Esta lista se atualiza sozinha.", "setup.ok.pull": "Download do modelo iniciado. O progresso aparece acima.", "setup.ok.page": "P\xE1gina aberta no seu navegador.", "setup.ok.recheck": "Verificado novamente.", "rules.title": "Regras de empr\xE9stimo", "rules.enabled": "Empr\xE9stimo ligado", "rules.enabled.help": "Chave geral. Quando desligada, este computador nunca executa tarefas de outras pessoas. Voc\xEA ainda pode usar a rede.", "rules.cpus": "M\xE1x. de CPUs", "rules.cpus.help": "Quantos n\xFAcleos do processador uma tarefa pode usar no m\xE1ximo. Exemplo: em um computador de 8 n\xFAcleos, 2 deixa 6 n\xFAcleos livres para voc\xEA.", "rules.memory": "Mem\xF3ria m\xE1x. (MB)", "rules.memory.help": "RAM que uma tarefa pode usar, em megabytes (1024 MB = 1 GB). O BitPull nunca oferece mais da metade da mem\xF3ria deste computador.", "rules.gpu": "GPU", "rules.gpu.none": "Nenhuma", "rules.gpu.consumer": "Dom\xE9stica (8\u201312 GB)", "rules.gpu.high": "Topo de linha (16\u201324 GB)", "rules.gpu.datacenter": "Data center (40 GB+)", "rules.gpu.help": "A placa de v\xEDdeo que voc\xEA empresta, pela mem\xF3ria de v\xEDdeo. Deixe Nenhuma se n\xE3o tiver GPU dedicada ou n\xE3o quiser emprest\xE1-la. Uma GPU rende mais cr\xE9ditos.", "rules.containers": "Tarefas de cont\xEAiner", "rules.containers.help": "Executa builds, testes e scripts de outras pessoas em uma sandbox sem internet e sem acesso aos seus arquivos. Requer Docker (ou Apple Container): veja \u201CConfigurar este computador\u201D.", "rules.models": "Modelos abertos (Ollama)", "rules.models.help": "Responde a pedidos de IA com os modelos abertos instalados no Ollama deste computador. Requer Ollama e pelo menos um modelo.", "rules.idle": "S\xF3 ap\xF3s minutos ocioso", "rules.idle.help": "Empresta s\xF3 quando voc\xEA n\xE3o tocar no teclado ou mouse por esse n\xFAmero de minutos. 0 = empresta mesmo enquanto voc\xEA trabalha.", "rules.ac": "S\xF3 na tomada", "rules.ac.help": "Em um notebook, para de emprestar quando estiver na bateria, para nunca descarreg\xE1-la.", "rules.hours": "S\xF3 da hora / at\xE9 a hora (vazio = sempre)", "rules.hours.help": "Empresta s\xF3 nesse intervalo, no formato 24 horas. Exemplo: 22 e 8 = das 22h \xE0s 8h. Deixe os dois vazios para emprestar a qualquer hora.", "rules.cache": "C\xF3pias em cache de repos de outros", "rules.cache.help": "Quantos repos p\xFAblicos de outros usu\xE1rios este computador guarda em c\xF3pia, para que fiquem dispon\xEDveis quando os autores estiverem offline. Usa pouco espa\xE7o em disco e rende cr\xE9ditos. 0 = nenhum.", "rules.save": "Salvar regras", "rules.saved": "Regras salvas. Valem em poucos segundos.", "rules.hours_both": "Preencha as duas horas ou deixe ambas vazias para emprestar a qualquer hora.", "folders.title": "Pastas autorizadas", "folders.hint": "O BitPull l\xEA apenas estas pastas. Para publicar uma, ela precisa de um bitpull.json completo.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "Autorizar", "folders.none": "Nenhuma pasta autorizada.", "folders.draft": "Rascunho", "folders.publish": "Publicar", "folders.remove": "Remover", "folders.need_path": "Escreva primeiro o caminho completo de uma pasta, ex.: /Users/you/projects/my-library.", "folders.added": "Pasta autorizada.", "folders.removed": "Pasta removida. O BitPull n\xE3o a l\xEA mais.", "folders.drafted": "Rascunho pronto: {n} arquivos encontrados. Deixe sua IA preencher o resumo e as descri\xE7\xF5es (ferramenta prepare_publish) e depois clique em Publicar.", "folders.published": '"{name}" publicado com {n} arquivos.', "folders.secrets_in": "Encontrado em: {where}", "folders.line": "{file} linha {line}", "repos.title": "Seus repos publicados", "repos.hint": "Atualizam sozinhos quando voc\xEA altera os arquivos (a cada 5 minutos).", "repos.none": "Nenhum repo publicado.", "repos.withdraw": "Retirar", "repos.withdrawn": "Repo retirado da rede.", "ask.title": "Modelos abertos na rede", "ask.offers": "Este computador oferece: {models}.", "ask.offers_none": "nenhum modelo (instale o Ollama para oferecer)", "ask.placeholder": "Pergunte a um modelo aberto na rede\u2026", "ask.small": "Pequeno", "ask.medium": "M\xE9dio", "ask.large": "Grande", "ask.button": "Perguntar", "ask.empty": "Escreva uma pergunta primeiro.", "ask.waiting": "Procurando um computador com o modelo\u2026 pode levar at\xE9 um minuto.", "ask.credits": "{n} cr\xE9ditos", "tools.title": "Conecte suas ferramentas", "tools.mcp": "Para Claude Code e clientes MCP, execute em um terminal:", "tools.openai": "Para ferramentas compat\xEDveis com OpenAI: URL base", "tools.key": "Chave de API", "tools.show": "Mostrar", "jobs.title": "Suas tarefas recentes", "jobs.none": "Nenhuma tarefa.", "jobs.model": "Modelo", "jobs.container": "Cont\xEAiner", "jobs.status.queued": "Na fila", "jobs.status.running": "Em execu\xE7\xE3o", "jobs.status.done": "Conclu\xEDda", "jobs.status.failed": "Falhou", "jobs.status.canceled": "Cancelada", "jobs.cost": "{n} cr\xE9ditos", working: "Trabalhando\u2026", "err.agent_down": "O BitPull deste computador n\xE3o est\xE1 respondendo. Ele reinicia sozinho em at\xE9 30 segundos: tente de novo em breve.", "err.server": "N\xE3o foi poss\xEDvel acessar o servidor do BitPull. Verifique sua conex\xE3o com a internet e tente de novo.", "err.session": "A sess\xE3o deste painel expirou. Abra-o de novo pelo app BitPull.", "err.billing": "Os pagamentos ainda n\xE3o est\xE3o ativos.", "err.no_folder": "Esta pasta n\xE3o existe neste computador. Verifique o caminho.", "err.not_folder": "Este caminho \xE9 um arquivo, n\xE3o uma pasta.", "err.credits": "Cr\xE9ditos insuficientes.", "err.device": "Este computador ainda n\xE3o est\xE1 conectado. Mantenha o app BitPull aberto e tente de novo em um minuto.", "err.no_model": "Nenhum computador na rede oferece um modelo de IA agora. Tente mais tarde.", "err.invalid": "Alguns valores n\xE3o s\xE3o v\xE1lidos. Verifique os campos e tente de novo.", "tip.lang": "Idioma do app. Sua escolha fica salva neste computador.", "tip.buy.base": "Abre a p\xE1gina de pagamento seguro do plano Base: \u20AC4.50 por m\xEAs com 80 cr\xE9ditos todo m\xEAs. Voc\xEA pode cancelar quando quiser.", "tip.buy.pro": "Abre a p\xE1gina de pagamento seguro do plano Pro: \u20AC9.90 por m\xEAs com 200 cr\xE9ditos todo m\xEAs, prioridade m\xE1xima e todas as GPUs. Voc\xEA pode cancelar quando quiser.", "tip.buy.recharge": "Abre a p\xE1gina de pagamento seguro para comprar 80 cr\xE9ditos uma \xFAnica vez, por \u20AC5. Eles nunca expiram.", "tip.pause": "Para o empr\xE9stimo agora mesmo. Uma tarefa em andamento neste momento \xE9 passada para outro computador. Clique de novo para retomar.", "tip.resume": "Volta a emprestar, seguindo suas regras de empr\xE9stimo.", "tip.rules.save": "Salva as regras de empr\xE9stimo acima. Elas valem em poucos segundos; nada muda at\xE9 voc\xEA clicar aqui.", "tip.folder.add": "Permite que o BitPull leia a pasta escrita \xE0 esquerda. Arquivos fora das pastas autorizadas nunca s\xE3o lidos nem compartilhados.", "tip.folder.draft": "Cria o bitpull.json na pasta: a lista dos arquivos dela com descri\xE7\xF5es vazias para sua AI completar. Nada \xE9 publicado ainda.", "tip.folder.publish": "Compartilha esta pasta na rede como um repo p\xFAblico, assinado por este computador. A publica\xE7\xE3o \xE9 bloqueada se forem encontradas chaves ou senhas nos arquivos.", "tip.folder.remove": "O BitPull para de ler esta pasta. Repos j\xE1 publicados a partir dela continuam online at\xE9 voc\xEA retir\xE1-los.", "tip.repo.withdraw": "Remove este repo da rede. Outros usu\xE1rios n\xE3o poder\xE3o mais encontr\xE1-lo nem baix\xE1-lo. Seus arquivos continuam no seu computador.", "tip.ask": "Envia sua pergunta, com criptografia de ponta a ponta, para um computador da rede que roda um modelo de AI aberto. Custa alguns cr\xE9ditos.", "tip.tier": "Tamanho do modelo: o pequeno \xE9 r\xE1pido e barato; o grande \xE9 mais inteligente e custa mais cr\xE9ditos.", "tip.show_key": "Mostra a chave que as ferramentas de AI deste computador usam para se comunicar com o BitPull. N\xE3o compartilhe.", "tip.setup.download": "Baixa o instalador oficial do {name} para este computador na sua pasta Downloads e o abre. Siga os passos dele para concluir.", "tip.setup.start": "Inicia o {name}, que est\xE1 instalado neste computador mas n\xE3o est\xE1 rodando.", "tip.setup.pull": "Baixa o modelo de AI {model} ({size} GB) no Ollama, para que este computador possa oferec\xEA-lo a outras pessoas.", "tip.setup.open": "Abre a p\xE1gina oficial do {name} no seu navegador.", "tip.setup.recheck": "Verifica de novo o que est\xE1 instalado e rodando neste computador.", "update.title": "Atualiza\xE7\xF5es do app", "update.current": "Vers\xE3o instalada: {v}", "update.latest": "Vers\xE3o mais recente: {v}", "update.button": "Verificar atualiza\xE7\xF5es", "update.install": "Instalar a vers\xE3o {v} agora", "update.available": "A vers\xE3o {v} est\xE1 dispon\xEDvel.", "update.not_in_app": "As atualiza\xE7\xF5es s\xE3o instaladas pelo app BitPull. Abra este painel pelo app para atualizar.", "update.state.requested": "Pedindo ao app para verificar\u2026", "update.state.checking": "Verificando atualiza\xE7\xF5es\u2026", "update.state.up_to_date": "Voc\xEA tem a vers\xE3o mais recente.", "update.state.installing": "Baixando e instalando a vers\xE3o {v}\u2026 o app reinicia sozinho.", "update.state.restarting": "Reiniciando com a vers\xE3o {v}\u2026", "update.state.error": "A atualiza\xE7\xE3o n\xE3o funcionou: {msg}. Tente novamente mais tarde.", "tip.update": "Verifica se existe uma vers\xE3o mais nova do BitPull. Se existir, baixa, verifica a assinatura, instala e reinicia o app. O empr\xE9stimo pausa por alguns segundos.", "tools.hint": "Deixe seu assistente de AI pesquisar c\xF3digo compartilhado e usar os modelos abertos e os computadores da rede. Escolha sua ferramenta:", "tools.connect": "Conectar", "tools.connected": "Conectado", "tools.copy": "Copiar", "tools.copied": "Copiado.", "tools.installed": "Instalado", "tools.not_found": "N\xE3o encontrado neste computador", "tools.done": "Pronto. Reinicie o {name} para come\xE7ar a usar o BitPull.", "tools.manual": "Para adicionar manualmente:", "tools.config_invalid": "O arquivo de configura\xE7\xF5es do {name} n\xE3o \xE9 um JSON v\xE1lido, ent\xE3o o BitPull n\xE3o o alterou. Corrija o arquivo ou adicione o BitPull manualmente com Copiar.", "tip.tools.connect": "Adiciona o BitPull \xE0s configura\xE7\xF5es do {name} automaticamente. Um backup das configura\xE7\xF5es anteriores \xE9 mantido ao lado delas.", "tip.tools.copy": "Copia o comando ou as configura\xE7\xF5es para a \xE1rea de transfer\xEAncia, para voc\xEA mesmo adicionar o BitPull ao {name}.", "models.title": "Modelos de IA para compartilhar", "models.hint": "Modelos abertos de todos os tipos que este computador pode emprestar. S\xF3 aparecem modelos cuja licen\xE7a permite servi-los a outras pessoas. Os modelos baixados s\xE3o oferecidos \xE0 rede enquanto o empr\xE9stimo estiver ativo.", "models.engine.title": "Motor de imagem, voz e m\xFAsica", "models.engine.help": "Lemonade (c\xF3digo aberto): gera imagens, transcreve voz, l\xEA textos em voz alta, cria m\xFAsica, reordena documentos e amplia imagens. Instalado dentro do BitPull, sem direitos de administrador.", "models.engine.install": "Instalar motor", "models.engine.repair": "Reinstalar motor", "models.engine.unsupported": "Indispon\xEDvel neste computador (requer Apple silicon, ou Windows/Linux x64)", "models.need_engine": "Instale o motor primeiro", "models.not_here": "Indispon\xEDvel neste computador", "models.shared": "Baixado \xB7 compartilhado", "models.download": "Baixar ({size} GB)", "models.needs_ram": "Precisa de cerca de {ram} GB de mem\xF3ria: pode ficar lento aqui", "models.recommended": "Recomendado", "models.license": "Licen\xE7a", "models.ok.engine": "Instalando o motor\u2026", "task.chat": "Texto e c\xF3digo", "task.vision": "Imagens \u2192 texto", "task.ocr": "Documentos (OCR)", "task.translate": "Tradu\xE7\xE3o", "task.embed": "Embeddings (busca)", "task.rerank": "Reordena\xE7\xE3o", "task.image": "Gera\xE7\xE3o de imagens", "task.upscale": "Amplia\xE7\xE3o de imagens", "task.stt": "Voz para texto", "task.tts": "Texto para voz", "task.music": "M\xFAsica", "limits.title": "Seus limites para outros", "limits.hint": "Quanto trabalho de IA este computador faz para outros. Deixe vazio para sem limite. Ao atingir um limite, seus modelos deixam de ser oferecidos at\xE9 o pr\xF3ximo per\xEDodo.", "limits.save": "Salvar limites", "limits.requests": "Solicita\xE7\xF5es", "limits.tokens": "Tokens", "limits.used": "Usado", "limits.day": "Por dia", "limits.week": "Por semana", "limits.month": "Por m\xEAs", "limits.none": "sem limite", "limits.usage": "{requests} solicita\xE7\xF5es \xB7 {tokens} tokens", "limits.saved": "Limites salvos.", "tip.models.engine": "Baixa no BitPull o motor de c\xF3digo aberto Lemonade, para que este computador possa emprestar modelos de imagem, voz e m\xFAsica.", "tip.models.download": "Baixa {model} ({size} GB) neste computador para oferec\xEA-lo a outros. Voc\xEA pode remov\xEA-lo depois.", "tip.limits.save": "Salva os limites di\xE1rios, semanais e mensais do trabalho de IA feito para outros.", "lend.visible": "\u2713 A rede v\xEA este computador: {cpus} CPU, {ram} GB dispon\xEDveis para outros.", "lend.invisible": "A rede ainda n\xE3o v\xEA o empr\xE9stimo: aguarde at\xE9 um minuto; se continuar assim, verifique a conex\xE3o com a internet.", "lend.unusable": "\u26A0 Ningu\xE9m pode usar este computador ainda: nenhuma tarefa pode rodar aqui. {reason}", "lend.unusable.docker": 'O Docker n\xE3o passa na verifica\xE7\xE3o de isolamento do BitPull: veja "Configurar este computador".', "lend.unusable.off": 'As tarefas em cont\xEAiner est\xE3o desativadas e n\xE3o h\xE1 modelo de IA: ative "Tarefas em cont\xEAiner" ou baixe um modelo.', "lend.docker_login": "O Docker n\xE3o consegue baixar imagens porque o login no Docker Hub n\xE3o \xE9 mais v\xE1lido. No Docker Desktop clique na sua conta (canto superior direito) \u2192 Sign out, depois entre de novo ou fique desconectado. Em seguida pressione Verificar novamente.", "lend.off_hint": 'O empr\xE9stimo est\xE1 desligado: marque "{enabled}" em "{rules}" abaixo e pressione "{save}". (Pausar / Retomar s\xF3 pausa um empr\xE9stimo j\xE1 ligado.)', "lend.low_memory": 'Voc\xEA oferece s\xF3 {mb} MB de mem\xF3ria: cabem poucas tarefas. Em "{rules}" defina "{memory}" por exemplo como 4096 (= 4 GB) e pressione "{save}".', "rules.awake": "Manter ativo durante o empr\xE9stimo", "rules.awake.help": "Enquanto executa uma tarefa para algu\xE9m, este computador n\xE3o entra em suspens\xE3o (a tela pode desligar mesmo assim). Depois suspende normalmente. Evita tarefas interrompidas.", "ask.wait": "Esperar at\xE9 (minutos)", "ask.wait.save": "Salvar", "ask.wait.saved": "As respostas ser\xE3o aguardadas at\xE9 {n} minutos.", "ask.wait.range": "Digite um n\xFAmero de minutos entre 1 e 120.", "tip.wait": "Quanto esperar a resposta dos modelos de IA da rede antes de desistir. Modelos no processador de algu\xE9m podem levar minutos. Sua IA tamb\xE9m pode mudar isso." }, ru: { "lang.name": "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", "app.title": "BitPull", "locked.text": "\u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F BitPull: \u0432 \u0435\u0451 \u0441\u0441\u044B\u043B\u043A\u0435 \u0435\u0441\u0442\u044C \u043A\u043B\u044E\u0447 \u0434\u043E\u0441\u0442\u0443\u043F\u0430.", "pill.online": "\u0412 \u0441\u0435\u0442\u0438", "pill.offline": "\u041D\u0435 \u0432 \u0441\u0435\u0442\u0438", "pill.direct": "\u041F\u0440\u044F\u043C\u043E\u0439 \u0430\u0434\u0440\u0435\u0441", "pill.relay_on": "\u0420\u0435\u0442\u0440\u0430\u043D\u0441\u043B\u044F\u0442\u043E\u0440 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D", "pill.relay_off": "\u0420\u0435\u0442\u0440\u0430\u043D\u0441\u043B\u044F\u0442\u043E\u0440 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D", "pill.cached": "\u041A\u043E\u043F\u0438\u0439 \u0432 \u043A\u044D\u0448\u0435: {n}", "net.title": "\u0421\u0435\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441", "net.online": "\u041A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u0432 \u0432 \u0441\u0435\u0442\u0438: {n}", "net.lending": "\u0421\u0434\u0430\u044E\u0442 \u0441\u0435\u0439\u0447\u0430\u0441: {n}", "net.cpu": "\u042F\u0434\u0435\u0440 CPU: {n}", "net.ram": "{n} GB RAM", "net.gpu": "GPU: {n}", "net.models": "AI-\u043C\u043E\u0434\u0435\u043B\u0435\u0439: {n}", "net.jobs": "\u0417\u0430\u0434\u0430\u0447 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F: {n}", "credits.title": "\u0411\u0430\u043B\u0430\u043D\u0441 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432", "credits.plan": "\u0422\u0430\u0440\u0438\u0444 {plan} \xB7 \u043C\u043E\u0436\u043D\u043E \u0443\u0439\u0442\u0438 \u0434\u043E {n}", "plan.free": "\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u0439", "plan.base": "Base", "plan.pro": "Pro", "buy.base": "Base \u20AC4.50", "buy.pro": "Pro \u20AC9.90", "buy.recharge": "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u20AC5", "buy.ok": "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043E\u043F\u043B\u0430\u0442\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "lend.title": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440", "lend.hint": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u0441\u043E \u0441\u043A\u0432\u043E\u0437\u043D\u044B\u043C \u0448\u0438\u0444\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0432 \u0438\u0437\u043E\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430\u0445, \u0431\u0435\u0437 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0432\u0430\u0448\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C. \u0412\u044B \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442\u0435 \u043A\u0440\u0435\u0434\u0438\u0442\u044B.", "lend.state.off": "\u0412\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u043E", "lend.state.waiting": "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435", "lend.state.working": "\u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442", "lend.reason.lending_off": "\u0421\u0434\u0430\u0447\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0430", "lend.reason.paused": "\u041D\u0430 \u043F\u0430\u0443\u0437\u0435", "lend.reason.outside_hours": "\u0412\u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0447\u0430\u0441\u043E\u0432", "lend.reason.on_battery": "\u0420\u0430\u0431\u043E\u0442\u0430 \u043E\u0442 \u0431\u0430\u0442\u0430\u0440\u0435\u0438", "lend.reason.computer_in_use": "\u0412\u044B \u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435\u0441\u044C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u043C", "lend.reason.no_jobs": "\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438", "lend.running": "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0437\u0430\u0434\u0430\u0447\u0430 {kind} \u0441 {time}", "lend.detail": "{reason} \xB7 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u0437\u0430\u0434\u0430\u0447: {n} \xB7 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 {cpus} CPU, {ram} GB", "lend.detail.sandbox": ", \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430 {name}", "lend.detail.models": ", \u043C\u043E\u0434\u0435\u043B\u0435\u0439: {n}", "lend.pause": "\u041F\u0430\u0443\u0437\u0430", "lend.resume": "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C", "lend.paused_ok": "\u0421\u0434\u0430\u0447\u0430 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430. \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0437\u0430\u0434\u0430\u0447\u0430 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u0434\u0440\u0443\u0433\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443.", "lend.resumed_ok": "\u0421\u0434\u0430\u0447\u0430 \u0432\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430.", "setup.title": "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430", "setup.hint": "\u0427\u0442\u043E \u043D\u0443\u0436\u043D\u043E \u044D\u0442\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0440\u0435\u0441\u0443\u0440\u0441\u044B. \u0414\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u0442\u0441\u044F \u0441 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0430\u0439\u0442\u043E\u0432; \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435.", "setup.checking": "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430\u2026", "setup.docker.help": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043B\u044E\u0434\u0435\u0439 \u0432 \u0438\u0437\u043E\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0430\u0445. \u041D\u0443\u0436\u0435\u043D \u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0411\u0435\u0441\u043F\u043B\u0430\u0442\u0435\u043D \u0434\u043B\u044F \u043B\u0438\u0447\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u043C\u0430\u043B\u043E\u0433\u043E \u0431\u0438\u0437\u043D\u0435\u0441\u0430.", "setup.docker.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C Docker", "setup.docker.start": "\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Docker", "setup.apple.title": "Apple Container (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)", "setup.apple.help": "\u0411\u043E\u043B\u0435\u0435 \u043D\u0430\u0434\u0451\u0436\u043D\u0430\u044F \u0438\u0437\u043E\u043B\u044F\u0446\u0438\u044F: \u043A\u0430\u0436\u0434\u0430\u044F \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0439 \u043C\u0430\u0448\u0438\u043D\u0435. \u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E; \u0434\u043B\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 Docker.", "setup.apple.get": "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C Apple Container", "setup.ollama.help": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 AI-\u043C\u043E\u0434\u0435\u043B\u0438 (Qwen, Llama, Mistral\u2026). \u041D\u0443\u0436\u0435\u043D, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C AI-\u043C\u043E\u0434\u0435\u043B\u0438.", "setup.ollama.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C Ollama", "setup.ollama.start": "\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Ollama", "setup.model.title": "AI-\u043C\u043E\u0434\u0435\u043B\u044C", "setup.model.help": "\u041C\u043E\u0434\u0435\u043B\u044C, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043C. \u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F {ram} GB \u043F\u0430\u043C\u044F\u0442\u0438: {model}.", "setup.model.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C {model} ({size} GB)", "setup.model.none": "\u043F\u043E\u043A\u0430 \u043D\u0435\u0442", "setup.model.need_ollama": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Ollama", "setup.nvidia.title": "\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044B GPU NVIDIA (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)", "setup.nvidia.help": "\u0422\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0432 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0435\u0441\u0442\u044C \u0432\u0438\u0434\u0435\u043E\u043A\u0430\u0440\u0442\u0430 NVIDIA, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0441\u0434\u0430\u0432\u0430\u0442\u044C.", "setup.nvidia.get": "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044B NVIDIA", "setup.status.running": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0438 \u0437\u0430\u043F\u0443\u0449\u0435\u043D", "setup.status.installed": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D", "setup.status.stopped": "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D, \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D", "setup.status.missing": "\u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D", "setup.status.found": "\u043D\u0430\u0439\u0434\u0435\u043D", "setup.status.not_found": "\u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D", "setup.terminal": "\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0435:", "setup.done": "\u0413\u043E\u0442\u043E\u0432\u043E", "setup.opened": "\u0413\u043E\u0442\u043E\u0432\u043E: \u043E\u0442\u043A\u0440\u044B\u0442 {file}, \u0441\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F\u043C", "setup.recheck": "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u043D\u043E\u0432\u0430", "setup.ok.download": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043D\u0430\u0447\u0430\u043B\u0430\u0441\u044C. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A \u043E\u0442\u043A\u0440\u043E\u0435\u0442\u0441\u044F \u0441\u0430\u043C \u043F\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438: \u0441\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0435\u0433\u043E \u0448\u0430\u0433\u0430\u043C.", "setup.ok.start": "\u0417\u0430\u043F\u0443\u0441\u043A\u2026 \u044D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B. \u0421\u043F\u0438\u0441\u043E\u043A \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u0441\u0430\u043C.", "setup.ok.pull": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043C\u043E\u0434\u0435\u043B\u0438 \u043D\u0430\u0447\u0430\u043B\u0430\u0441\u044C. \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u043F\u043E\u043A\u0430\u0437\u0430\u043D \u0432\u044B\u0448\u0435.", "setup.ok.page": "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "setup.ok.recheck": "\u041F\u0440\u043E\u0432\u0435\u0440\u0435\u043D\u043E \u0441\u043D\u043E\u0432\u0430.", "rules.title": "\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u0434\u0430\u0447\u0438", "rules.enabled": "\u0421\u0434\u0430\u0447\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430", "rules.enabled.help": "\u0413\u043B\u0430\u0432\u043D\u044B\u0439 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C. \u041A\u043E\u0433\u0434\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D, \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u0435\u0442\u044C\u044E \u0432\u044B \u043F\u043E-\u043F\u0440\u0435\u0436\u043D\u0435\u043C\u0443 \u043C\u043E\u0436\u0435\u0442\u0435.", "rules.cpus": "\u041C\u0430\u043A\u0441. CPU", "rules.cpus.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u044F\u0434\u0435\u0440 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u0430 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0434\u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: \u043D\u0430 8-\u044F\u0434\u0435\u0440\u043D\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 2 \u043E\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043C 6 \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0445 \u044F\u0434\u0435\u0440.", "rules.memory": "\u041C\u0430\u043A\u0441. \u043F\u0430\u043C\u044F\u0442\u044C (MB)", "rules.memory.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E RAM \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430, \u0432 \u043C\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430\u0445 (1024 MB = 1 GB). BitPull \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u044B \u043F\u0430\u043C\u044F\u0442\u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430.", "rules.gpu": "GPU", "rules.gpu.none": "\u041D\u0435\u0442", "rules.gpu.consumer": "\u041F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F (8\u201312 GB)", "rules.gpu.high": "\u0422\u043E\u043F\u043E\u0432\u0430\u044F (16\u201324 GB)", "rules.gpu.datacenter": "\u0414\u043B\u044F \u0434\u0430\u0442\u0430-\u0446\u0435\u043D\u0442\u0440\u043E\u0432 (40 GB+)", "rules.gpu.help": "\u0412\u0438\u0434\u0435\u043E\u043A\u0430\u0440\u0442\u0430, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0441\u0434\u0430\u0451\u0442\u0435, \u043F\u043E \u043E\u0431\u044A\u0451\u043C\u0443 \u0432\u0438\u0434\u0435\u043E\u043F\u0430\u043C\u044F\u0442\u0438. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \xAB\u041D\u0435\u0442\xBB, \u0435\u0441\u043B\u0438 \u0434\u0438\u0441\u043A\u0440\u0435\u0442\u043D\u043E\u0439 GPU \u043D\u0435\u0442 \u0438\u043B\u0438 \u0432\u044B \u043D\u0435 \u0445\u043E\u0442\u0438\u0442\u0435 \u0435\u0451 \u0441\u0434\u0430\u0432\u0430\u0442\u044C. GPU \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0432\u0441\u0435\u0433\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "rules.containers": "\u041A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", "rules.containers.help": "\u0421\u0431\u043E\u0440\u043A\u0438, \u0442\u0435\u0441\u0442\u044B \u0438 \u0441\u043A\u0440\u0438\u043F\u0442\u044B \u0434\u0440\u0443\u0433\u0438\u0445 \u043B\u044E\u0434\u0435\u0439 \u0432 \u043F\u0435\u0441\u043E\u0447\u043D\u0438\u0446\u0435 \u0431\u0435\u0437 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0430 \u0438 \u0431\u0435\u0437 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0432\u0430\u0448\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C. \u041D\u0443\u0436\u0435\u043D Docker (\u0438\u043B\u0438 Apple Container): \u0441\u043C. \xAB\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430\xBB.", "rules.models": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 (Ollama)", "rules.models.help": "\u041E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043D\u0430 AI-\u0437\u0430\u043F\u0440\u043E\u0441\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C\u0438 \u043C\u043E\u0434\u0435\u043B\u044F\u043C\u0438, \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u043C\u0438 \u0432 Ollama \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u041D\u0443\u0436\u043D\u044B Ollama \u0438 \u0445\u043E\u0442\u044F \u0431\u044B \u043E\u0434\u043D\u0430 \u043C\u043E\u0434\u0435\u043B\u044C.", "rules.idle": "\u0422\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \u043C\u0438\u043D\u0443\u0442 \u043F\u0440\u043E\u0441\u0442\u043E\u044F", "rules.idle.help": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u0432\u044B \u043D\u0435 \u0442\u0440\u043E\u0433\u0430\u043B\u0438 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0438 \u043C\u044B\u0448\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u043C\u0438\u043D\u0443\u0442. 0 = \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0434\u0430\u0436\u0435 \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u0440\u0430\u0431\u043E\u0442\u044B.", "rules.ac": "\u0422\u043E\u043B\u044C\u043A\u043E \u043E\u0442 \u0441\u0435\u0442\u0438", "rules.ac.help": "\u041D\u0430 \u043D\u043E\u0443\u0442\u0431\u0443\u043A\u0435 \u043F\u0440\u0435\u043A\u0440\u0430\u0449\u0430\u0442\u044C \u0441\u0434\u0430\u0447\u0443 \u043F\u0440\u0438 \u0440\u0430\u0431\u043E\u0442\u0435 \u043E\u0442 \u0431\u0430\u0442\u0430\u0440\u0435\u0438, \u0447\u0442\u043E\u0431\u044B \u0435\u0451 \u043D\u0435 \u0440\u0430\u0437\u0440\u044F\u0436\u0430\u0442\u044C.", "rules.hours": "\u0422\u043E\u043B\u044C\u043A\u043E \u0441 / \u0434\u043E \u0447\u0430\u0441\u0430 (\u043F\u0443\u0441\u0442\u043E = \u0432\u0441\u0435\u0433\u0434\u0430)", "rules.hours.help": "\u0421\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u044D\u0442\u043E\u043C \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043A\u0435, \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435. \u041F\u0440\u0438\u043C\u0435\u0440: 22 \u0438 8 = \u0441 22:00 \u0434\u043E 8:00. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043E\u0431\u0430 \u043F\u043E\u043B\u044F \u043F\u0443\u0441\u0442\u044B\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.", "rules.cache": "\u041A\u043E\u043F\u0438\u0438 \u0447\u0443\u0436\u0438\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432 \u0432 \u043A\u044D\u0448\u0435", "rules.cache.help": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0431\u043B\u0438\u0447\u043D\u044B\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0445\u0440\u0430\u043D\u0438\u0442 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438 \u043E\u0441\u0442\u0430\u0432\u0430\u043B\u0438\u0441\u044C \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B, \u043A\u043E\u0433\u0434\u0430 \u0430\u0432\u0442\u043E\u0440\u044B \u043D\u0435 \u0432 \u0441\u0435\u0442\u0438. \u0417\u0430\u043D\u0438\u043C\u0430\u0435\u0442 \u043D\u0435\u043C\u043D\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430 \u043D\u0430 \u0434\u0438\u0441\u043A\u0435 \u0438 \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442 \u043A\u0440\u0435\u0434\u0438\u0442\u044B. 0 = \u043D\u0438 \u043E\u0434\u043D\u043E\u0433\u043E.", "rules.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C", "rules.saved": "\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B. \u041E\u043D\u0438 \u0432\u0441\u0442\u0443\u043F\u044F\u0442 \u0432 \u0441\u0438\u043B\u0443 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434.", "rules.hours_both": "\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043E\u0431\u0430 \u0447\u0430\u0441\u0430 \u0438\u043B\u0438 \u043E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043E\u0431\u0430 \u043F\u0443\u0441\u0442\u044B\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0430\u0432\u0430\u0442\u044C \u0432 \u043B\u044E\u0431\u043E\u0435 \u0432\u0440\u0435\u043C\u044F.", "folders.title": "\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0435 \u043F\u0430\u043F\u043A\u0438", "folders.hint": "BitPull \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u0438 \u043F\u0430\u043F\u043A\u0438. \u0414\u043B\u044F \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438 \u043F\u0430\u043F\u043A\u0435 \u043D\u0443\u0436\u0435\u043D \u043F\u043E\u043B\u043D\u044B\u0439 bitpull.json.", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C", "folders.none": "\u041D\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0445 \u043F\u0430\u043F\u043E\u043A.", "folders.draft": "\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A", "folders.publish": "\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C", "folders.remove": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C", "folders.need_path": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u043E\u043B\u043D\u044B\u0439 \u043F\u0443\u0442\u044C \u043A \u043F\u0430\u043F\u043A\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 /Users/you/projects/my-library.", "folders.added": "\u041F\u0430\u043F\u043A\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0430.", "folders.removed": "\u041F\u0430\u043F\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0430. BitPull \u0431\u043E\u043B\u044C\u0448\u0435 \u0435\u0451 \u043D\u0435 \u0447\u0438\u0442\u0430\u0435\u0442.", "folders.drafted": "\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0433\u043E\u0442\u043E\u0432: \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0444\u0430\u0439\u043B\u043E\u0432: {n}. \u041F\u0443\u0441\u0442\u044C \u0432\u0430\u0448 AI \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438 \u0430\u043D\u043D\u043E\u0442\u0430\u0446\u0438\u0438 (\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 prepare_publish), \u0437\u0430\u0442\u0435\u043C \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C\xBB.", "folders.published": "\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043E \xAB{name}\xBB, \u0444\u0430\u0439\u043B\u043E\u0432: {n}.", "folders.secrets_in": "\u041D\u0430\u0439\u0434\u0435\u043D\u043E \u0432: {where}", "folders.line": "{file}, \u0441\u0442\u0440\u043E\u043A\u0430 {line}", "repos.title": "\u0412\u0430\u0448\u0438 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0438", "repos.hint": "\u041E\u0431\u043D\u043E\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0441\u0430\u043C\u0438, \u043A\u043E\u0433\u0434\u0430 \u0432\u044B \u043C\u0435\u043D\u044F\u0435\u0442\u0435 \u0444\u0430\u0439\u043B\u044B (\u043A\u0430\u0436\u0434\u044B\u0435 5 \u043C\u0438\u043D\u0443\u0442).", "repos.none": "\u041D\u0435\u0442 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0435\u0432.", "repos.withdraw": "\u0421\u043D\u044F\u0442\u044C", "repos.withdrawn": "\u0420\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439 \u0441\u043D\u044F\u0442 \u0441 \u0441\u0435\u0442\u0438.", "ask.title": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u0432 \u0441\u0435\u0442\u0438", "ask.offers": "\u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442: {models}.", "ask.offers_none": "\u043D\u0435\u0442 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 Ollama, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0438\u0445)", "ask.placeholder": "\u0421\u043F\u0440\u043E\u0441\u0438\u0442\u0435 \u043E\u0442\u043A\u0440\u044B\u0442\u0443\u044E \u043C\u043E\u0434\u0435\u043B\u044C \u0432 \u0441\u0435\u0442\u0438\u2026", "ask.small": "\u041C\u0430\u043B\u0430\u044F", "ask.medium": "\u0421\u0440\u0435\u0434\u043D\u044F\u044F", "ask.large": "\u0411\u043E\u043B\u044C\u0448\u0430\u044F", "ask.button": "\u0421\u043F\u0440\u043E\u0441\u0438\u0442\u044C", "ask.empty": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u043E\u043F\u0440\u043E\u0441.", "ask.waiting": "\u0418\u0449\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0441 \u043C\u043E\u0434\u0435\u043B\u044C\u044E\u2026 \u044D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B.", "ask.credits": "\u041A\u0440\u0435\u0434\u0438\u0442\u043E\u0432: {n}", "tools.title": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B", "tools.mcp": "\u0414\u043B\u044F Claude Code \u0438 MCP-\u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0435:", "tools.openai": "\u0414\u043B\u044F \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432, \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B\u0445 \u0441 OpenAI: \u0431\u0430\u0437\u043E\u0432\u044B\u0439 URL", "tools.key": "\u041A\u043B\u044E\u0447 API", "tools.show": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C", "jobs.title": "\u0412\u0430\u0448\u0438 \u043D\u0435\u0434\u0430\u0432\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", "jobs.none": "\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447.", "jobs.model": "\u041C\u043E\u0434\u0435\u043B\u044C", "jobs.container": "\u041A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440", "jobs.status.queued": "\u0412 \u043E\u0447\u0435\u0440\u0435\u0434\u0438", "jobs.status.running": "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F", "jobs.status.done": "\u0413\u043E\u0442\u043E\u0432\u043E", "jobs.status.failed": "\u041E\u0448\u0438\u0431\u043A\u0430", "jobs.status.canceled": "\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E", "jobs.cost": "\u041A\u0440\u0435\u0434\u0438\u0442\u043E\u0432: {n}", working: "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F\u2026", "err.agent_down": "BitPull \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u041E\u043D \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F \u0441\u0430\u043C \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 30 \u0441\u0435\u043A\u0443\u043D\u0434: \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0447\u0443\u0442\u044C \u043F\u043E\u0437\u0436\u0435.", "err.server": "\u041D\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044F \u0441\u0432\u044F\u0437\u0430\u0442\u044C\u0441\u044F \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u043C BitPull. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.", "err.session": "\u0421\u0435\u0430\u043D\u0441 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u0441\u0442\u0451\u043A. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0435\u0451 \u0441\u043D\u043E\u0432\u0430 \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F BitPull.", "err.billing": "\u041F\u043B\u0430\u0442\u0435\u0436\u0438 \u043F\u043E\u043A\u0430 \u043D\u0435 \u0430\u043A\u0442\u0438\u0432\u043D\u044B.", "err.no_folder": "\u0422\u0430\u043A\u043E\u0439 \u043F\u0430\u043F\u043A\u0438 \u043D\u0435\u0442 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0443\u0442\u044C.", "err.not_folder": "\u042D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C \u0432\u0435\u0434\u0451\u0442 \u043A \u0444\u0430\u0439\u043B\u0443, \u0430 \u043D\u0435 \u043A \u043F\u0430\u043F\u043A\u0435.", "err.credits": "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "err.device": "\u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0435\u0449\u0451 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D. \u041D\u0435 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 BitPull \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u043C\u0438\u043D\u0443\u0442\u0443.", "err.no_model": "\u0421\u0435\u0439\u0447\u0430\u0441 \u043D\u0438 \u043E\u0434\u0438\u043D \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438 \u043D\u0435 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 AI-\u043C\u043E\u0434\u0435\u043B\u044C. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435.", "err.invalid": "\u041D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u043B\u044F \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.", "tip.lang": "\u042F\u0437\u044B\u043A \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u0412\u0430\u0448 \u0432\u044B\u0431\u043E\u0440 \u0437\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "tip.buy.base": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0442\u0430\u0440\u0438\u0444\u0430 Base: \u20AC4.50 \u0432 \u043C\u0435\u0441\u044F\u0446 \u0438 80 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u043A\u0430\u0436\u0434\u044B\u0439 \u043C\u0435\u0441\u044F\u0446. \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u043E\u0436\u043D\u043E \u0432 \u043B\u044E\u0431\u043E\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.", "tip.buy.pro": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0442\u0430\u0440\u0438\u0444\u0430 Pro: \u20AC9.90 \u0432 \u043C\u0435\u0441\u044F\u0446, 200 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u043A\u0430\u0436\u0434\u044B\u0439 \u043C\u0435\u0441\u044F\u0446, \u043D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u0438 \u0432\u0441\u0435 GPU. \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u043E\u0436\u043D\u043E \u0432 \u043B\u044E\u0431\u043E\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.", "tip.buy.recharge": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u043E\u043F\u043B\u0430\u0442\u044B, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0437\u043E\u0432\u043E \u043A\u0443\u043F\u0438\u0442\u044C 80 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u0437\u0430 \u20AC5. \u041E\u043D\u0438 \u043D\u0435 \u0441\u0433\u043E\u0440\u0430\u044E\u0442.", "tip.pause": "\u0421\u0440\u0430\u0437\u0443 \u043F\u0440\u0435\u043A\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0434\u0430\u0447\u0443. \u0417\u0430\u0434\u0430\u0447\u0430, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u044D\u0442\u043E\u0442 \u043C\u043E\u043C\u0435\u043D\u0442, \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u043E\u043C\u0443 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.", "tip.resume": "\u0421\u043D\u043E\u0432\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442 \u0441\u0434\u0430\u0447\u0443 \u043F\u043E \u0432\u0430\u0448\u0438\u043C \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u0441\u0434\u0430\u0447\u0438.", "tip.rules.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0441\u0434\u0430\u0447\u0438 \u0432\u044B\u0448\u0435. \u041E\u043D\u0438 \u0432\u0441\u0442\u0443\u043F\u0430\u044E\u0442 \u0432 \u0441\u0438\u043B\u0443 \u0437\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434; \u043F\u043E\u043A\u0430 \u0432\u044B \u043D\u0435 \u043D\u0430\u0436\u043C\u0451\u0442\u0435 \u044D\u0442\u0443 \u043A\u043D\u043E\u043F\u043A\u0443, \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F.", "tip.folder.add": "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 BitPull \u0447\u0438\u0442\u0430\u0442\u044C \u043F\u0430\u043F\u043A\u0443, \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u0443\u044E \u0441\u043B\u0435\u0432\u0430. \u0424\u0430\u0439\u043B\u044B \u0432\u043D\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043D\u043D\u044B\u0445 \u043F\u0430\u043F\u043E\u043A \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u044E\u0442\u0441\u044F.", "tip.folder.draft": "\u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u0432 \u043F\u0430\u043F\u043A\u0435 bitpull.json: \u0441\u043F\u0438\u0441\u043E\u043A \u0435\u0451 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441 \u043F\u0443\u0441\u0442\u044B\u043C\u0438 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442 \u0432\u0430\u0448 AI. \u041F\u043E\u043A\u0430 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0435\u0442\u0441\u044F.", "tip.folder.publish": "\u041F\u0443\u0431\u043B\u0438\u043A\u0443\u0435\u0442 \u044D\u0442\u0443 \u043F\u0430\u043F\u043A\u0443 \u0432 \u0441\u0435\u0442\u0438 \u043A\u0430\u043A \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439, \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u0439 \u044D\u0442\u0438\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043E\u043C. \u041F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u044F \u0431\u043B\u043E\u043A\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0435\u0441\u043B\u0438 \u0432 \u0444\u0430\u0439\u043B\u0430\u0445 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u043A\u043B\u044E\u0447\u0438 \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u0438.", "tip.folder.remove": "BitPull \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0447\u0438\u0442\u0430\u0442\u044C \u044D\u0442\u0443 \u043F\u0430\u043F\u043A\u0443. \u0423\u0436\u0435 \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 \u043D\u0435\u0451 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0438 \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0435\u0442\u0438, \u043F\u043E\u043A\u0430 \u0432\u044B \u0438\u0445 \u043D\u0435 \u043E\u0442\u0437\u043E\u0432\u0451\u0442\u0435.", "tip.repo.withdraw": "\u0423\u0434\u0430\u043B\u044F\u0435\u0442 \u044D\u0442\u043E\u0442 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439 \u0438\u0437 \u0441\u0435\u0442\u0438. \u0414\u0440\u0443\u0433\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043C\u043E\u0433\u0443\u0442 \u0435\u0433\u043E \u043D\u0430\u0439\u0442\u0438 \u0438\u043B\u0438 \u0441\u043A\u0430\u0447\u0430\u0442\u044C. \u0412\u0430\u0448\u0438 \u0444\u0430\u0439\u043B\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "tip.ask": "\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u0430\u0448 \u0432\u043E\u043F\u0440\u043E\u0441 \u0441\u043E \u0441\u043A\u0432\u043E\u0437\u043D\u044B\u043C \u0448\u0438\u0444\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0443 \u0432 \u0441\u0435\u0442\u0438, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043E\u0442\u043A\u0440\u044B\u0442\u0430\u044F AI-\u043C\u043E\u0434\u0435\u043B\u044C. \u0421\u0442\u043E\u0438\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "tip.tier": "\u0420\u0430\u0437\u043C\u0435\u0440 \u043C\u043E\u0434\u0435\u043B\u0438: \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0430\u044F \u2014 \u0431\u044B\u0441\u0442\u0440\u0430\u044F \u0438 \u0434\u0435\u0448\u0451\u0432\u0430\u044F, \u0431\u043E\u043B\u044C\u0448\u0430\u044F \u2014 \u0443\u043C\u043D\u0435\u0435 \u0438 \u0441\u0442\u043E\u0438\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432.", "tip.show_key": "\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043A\u043B\u044E\u0447, \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E AI-\u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u043E\u0431\u0449\u0430\u044E\u0442\u0441\u044F \u0441 BitPull. \u041D\u0438\u043A\u043E\u043C\u0443 \u0435\u0433\u043E \u043D\u0435 \u0441\u043E\u043E\u0431\u0449\u0430\u0439\u0442\u0435.", "tip.setup.download": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A {name} \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430 \u0432 \u043F\u0430\u043F\u043A\u0443 \xAB\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0438\xBB \u0438 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0435\u0433\u043E. \u0421\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0435\u0433\u043E \u0448\u0430\u0433\u0430\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443.", "tip.setup.start": "\u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 {name}: \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435, \u043D\u043E \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430.", "tip.setup.pull": "\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u0435\u0442 AI-\u043C\u043E\u0434\u0435\u043B\u044C {model} ({size} GB) \u0432 Ollama, \u0447\u0442\u043E\u0431\u044B \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0433 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0435\u0451 \u0434\u0440\u0443\u0433\u0438\u043C.", "tip.setup.open": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 {name} \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "tip.setup.recheck": "\u0421\u043D\u043E\u0432\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0438 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.", "update.title": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F", "update.current": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F: {v}", "update.latest": "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0432\u0435\u0440\u0441\u0438\u044F: {v}", "update.button": "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F", "update.install": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0435\u0440\u0441\u0438\u044E {v} \u0441\u0435\u0439\u0447\u0430\u0441", "update.available": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u044F {v}.", "update.not_in_app": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 BitPull. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u044D\u0442\u0443 \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C\u0441\u044F.", "update.state.requested": "\u041F\u0440\u043E\u0441\u0438\u043C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C\u2026", "update.state.checking": "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0439\u2026", "update.state.up_to_date": "\u0423 \u0432\u0430\u0441 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0432\u0435\u0440\u0441\u0438\u044F.", "update.state.installing": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 {v}\u2026 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F \u0441\u0430\u043C\u043E.", "update.state.restarting": "\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 {v}\u2026", "update.state.error": "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C: {msg}. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435.", "tip.update": "\u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0435\u0441\u0442\u044C \u043B\u0438 \u0431\u043E\u043B\u0435\u0435 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F BitPull. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0451, \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u044C, \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435. \u0421\u0434\u0430\u0447\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434.", "tools.hint": "\u041F\u043E\u0437\u0432\u043E\u043B\u044C\u0442\u0435 \u0432\u0430\u0448\u0435\u043C\u0443 AI-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0443 \u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u043E\u0431\u0449\u0435\u043C \u043A\u043E\u0434\u0435 \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u044B \u0441\u0435\u0442\u0438. \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442:", "tools.connect": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C", "tools.connected": "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E", "tools.copy": "\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C", "tools.copied": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E.", "tools.installed": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E", "tools.not_found": "\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435", "tools.done": "\u0413\u043E\u0442\u043E\u0432\u043E. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 {name}, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F BitPull.", "tools.manual": "\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u0440\u0443\u0447\u043D\u0443\u044E:", "tools.config_invalid": "\u0424\u0430\u0439\u043B \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A {name} \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u043C JSON, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 BitPull \u043D\u0435 \u0441\u0442\u0430\u043B \u0435\u0433\u043E \u043C\u0435\u043D\u044F\u0442\u044C. \u0418\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u0444\u0430\u0439\u043B \u0438\u043B\u0438 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 BitPull \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \xAB\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C\xBB.", "tip.tools.connect": "\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 BitPull \u0432 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 {name}. \u0420\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F \u043F\u0440\u0435\u0436\u043D\u0438\u0445 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442\u0441\u044F \u0440\u044F\u0434\u043E\u043C \u0441 \u043D\u0438\u043C\u0438.", "tip.tools.copy": "\u041A\u043E\u043F\u0438\u0440\u0443\u0435\u0442 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0438\u043B\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430, \u0447\u0442\u043E\u0431\u044B \u0432\u044B \u0441\u0430\u043C\u0438 \u0434\u043E\u0431\u0430\u0432\u0438\u043B\u0438 BitPull \u0432 {name}.", "models.title": "\u041C\u043E\u0434\u0435\u043B\u0438 \u0418\u0418 \u0434\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430", "models.hint": "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u043B\u044E\u0431\u044B\u0445 \u0442\u0438\u043F\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043C\u043E\u0434\u0435\u043B\u0438, \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0445. \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0435 \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u044E\u0442\u0441\u044F \u0441\u0435\u0442\u0438, \u043F\u043E\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432.", "models.engine.title": "\u0414\u0432\u0438\u0436\u043E\u043A \u0434\u043B\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0435\u0447\u0438 \u0438 \u043C\u0443\u0437\u044B\u043A\u0438", "models.engine.help": "Lemonade (\u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u043A\u043E\u0434): \u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0438 \u0441\u0438\u043D\u0442\u0435\u0437 \u0440\u0435\u0447\u0438, \u043C\u0443\u0437\u044B\u043A\u0430, \u0440\u0430\u043D\u0436\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043D\u0443\u0442\u0440\u044C BitPull, \u0431\u0435\u0437 \u043F\u0440\u0430\u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430.", "models.engine.install": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u0432\u0438\u0436\u043E\u043A", "models.engine.repair": "\u041F\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u0432\u0438\u0436\u043E\u043A", "models.engine.unsupported": "\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 (\u043D\u0443\u0436\u0435\u043D Apple silicon \u0438\u043B\u0438 Windows/Linux x64)", "models.need_engine": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0434\u0432\u0438\u0436\u043E\u043A", "models.not_here": "\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435", "models.shared": "\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E \xB7 \u0432 \u043E\u0431\u0449\u0435\u043C \u0434\u043E\u0441\u0442\u0443\u043F\u0435", "models.download": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C ({size} \u0413\u0411)", "models.needs_ram": "\u041D\u0443\u0436\u043D\u043E \u043E\u043A\u043E\u043B\u043E {ram} \u0413\u0411 \u043F\u0430\u043C\u044F\u0442\u0438: \u0437\u0434\u0435\u0441\u044C \u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E", "models.recommended": "\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F", "models.license": "\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F", "models.ok.engine": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0434\u0432\u0438\u0436\u043A\u0430\u2026", "task.chat": "\u0422\u0435\u043A\u0441\u0442 \u0438 \u043A\u043E\u0434", "task.vision": "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u2192 \u0442\u0435\u043A\u0441\u0442", "task.ocr": "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B (OCR)", "task.translate": "\u041F\u0435\u0440\u0435\u0432\u043E\u0434", "task.embed": "\u042D\u043C\u0431\u0435\u0434\u0434\u0438\u043D\u0433\u0438 (\u043F\u043E\u0438\u0441\u043A)", "task.rerank": "\u0420\u0430\u043D\u0436\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435", "task.image": "\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439", "task.upscale": "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439", "task.stt": "\u0420\u0435\u0447\u044C \u2192 \u0442\u0435\u043A\u0441\u0442", "task.tts": "\u0422\u0435\u043A\u0441\u0442 \u2192 \u0440\u0435\u0447\u044C", "task.music": "\u041C\u0443\u0437\u044B\u043A\u0430", "limits.title": "\u0412\u0430\u0448\u0438 \u043B\u0438\u043C\u0438\u0442\u044B \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445", "limits.hint": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0431\u043E\u0442\u044B \u0418\u0418 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445. \u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u043F\u0443\u0441\u0442\u044B\u043C \u2014 \u0431\u0435\u0437 \u043B\u0438\u043C\u0438\u0442\u0430. \u041F\u0440\u0438 \u0434\u043E\u0441\u0442\u0438\u0436\u0435\u043D\u0438\u0438 \u043B\u0438\u043C\u0438\u0442\u0430 \u0432\u0430\u0448\u0438 \u043C\u043E\u0434\u0435\u043B\u0438 \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u044E\u0442 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E \u043F\u0435\u0440\u0438\u043E\u0434\u0430.", "limits.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043B\u0438\u043C\u0438\u0442\u044B", "limits.requests": "\u0417\u0430\u043F\u0440\u043E\u0441\u044B", "limits.tokens": "\u0422\u043E\u043A\u0435\u043D\u044B", "limits.used": "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043E", "limits.day": "\u0412 \u0434\u0435\u043D\u044C", "limits.week": "\u0412 \u043D\u0435\u0434\u0435\u043B\u044E", "limits.month": "\u0412 \u043C\u0435\u0441\u044F\u0446", "limits.none": "\u0431\u0435\u0437 \u043B\u0438\u043C\u0438\u0442\u0430", "limits.usage": "{requests} \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \xB7 {tokens} \u0442\u043E\u043A\u0435\u043D\u043E\u0432", "limits.saved": "\u041B\u0438\u043C\u0438\u0442\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B.", "tip.models.engine": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 BitPull \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0439 \u0434\u0432\u0438\u0436\u043E\u043A Lemonade, \u0447\u0442\u043E\u0431\u044B \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043C\u043E\u0433 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u0440\u0435\u0447\u0438 \u0438 \u043C\u0443\u0437\u044B\u043A\u0438.", "tip.models.download": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 {model} ({size} \u0413\u0411) \u043D\u0430 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u0435\u0433\u043E \u0434\u0440\u0443\u0433\u0438\u043C. \u041F\u043E\u0437\u0436\u0435 \u0435\u0451 \u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C.", "tip.limits.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u0434\u043D\u0435\u0432\u043D\u044B\u0435, \u043D\u0435\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u0438 \u043C\u0435\u0441\u044F\u0447\u043D\u044B\u0435 \u043B\u0438\u043C\u0438\u0442\u044B \u0440\u0430\u0431\u043E\u0442\u044B \u0418\u0418 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u0438\u0445.", "lend.visible": "\u2713 \u0421\u0435\u0442\u044C \u0432\u0438\u0434\u0438\u0442 \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440: {cpus} CPU, {ram} \u0413\u0411 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u0434\u0440\u0443\u0433\u0438\u043C.", "lend.invisible": "\u0421\u0435\u0442\u044C \u043F\u043E\u043A\u0430 \u043D\u0435 \u0432\u0438\u0434\u0438\u0442 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432: \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 \u0434\u043E \u043C\u0438\u043D\u0443\u0442\u044B; \u0435\u0441\u043B\u0438 \u0442\u0430\u043A \u0438 \u043E\u0441\u0442\u0430\u043D\u0435\u0442\u0441\u044F, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0443.", "lend.unusable": "\u26A0 \u042D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043F\u043E\u043A\u0430 \u043D\u0438\u043A\u0442\u043E \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C: \u0437\u0434\u0435\u0441\u044C \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0438 \u043E\u0434\u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. {reason}", "lend.unusable.docker": "Docker \u043D\u0435 \u043F\u0440\u043E\u0445\u043E\u0434\u0438\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u0438\u0437\u043E\u043B\u044F\u0446\u0438\u0438 BitPull: \u0441\u043C. \xAB\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\xBB.", "lend.unusable.off": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430\u0445 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u0438 \u043D\u0438 \u043E\u0434\u043D\u0430 \u043C\u043E\u0434\u0435\u043B\u044C \u0418\u0418 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430: \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \xAB\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430\u0445\xBB \u0438\u043B\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043C\u043E\u0434\u0435\u043B\u044C.", "lend.docker_login": "Docker \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0437\u044B: \u0435\u0433\u043E \u0432\u0445\u043E\u0434 \u0432 Docker Hub \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D. \u0412 Docker Desktop \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u0439 \u0430\u043A\u043A\u0430\u0443\u043D\u0442 (\u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u043F\u0440\u0430\u0432\u0430) \u2192 Sign out, \u0437\u0430\u0442\u0435\u043C \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0441\u043D\u043E\u0432\u0430 \u0438\u043B\u0438 \u043E\u0441\u0442\u0430\u0432\u0430\u0439\u0442\u0435\u0441\u044C \u0431\u0435\u0437 \u0432\u0445\u043E\u0434\u0430. \u041F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u043D\u043E\u0432\u0430\xBB.", "lend.off_hint": "\u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u043E: \u043E\u0442\u043C\u0435\u0442\u044C\u0442\u0435 \xAB{enabled}\xBB \u0432 \xAB{rules}\xBB \u043D\u0438\u0436\u0435 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB{save}\xBB. (\xAB\u041F\u0430\u0443\u0437\u0430 / \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C\xBB \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u0432\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u043E\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435.)", "lend.low_memory": "\u041F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F \u0432\u0441\u0435\u0433\u043E {mb} \u041C\u0411 \u043F\u0430\u043C\u044F\u0442\u0438: \u043F\u043E\u043C\u0435\u0441\u0442\u0438\u0442\u0441\u044F \u043C\u0430\u043B\u043E \u0437\u0430\u0434\u0430\u0447. \u0412 \xAB{rules}\xBB \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \xAB{memory}\xBB, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 4096 (= 4 \u0413\u0411), \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB{save}\xBB.", "rules.awake": "\u041D\u0435 \u0437\u0430\u0441\u044B\u043F\u0430\u0442\u044C \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F", "rules.awake.help": "\u041F\u043E\u043A\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043B\u044F \u043A\u043E\u0433\u043E-\u0442\u043E, \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u043D\u0435 \u0443\u0445\u043E\u0434\u0438\u0442 \u0432 \u0441\u043E\u043D (\u044D\u043A\u0440\u0430\u043D \u0432\u0441\u0451 \u0440\u0430\u0432\u043D\u043E \u043C\u043E\u0436\u0435\u0442 \u0433\u0430\u0441\u043D\u0443\u0442\u044C). \u041F\u043E\u0442\u043E\u043C \u0437\u0430\u0441\u044B\u043F\u0430\u0435\u0442 \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E. \u0417\u0430\u0434\u0430\u0447\u0438 \u043D\u0435 \u043F\u0440\u0435\u0440\u044B\u0432\u0430\u044E\u0442\u0441\u044F.", "ask.wait": "\u0416\u0434\u0430\u0442\u044C \u0434\u043E (\u043C\u0438\u043D\u0443\u0442)", "ask.wait.save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C", "ask.wait.saved": "\u041E\u0442\u0432\u0435\u0442\u044B \u0431\u0443\u0434\u0443\u0442 \u043E\u0436\u0438\u0434\u0430\u0442\u044C\u0441\u044F \u0434\u043E {n} \u043C\u0438\u043D\u0443\u0442.", "ask.wait.range": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E \u043C\u0438\u043D\u0443\u0442 \u043E\u0442 1 \u0434\u043E 120.", "tip.wait": "\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0436\u0434\u0430\u0442\u044C \u043E\u0442\u0432\u0435\u0442\u0430 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u0418\u0418 \u0441\u0435\u0442\u0438. \u041C\u043E\u0434\u0435\u043B\u0438 \u043D\u0430 \u0447\u0443\u0436\u043E\u043C \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u0435 \u043C\u043E\u0433\u0443\u0442 \u043E\u0442\u0432\u0435\u0447\u0430\u0442\u044C \u043C\u0438\u043D\u0443\u0442\u0430\u043C\u0438. \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u043E\u0436\u0435\u0442 \u0438 \u0432\u0430\u0448 \u0418\u0418." }, zh: { "lang.name": "\u4E2D\u6587", "app.title": "BitPull", "locked.text": "\u8BF7\u4ECE BitPull \u5E94\u7528\u6253\u5F00\u63A7\u5236\u9762\u677F\uFF1A\u5176\u94FE\u63A5\u5305\u542B\u8BBF\u95EE\u5BC6\u94A5\u3002", "pill.online": "\u5728\u7EBF", "pill.offline": "\u79BB\u7EBF", "pill.direct": "\u76F4\u8FDE\u5730\u5740", "pill.relay_on": "\u4E2D\u7EE7\u5DF2\u8FDE\u63A5", "pill.relay_off": "\u4E2D\u7EE7\u672A\u8FDE\u63A5", "pill.cached": "{n} \u4E2A\u7F13\u5B58\u526F\u672C", "net.title": "\u5B9E\u65F6\u7F51\u7EDC", "net.online": "{n} \u53F0\u7535\u8111\u5728\u7EBF", "net.lending": "{n} \u53F0\u6B63\u5728\u51FA\u501F", "net.cpu": "{n} \u4E2A CPU \u6838\u5FC3", "net.ram": "{n} GB RAM", "net.gpu": "{n} \u4E2A GPU", "net.models": "{n} \u4E2A AI \u6A21\u578B", "net.jobs": "{n} \u4E2A\u4EFB\u52A1\u8FD0\u884C\u4E2D", "credits.title": "\u79EF\u5206\u4F59\u989D", "credits.plan": "{plan} \u5957\u9910 \xB7 \u6700\u4F4E\u53EF\u81F3 {n}", "plan.free": "\u514D\u8D39", "plan.base": "\u57FA\u7840", "plan.pro": "\u4E13\u4E1A", "buy.base": "\u57FA\u7840\u7248 \u20AC4.50", "buy.pro": "\u4E13\u4E1A\u7248 \u20AC9.90", "buy.recharge": "\u5145\u503C \u20AC5", "buy.ok": "\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4ED8\u6B3E\u9875\u9762\u3002", "lend.title": "\u51FA\u501F\u8FD9\u53F0\u7535\u8111", "lend.hint": "\u4EFB\u52A1\u5728\u9694\u79BB\u6C99\u7BB1\u4E2D\u7AEF\u5230\u7AEF\u52A0\u5BC6\u8FD0\u884C\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u4F60\u7684\u6587\u4EF6\u3002\u4F60\u53EF\u4EE5\u8D5A\u53D6\u79EF\u5206\u3002", "lend.state.off": "\u5DF2\u5173\u95ED", "lend.state.waiting": "\u7B49\u5F85\u4E2D", "lend.state.working": "\u5DE5\u4F5C\u4E2D", "lend.reason.lending_off": "\u51FA\u501F\u5DF2\u5173\u95ED", "lend.reason.paused": "\u5DF2\u6682\u505C", "lend.reason.outside_hours": "\u4E0D\u5728\u4F60\u8BBE\u5B9A\u7684\u65F6\u6BB5\u5185", "lend.reason.on_battery": "\u6B63\u5728\u4F7F\u7528\u7535\u6C60", "lend.reason.computer_in_use": "\u4F60\u6B63\u5728\u4F7F\u7528\u7535\u8111", "lend.reason.no_jobs": "\u961F\u5217\u4E2D\u6CA1\u6709\u4EFB\u52A1", "lend.running": "\u81EA {time} \u8D77\u8FD0\u884C {kind} \u4EFB\u52A1", "lend.detail": "{reason} \xB7 \u5DF2\u5B8C\u6210 {n} \u4E2A\u4EFB\u52A1 \xB7 \u63D0\u4F9B {cpus} \u4E2A CPU\u3001{ram} GB", "lend.detail.sandbox": "\uFF0C\u6C99\u7BB1 {name}", "lend.detail.models": "\uFF0C{n} \u4E2A\u6A21\u578B", "lend.pause": "\u6682\u505C", "lend.resume": "\u6062\u590D", "lend.paused_ok": "\u51FA\u501F\u5DF2\u6682\u505C\u3002\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u5DF2\u8F6C\u4EA4\u7ED9\u53E6\u4E00\u53F0\u7535\u8111\u3002", "lend.resumed_ok": "\u51FA\u501F\u5DF2\u6062\u590D\u3002", "setup.title": "\u8BBE\u7F6E\u8FD9\u53F0\u7535\u8111", "setup.hint": "\u8FD9\u53F0\u7535\u8111\u51FA\u501F\u6240\u9700\u7684\u7EC4\u4EF6\u3002\u4F7F\u7528\u7F51\u7EDC\u5219\u65E0\u9700\u5176\u4ED6\u4EFB\u4F55\u4E1C\u897F\u3002\u5B89\u88C5\u7A0B\u5E8F\u6765\u81EA\u5B98\u65B9\u7F51\u7AD9\uFF0C\u7CFB\u7EDF\u4F1A\u8BF7\u4F60\u786E\u8BA4\u3002", "setup.checking": "\u68C0\u67E5\u4E2D\u2026", "setup.docker.help": "\u5728\u9694\u79BB\u6C99\u7BB1\u4E2D\u8FD0\u884C\u4ED6\u4EBA\u7684\u4EFB\u52A1\u3002\u5BB9\u5668\u4EFB\u52A1\u9700\u8981\u5B83\u3002\u4E2A\u4EBA\u548C\u5C0F\u578B\u4F01\u4E1A\u53EF\u514D\u8D39\u4F7F\u7528\u3002", "setup.docker.download": "\u4E0B\u8F7D Docker", "setup.docker.start": "\u542F\u52A8 Docker", "setup.apple.title": "Apple Container\uFF08\u53EF\u9009\uFF09", "setup.apple.help": "\u66F4\u5F3A\u7684\u9694\u79BB\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u8FD0\u884C\u5728\u72EC\u7ACB\u7684\u865A\u62DF\u673A\u4E2D\u3002\u53EF\u9009\uFF1B\u8D77\u6B65\u7528 Docker \u5C31\u591F\u4E86\u3002", "setup.apple.get": "\u83B7\u53D6 Apple Container", "setup.ollama.help": "\u8FD0\u884C\u5F00\u653E AI \u6A21\u578B\uFF08Qwen\u3001Llama\u3001Mistral\u2026\uFF09\u3002\u51FA\u501F AI \u6A21\u578B\u9700\u8981\u5B83\u3002", "setup.ollama.download": "\u4E0B\u8F7D Ollama", "setup.ollama.start": "\u542F\u52A8 Ollama", "setup.model.title": "AI \u6A21\u578B", "setup.model.help": "\u8FD9\u53F0\u7535\u8111\u5411\u4ED6\u4EBA\u63D0\u4F9B\u7684\u6A21\u578B\u3002\u5BF9\u4E8E {ram} GB \u5185\u5B58\uFF0C\u63A8\u8350\uFF1A{model}\u3002", "setup.model.download": "\u4E0B\u8F7D {model}\uFF08{size} GB\uFF09", "setup.model.none": "\u6682\u65E0", "setup.model.need_ollama": "\u8BF7\u5148\u5B89\u88C5\u5E76\u542F\u52A8 Ollama", "setup.nvidia.title": "NVIDIA GPU \u9A71\u52A8\uFF08\u53EF\u9009\uFF09", "setup.nvidia.help": "\u4EC5\u5F53\u8FD9\u53F0\u7535\u8111\u6709\u4F60\u60F3\u51FA\u501F\u7684 NVIDIA \u663E\u5361\u65F6\u9700\u8981\u3002", "setup.nvidia.get": "\u83B7\u53D6 NVIDIA \u9A71\u52A8", "setup.status.running": "\u5DF2\u5B89\u88C5\u5E76\u8FD0\u884C", "setup.status.installed": "\u5DF2\u5B89\u88C5", "setup.status.stopped": "\u5DF2\u5B89\u88C5\uFF0C\u672A\u8FD0\u884C", "setup.status.missing": "\u672A\u5B89\u88C5", "setup.status.found": "\u5DF2\u627E\u5230", "setup.status.not_found": "\u672A\u627E\u5230", "setup.terminal": "\u5728\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF1A", "setup.done": "\u5B8C\u6210", "setup.opened": "\u5B8C\u6210\uFF1A\u5DF2\u6253\u5F00 {file}\uFF0C\u8BF7\u6309\u6B65\u9AA4\u64CD\u4F5C", "setup.recheck": "\u91CD\u65B0\u68C0\u67E5", "setup.ok.download": "\u4E0B\u8F7D\u5DF2\u5F00\u59CB\u3002\u5B8C\u6210\u540E\u5B89\u88C5\u7A0B\u5E8F\u4F1A\u81EA\u52A8\u6253\u5F00\uFF1A\u8BF7\u6309\u5176\u6B65\u9AA4\u64CD\u4F5C\u3002", "setup.ok.start": "\u6B63\u5728\u542F\u52A8\u2026\u6700\u591A\u53EF\u80FD\u9700\u8981\u4E00\u5206\u949F\u3002\u6B64\u5217\u8868\u4F1A\u81EA\u52A8\u66F4\u65B0\u3002", "setup.ok.pull": "\u6A21\u578B\u4E0B\u8F7D\u5DF2\u5F00\u59CB\u3002\u8FDB\u5EA6\u663E\u793A\u5728\u4E0A\u65B9\u3002", "setup.ok.page": "\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u9875\u9762\u3002", "setup.ok.recheck": "\u5DF2\u91CD\u65B0\u68C0\u67E5\u3002", "rules.title": "\u51FA\u501F\u89C4\u5219", "rules.enabled": "\u5F00\u542F\u51FA\u501F", "rules.enabled.help": "\u603B\u5F00\u5173\u3002\u5173\u95ED\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u7EDD\u4E0D\u8FD0\u884C\u4ED6\u4EBA\u7684\u4EFB\u52A1\u3002\u4F60\u4ECD\u53EF\u81EA\u5DF1\u4F7F\u7528\u7F51\u7EDC\u3002", "rules.cpus": "\u6700\u5927 CPU \u6570", "rules.cpus.help": "\u4E00\u4E2A\u4EFB\u52A1\u6700\u591A\u53EF\u4F7F\u7528\u7684\u5904\u7406\u5668\u6838\u5FC3\u6570\u3002\u4F8B\u5982\uFF1A\u5728 8 \u6838\u7535\u8111\u4E0A\u8BBE\u4E3A 2\uFF0C\u4F1A\u4E3A\u4F60\u4FDD\u7559 6 \u4E2A\u6838\u5FC3\u3002", "rules.memory": "\u6700\u5927\u5185\u5B58\uFF08MB\uFF09", "rules.memory.help": "\u4E00\u4E2A\u4EFB\u52A1\u53EF\u4F7F\u7528\u7684 RAM\uFF0C\u5355\u4F4D\u4E3A MB\uFF081024 MB = 1 GB\uFF09\u3002BitPull \u7EDD\u4E0D\u4F1A\u63D0\u4F9B\u8D85\u8FC7\u8FD9\u53F0\u7535\u8111\u4E00\u534A\u7684\u5185\u5B58\u3002", "rules.gpu": "GPU", "rules.gpu.none": "\u65E0", "rules.gpu.consumer": "\u6D88\u8D39\u7EA7\uFF088\u201312 GB\uFF09", "rules.gpu.high": "\u9AD8\u7AEF\uFF0816\u201324 GB\uFF09", "rules.gpu.datacenter": "\u6570\u636E\u4E2D\u5FC3\u7EA7\uFF0840 GB+\uFF09", "rules.gpu.help": "\u6309\u663E\u5B58\u9009\u62E9\u4F60\u51FA\u501F\u7684\u663E\u5361\u3002\u5982\u679C\u6CA1\u6709\u72EC\u7ACB GPU \u6216\u4E0D\u60F3\u51FA\u501F\uFF0C\u8BF7\u4FDD\u6301\u201C\u65E0\u201D\u3002GPU \u8D5A\u53D6\u7684\u79EF\u5206\u6700\u591A\u3002", "rules.containers": "\u5BB9\u5668\u4EFB\u52A1", "rules.containers.help": "\u5728\u65E0\u7F51\u7EDC\u3001\u65E0\u6CD5\u8BBF\u95EE\u4F60\u6587\u4EF6\u7684\u6C99\u7BB1\u4E2D\u4E3A\u4ED6\u4EBA\u8FD0\u884C\u6784\u5EFA\u3001\u6D4B\u8BD5\u548C\u811A\u672C\u3002\u9700\u8981 Docker\uFF08\u6216 Apple Container\uFF09\uFF1A\u89C1\u201C\u8BBE\u7F6E\u8FD9\u53F0\u7535\u8111\u201D\u3002", "rules.models": "\u5F00\u653E\u6A21\u578B\uFF08Ollama\uFF09", "rules.models.help": "\u4F7F\u7528\u8FD9\u53F0\u7535\u8111\u4E0A Ollama \u4E2D\u5B89\u88C5\u7684\u5F00\u653E\u6A21\u578B\u56DE\u7B54 AI \u8BF7\u6C42\u3002\u9700\u8981 Ollama \u548C\u81F3\u5C11\u4E00\u4E2A\u6A21\u578B\u3002", "rules.idle": "\u4EC5\u5728\u7A7A\u95F2\u82E5\u5E72\u5206\u949F\u540E", "rules.idle.help": "\u4EC5\u5F53\u4F60\u5728\u8FD9\u4E48\u591A\u5206\u949F\u5185\u672A\u89E6\u78B0\u952E\u76D8\u6216\u9F20\u6807\u65F6\u51FA\u501F\u30020 = \u5DE5\u4F5C\u65F6\u4E5F\u51FA\u501F\u3002", "rules.ac": "\u4EC5\u5728\u63A5\u901A\u7535\u6E90\u65F6", "rules.ac.help": "\u7B14\u8BB0\u672C\u7535\u8111\u4F7F\u7528\u7535\u6C60\u65F6\u505C\u6B62\u51FA\u501F\uFF0C\u907F\u514D\u8017\u7535\u3002", "rules.hours": "\u4EC5\u9650\u8D77\u6B62\u65F6\u95F4\uFF08\u7559\u7A7A = \u59CB\u7EC8\uFF09", "rules.hours.help": "\u4EC5\u5728\u6B64\u65F6\u6BB5\u5185\u51FA\u501F\uFF0C\u91C7\u7528 24 \u5C0F\u65F6\u5236\u3002\u4F8B\u5982\uFF1A22 \u548C 8 = \u665A\u4E0A 10 \u70B9\u5230\u65E9\u4E0A 8 \u70B9\u3002\u4E24\u9879\u90FD\u7559\u7A7A\u5219\u968F\u65F6\u51FA\u501F\u3002", "rules.cache": "\u4ED6\u4EBA\u4ED3\u5E93\u7684\u7F13\u5B58\u526F\u672C", "rules.cache.help": "\u8FD9\u53F0\u7535\u8111\u4E3A\u5176\u4ED6\u7528\u6237\u4FDD\u5B58\u591A\u5C11\u4E2A\u516C\u5F00\u4ED3\u5E93\u7684\u526F\u672C\uFF0C\u4F7F\u5176\u5728\u4F5C\u8005\u79BB\u7EBF\u65F6\u4ECD\u53EF\u7528\u3002\u5360\u7528\u5C11\u91CF\u78C1\u76D8\u7A7A\u95F4\u5E76\u8D5A\u53D6\u79EF\u5206\u30020 = \u4E0D\u4FDD\u5B58\u3002", "rules.save": "\u4FDD\u5B58\u89C4\u5219", "rules.saved": "\u89C4\u5219\u5DF2\u4FDD\u5B58\uFF0C\u51E0\u79D2\u5185\u751F\u6548\u3002", "rules.hours_both": "\u8BF7\u586B\u5199\u4E24\u4E2A\u65F6\u95F4\uFF0C\u6216\u90FD\u7559\u7A7A\u4EE5\u968F\u65F6\u51FA\u501F\u3002", "folders.title": "\u5DF2\u6388\u6743\u6587\u4EF6\u5939", "folders.hint": "BitPull \u53EA\u8BFB\u53D6\u8FD9\u4E9B\u6587\u4EF6\u5939\u3002\u53D1\u5E03\u6587\u4EF6\u5939\u9700\u8981\u5B8C\u6574\u7684 bitpull.json\u3002", "folders.placeholder": "/Users/you/projects/my-library", "folders.add": "\u6388\u6743", "folders.none": "\u6CA1\u6709\u5DF2\u6388\u6743\u7684\u6587\u4EF6\u5939\u3002", "folders.draft": "\u8349\u7A3F", "folders.publish": "\u53D1\u5E03", "folders.remove": "\u79FB\u9664", "folders.need_path": "\u8BF7\u5148\u586B\u5199\u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF0C\u4F8B\u5982 /Users/you/projects/my-library\u3002", "folders.added": "\u6587\u4EF6\u5939\u5DF2\u6388\u6743\u3002", "folders.removed": "\u6587\u4EF6\u5939\u5DF2\u79FB\u9664\uFF0CBitPull \u4E0D\u518D\u8BFB\u53D6\u5B83\u3002", "folders.drafted": "\u8349\u7A3F\u5DF2\u5C31\u7EEA\uFF1A\u627E\u5230 {n} \u4E2A\u6587\u4EF6\u3002\u8BA9\u4F60\u7684 AI \u586B\u5199\u6458\u8981\u548C\u63CF\u8FF0\uFF08prepare_publish \u5DE5\u5177\uFF09\uFF0C\u7136\u540E\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u3002", "folders.published": "\u5DF2\u53D1\u5E03\u201C{name}\u201D\uFF0C\u5171 {n} \u4E2A\u6587\u4EF6\u3002", "folders.secrets_in": "\u53D1\u73B0\u4E8E\uFF1A{where}", "folders.line": "{file} \u7B2C {line} \u884C", "repos.title": "\u4F60\u53D1\u5E03\u7684\u4ED3\u5E93", "repos.hint": "\u4F60\u4FEE\u6539\u6587\u4EF6\u540E\u4F1A\u81EA\u52A8\u66F4\u65B0\uFF08\u6BCF 5 \u5206\u949F\uFF09\u3002", "repos.none": "\u6CA1\u6709\u5DF2\u53D1\u5E03\u7684\u4ED3\u5E93\u3002", "repos.withdraw": "\u64A4\u56DE", "repos.withdrawn": "\u4ED3\u5E93\u5DF2\u4ECE\u7F51\u7EDC\u64A4\u56DE\u3002", "ask.title": "\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B", "ask.offers": "\u8FD9\u53F0\u7535\u8111\u63D0\u4F9B\uFF1A{models}\u3002", "ask.offers_none": "\u65E0\u6A21\u578B\uFF08\u5B89\u88C5 Ollama \u5373\u53EF\u63D0\u4F9B\uFF09", "ask.placeholder": "\u5411\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B\u63D0\u95EE\u2026", "ask.small": "\u5C0F", "ask.medium": "\u4E2D", "ask.large": "\u5927", "ask.button": "\u63D0\u95EE", "ask.empty": "\u8BF7\u5148\u8F93\u5165\u95EE\u9898\u3002", "ask.waiting": "\u6B63\u5728\u5BFB\u627E\u6709\u8BE5\u6A21\u578B\u7684\u7535\u8111\u2026\u6700\u591A\u53EF\u80FD\u9700\u8981\u4E00\u5206\u949F\u3002", "ask.credits": "{n} \u79EF\u5206", "tools.title": "\u8FDE\u63A5\u4F60\u7684\u5DE5\u5177", "tools.mcp": "\u5BF9\u4E8E Claude Code \u548C MCP \u5BA2\u6237\u7AEF\uFF0C\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u8FD0\u884C\uFF1A", "tools.openai": "\u5BF9\u4E8E\u517C\u5BB9 OpenAI \u7684\u5DE5\u5177\uFF1A\u57FA\u7840 URL", "tools.key": "API \u5BC6\u94A5", "tools.show": "\u663E\u793A", "jobs.title": "\u4F60\u6700\u8FD1\u7684\u4EFB\u52A1", "jobs.none": "\u6CA1\u6709\u4EFB\u52A1\u3002", "jobs.model": "\u6A21\u578B", "jobs.container": "\u5BB9\u5668", "jobs.status.queued": "\u6392\u961F\u4E2D", "jobs.status.running": "\u8FD0\u884C\u4E2D", "jobs.status.done": "\u5DF2\u5B8C\u6210", "jobs.status.failed": "\u5931\u8D25", "jobs.status.canceled": "\u5DF2\u53D6\u6D88", "jobs.cost": "{n} \u79EF\u5206", working: "\u5904\u7406\u4E2D\u2026", "err.agent_down": "\u8FD9\u53F0\u7535\u8111\u4E0A\u7684 BitPull \u6CA1\u6709\u54CD\u5E94\u3002\u5B83\u4F1A\u5728 30 \u79D2\u5185\u81EA\u52A8\u91CD\u542F\uFF1A\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "err.server": "\u65E0\u6CD5\u8FDE\u63A5 BitPull \u670D\u52A1\u5668\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002", "err.session": "\u63A7\u5236\u9762\u677F\u4F1A\u8BDD\u5DF2\u8FC7\u671F\u3002\u8BF7\u4ECE BitPull \u5E94\u7528\u91CD\u65B0\u6253\u5F00\u3002", "err.billing": "\u4ED8\u6B3E\u529F\u80FD\u5C1A\u672A\u542F\u7528\u3002", "err.no_folder": "\u8FD9\u53F0\u7535\u8111\u4E0A\u4E0D\u5B58\u5728\u6B64\u6587\u4EF6\u5939\u3002\u8BF7\u68C0\u67E5\u8DEF\u5F84\u3002", "err.not_folder": "\u6B64\u8DEF\u5F84\u662F\u6587\u4EF6\uFF0C\u4E0D\u662F\u6587\u4EF6\u5939\u3002", "err.credits": "\u79EF\u5206\u4E0D\u8DB3\u3002", "err.device": "\u8FD9\u53F0\u7535\u8111\u5C1A\u672A\u8FDE\u63A5\u3002\u8BF7\u4FDD\u6301 BitPull \u5E94\u7528\u6253\u5F00\uFF0C\u4E00\u5206\u949F\u540E\u518D\u8BD5\u3002", "err.no_model": "\u76EE\u524D\u7F51\u7EDC\u4E0A\u6CA1\u6709\u7535\u8111\u63D0\u4F9B AI \u6A21\u578B\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "err.invalid": "\u90E8\u5206\u6570\u503C\u65E0\u6548\u3002\u8BF7\u68C0\u67E5\u5404\u5B57\u6BB5\u540E\u91CD\u8BD5\u3002", "tip.lang": "\u5E94\u7528\u7684\u8BED\u8A00\u3002\u4F60\u7684\u9009\u62E9\u4F1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u3002", "tip.buy.base": "\u6253\u5F00\u57FA\u7840\u5957\u9910\u7684\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF1A\u6BCF\u6708 \u20AC4.50\uFF0C\u6BCF\u6708\u83B7\u5F97 80 \u79EF\u5206\u3002\u4F60\u53EF\u4EE5\u968F\u65F6\u53D6\u6D88\u3002", "tip.buy.pro": "\u6253\u5F00\u4E13\u4E1A\u5957\u9910\u7684\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF1A\u6BCF\u6708 \u20AC9.90\uFF0C\u6BCF\u6708\u83B7\u5F97 200 \u79EF\u5206\uFF0C\u4EAB\u6709\u6700\u9AD8\u4F18\u5148\u7EA7\u5E76\u53EF\u4F7F\u7528\u6240\u6709 GPU\u3002\u4F60\u53EF\u4EE5\u968F\u65F6\u53D6\u6D88\u3002", "tip.buy.recharge": "\u6253\u5F00\u5B89\u5168\u4ED8\u6B3E\u9875\u9762\uFF0C\u4E00\u6B21\u6027\u8D2D\u4E70 80 \u79EF\u5206\uFF0C\u4EF7\u683C \u20AC5\u3002\u79EF\u5206\u6C38\u4E0D\u8FC7\u671F\u3002", "tip.pause": "\u7ACB\u5373\u505C\u6B62\u51FA\u501F\u3002\u6B64\u523B\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1\u4F1A\u8F6C\u4EA4\u7ED9\u53E6\u4E00\u53F0\u7535\u8111\u3002\u518D\u6309\u4E00\u6B21\u5373\u53EF\u6062\u590D\u3002", "tip.resume": "\u6309\u7167\u4F60\u7684\u51FA\u501F\u89C4\u5219\u91CD\u65B0\u5F00\u59CB\u51FA\u501F\u3002", "tip.rules.save": "\u4FDD\u5B58\u4E0A\u65B9\u7684\u51FA\u501F\u89C4\u5219\u3002\u51E0\u79D2\u5185\u751F\u6548\uFF1B\u5728\u4F60\u6309\u4E0B\u6B64\u6309\u94AE\u4E4B\u524D\u4E0D\u4F1A\u6709\u4EFB\u4F55\u53D8\u5316\u3002", "tip.folder.add": "\u5141\u8BB8 BitPull \u8BFB\u53D6\u5DE6\u4FA7\u586B\u5199\u7684\u6587\u4EF6\u5939\u3002\u6388\u6743\u6587\u4EF6\u5939\u4EE5\u5916\u7684\u6587\u4EF6\u6C38\u8FDC\u4E0D\u4F1A\u88AB\u8BFB\u53D6\u6216\u5171\u4EAB\u3002", "tip.folder.draft": "\u5728\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA bitpull.json\uFF1A\u5217\u51FA\u5176\u4E2D\u7684\u6587\u4EF6\uFF0C\u5E76\u7559\u51FA\u7A7A\u767D\u63CF\u8FF0\u4F9B\u4F60\u7684 AI \u586B\u5199\u3002\u6B64\u65F6\u5C1A\u672A\u53D1\u5E03\u4EFB\u4F55\u5185\u5BB9\u3002", "tip.folder.publish": "\u5C06\u6B64\u6587\u4EF6\u5939\u4F5C\u4E3A\u516C\u5F00\u4ED3\u5E93\u5171\u4EAB\u5230\u7F51\u7EDC\u4E0A\uFF0C\u5E76\u7531\u8FD9\u53F0\u7535\u8111\u7B7E\u540D\u3002\u5982\u679C\u5728\u6587\u4EF6\u4E2D\u53D1\u73B0\u5BC6\u94A5\u6216\u5BC6\u7801\uFF0C\u5C06\u963B\u6B62\u53D1\u5E03\u3002", "tip.folder.remove": "BitPull \u5C06\u505C\u6B62\u8BFB\u53D6\u6B64\u6587\u4EF6\u5939\u3002\u4ECE\u4E2D\u5DF2\u53D1\u5E03\u7684\u4ED3\u5E93\u4F1A\u4FDD\u6301\u5728\u7EBF\uFF0C\u76F4\u5230\u4F60\u5C06\u5176\u64A4\u56DE\u3002", "tip.repo.withdraw": "\u5C06\u6B64\u4ED3\u5E93\u4ECE\u7F51\u7EDC\u4E2D\u79FB\u9664\u3002\u5176\u4ED6\u7528\u6237\u5C06\u65E0\u6CD5\u518D\u627E\u5230\u6216\u4E0B\u8F7D\u5B83\u3002\u4F60\u7684\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u4F60\u7684\u7535\u8111\u4E0A\u3002", "tip.ask": "\u5C06\u4F60\u7684\u95EE\u9898\u4EE5\u7AEF\u5230\u7AEF\u52A0\u5BC6\u65B9\u5F0F\u53D1\u9001\u7ED9\u7F51\u7EDC\u4E0A\u4E00\u53F0\u8FD0\u884C\u5F00\u653E AI \u6A21\u578B\u7684\u7535\u8111\u3002\u9700\u8981\u82B1\u8D39\u5C11\u91CF\u79EF\u5206\u3002", "tip.tier": "\u6A21\u578B\u5927\u5C0F\uFF1A\u5C0F\u6A21\u578B\u901F\u5EA6\u5FEB\u3001\u82B1\u8D39\u5C11\uFF1B\u5927\u6A21\u578B\u66F4\u806A\u660E\uFF0C\u4F46\u82B1\u8D39\u66F4\u591A\u79EF\u5206\u3002", "tip.show_key": "\u663E\u793A\u8FD9\u53F0\u7535\u8111\u4E0A\u7684 AI \u5DE5\u5177\u4E0E BitPull \u901A\u4FE1\u6240\u7528\u7684\u5BC6\u94A5\u3002\u8BF7\u52FF\u5206\u4EAB\u3002", "tip.setup.download": "\u5C06\u9002\u7528\u4E8E\u8FD9\u53F0\u7535\u8111\u7684 {name} \u5B98\u65B9\u5B89\u88C5\u7A0B\u5E8F\u4E0B\u8F7D\u5230\u4F60\u7684\u201C\u4E0B\u8F7D\u201D\u6587\u4EF6\u5939\u5E76\u6253\u5F00\u3002\u6309\u7167\u5176\u4E2D\u7684\u6B65\u9AA4\u5B8C\u6210\u5B89\u88C5\u3002", "tip.setup.start": "\u542F\u52A8 {name}\u3002\u5B83\u5DF2\u5B89\u88C5\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u4F46\u5C1A\u672A\u8FD0\u884C\u3002", "tip.setup.pull": "\u5C06 AI \u6A21\u578B {model}\uFF08{size} GB\uFF09\u4E0B\u8F7D\u5230 Ollama \u4E2D\uFF0C\u8FD9\u6837\u8FD9\u53F0\u7535\u8111\u5C31\u80FD\u628A\u5B83\u63D0\u4F9B\u7ED9\u5176\u4ED6\u4EBA\u3002", "tip.setup.open": "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 {name} \u7684\u5B98\u65B9\u9875\u9762\u3002", "tip.setup.recheck": "\u91CD\u65B0\u68C0\u67E5\u8FD9\u53F0\u7535\u8111\u4E0A\u5DF2\u5B89\u88C5\u548C\u6B63\u5728\u8FD0\u884C\u7684\u5185\u5BB9\u3002", "update.title": "\u5E94\u7528\u66F4\u65B0", "update.current": "\u5DF2\u5B89\u88C5\u7248\u672C\uFF1A{v}", "update.latest": "\u6700\u65B0\u7248\u672C\uFF1A{v}", "update.button": "\u68C0\u67E5\u66F4\u65B0", "update.install": "\u7ACB\u5373\u5B89\u88C5\u7248\u672C {v}", "update.available": "\u7248\u672C {v} \u53EF\u7528\u3002", "update.not_in_app": "\u66F4\u65B0\u7531 BitPull \u5E94\u7528\u5B89\u88C5\u3002\u8BF7\u4ECE\u5E94\u7528\u4E2D\u6253\u5F00\u6B64\u63A7\u5236\u9762\u677F\u8FDB\u884C\u66F4\u65B0\u3002", "update.state.requested": "\u6B63\u5728\u8BF7\u6C42\u5E94\u7528\u68C0\u67E5\u2026", "update.state.checking": "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026", "update.state.up_to_date": "\u4F60\u5DF2\u662F\u6700\u65B0\u7248\u672C\u3002", "update.state.installing": "\u6B63\u5728\u4E0B\u8F7D\u5E76\u5B89\u88C5\u7248\u672C {v}\u2026\u5E94\u7528\u4F1A\u81EA\u52A8\u91CD\u542F\u3002", "update.state.restarting": "\u6B63\u5728\u4EE5\u7248\u672C {v} \u91CD\u542F\u2026", "update.state.error": "\u66F4\u65B0\u5931\u8D25\uFF1A{msg}\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002", "tip.update": "\u68C0\u67E5\u662F\u5426\u6709\u66F4\u65B0\u7248\u672C\u7684 BitPull\u3002\u5982\u6709\uFF0C\u4F1A\u4E0B\u8F7D\u3001\u9A8C\u8BC1\u7B7E\u540D\u3001\u5B89\u88C5\u5E76\u91CD\u542F\u5E94\u7528\u3002\u51FA\u501F\u4F1A\u6682\u505C\u51E0\u79D2\u949F\u3002", "tools.hint": "\u8BA9\u4F60\u7684 AI \u52A9\u624B\u641C\u7D22\u5171\u4EAB\u4EE3\u7801\uFF0C\u5E76\u4F7F\u7528\u7F51\u7EDC\u4E0A\u7684\u5F00\u653E\u6A21\u578B\u548C\u7535\u8111\u3002\u9009\u62E9\u4F60\u7684\u5DE5\u5177\uFF1A", "tools.connect": "\u8FDE\u63A5", "tools.connected": "\u5DF2\u8FDE\u63A5", "tools.copy": "\u590D\u5236", "tools.copied": "\u5DF2\u590D\u5236\u3002", "tools.installed": "\u5DF2\u5B89\u88C5", "tools.not_found": "\u8FD9\u53F0\u7535\u8111\u4E0A\u672A\u627E\u5230", "tools.done": "\u5B8C\u6210\u3002\u91CD\u542F {name} \u5373\u53EF\u5F00\u59CB\u4F7F\u7528 BitPull\u3002", "tools.manual": "\u624B\u52A8\u6DFB\u52A0\uFF1A", "tools.config_invalid": "{name} \u7684\u8BBE\u7F6E\u6587\u4EF6\u4E0D\u662F\u6709\u6548\u7684 JSON\uFF0C\u56E0\u6B64 BitPull \u6CA1\u6709\u6539\u52A8\u5B83\u3002\u8BF7\u4FEE\u590D\u8BE5\u6587\u4EF6\uFF0C\u6216\u7528\u201C\u590D\u5236\u201D\u624B\u52A8\u6DFB\u52A0 BitPull\u3002", "tip.tools.connect": "\u81EA\u52A8\u5C06 BitPull \u6DFB\u52A0\u5230 {name} \u7684\u8BBE\u7F6E\u4E2D\u3002\u4E4B\u524D\u7684\u8BBE\u7F6E\u4F1A\u5728\u65C1\u8FB9\u4FDD\u7559\u4E00\u4EFD\u5907\u4EFD\u3002", "tip.tools.copy": "\u5C06\u547D\u4EE4\u6216\u8BBE\u7F6E\u590D\u5236\u5230\u526A\u8D34\u677F\uFF0C\u4EE5\u4FBF\u4F60\u81EA\u5DF1\u628A BitPull \u6DFB\u52A0\u5230 {name}\u3002", "models.title": "\u53EF\u5171\u4EAB\u7684 AI \u6A21\u578B", "models.hint": "\u6B64\u7535\u8111\u53EF\u4EE5\u51FA\u501F\u7684\u5404\u7C7B\u5F00\u653E\u6A21\u578B\u3002\u4EC5\u5217\u51FA\u8BB8\u53EF\u8BC1\u5141\u8BB8\u4E3A\u4ED6\u4EBA\u63D0\u4F9B\u670D\u52A1\u7684\u6A21\u578B\u3002\u51FA\u501F\u5F00\u542F\u65F6\uFF0C\u5DF2\u4E0B\u8F7D\u7684\u6A21\u578B\u4F1A\u63D0\u4F9B\u7ED9\u7F51\u7EDC\u3002", "models.engine.title": "\u56FE\u50CF\u3001\u8BED\u97F3\u548C\u97F3\u4E50\u5F15\u64CE", "models.engine.help": "Lemonade\uFF08\u5F00\u6E90\uFF09\uFF1A\u56FE\u50CF\u751F\u6210\u3001\u8BED\u97F3\u8F6C\u6587\u5B57\u3001\u6587\u5B57\u8F6C\u8BED\u97F3\u3001\u97F3\u4E50\u3001\u6587\u6863\u91CD\u6392\u5E8F\u548C\u56FE\u50CF\u653E\u5927\u3002\u5B89\u88C5\u5728 BitPull \u5185\u90E8\uFF0C\u65E0\u9700\u7BA1\u7406\u5458\u6743\u9650\u3002", "models.engine.install": "\u5B89\u88C5\u5F15\u64CE", "models.engine.repair": "\u91CD\u65B0\u5B89\u88C5\u5F15\u64CE", "models.engine.unsupported": "\u6B64\u7535\u8111\u4E0D\u53EF\u7528\uFF08\u9700\u8981 Apple \u82AF\u7247\uFF0C\u6216 Windows/Linux x64\uFF09", "models.need_engine": "\u8BF7\u5148\u5B89\u88C5\u5F15\u64CE", "models.not_here": "\u6B64\u7535\u8111\u4E0D\u53EF\u7528", "models.shared": "\u5DF2\u4E0B\u8F7D \xB7 \u5DF2\u5171\u4EAB", "models.download": "\u4E0B\u8F7D\uFF08{size} GB\uFF09", "models.needs_ram": "\u9700\u8981\u7EA6 {ram} GB \u5185\u5B58\uFF1A\u5728\u6B64\u53EF\u80FD\u8F83\u6162", "models.recommended": "\u63A8\u8350", "models.license": "\u8BB8\u53EF\u8BC1", "models.ok.engine": "\u6B63\u5728\u5B89\u88C5\u5F15\u64CE\u2026", "task.chat": "\u6587\u672C\u548C\u4EE3\u7801", "task.vision": "\u56FE\u50CF \u2192 \u6587\u672C", "task.ocr": "\u6587\u6863\uFF08OCR\uFF09", "task.translate": "\u7FFB\u8BD1", "task.embed": "\u5411\u91CF\u5D4C\u5165\uFF08\u641C\u7D22\uFF09", "task.rerank": "\u91CD\u6392\u5E8F", "task.image": "\u56FE\u50CF\u751F\u6210", "task.upscale": "\u56FE\u50CF\u653E\u5927", "task.stt": "\u8BED\u97F3\u8F6C\u6587\u5B57", "task.tts": "\u6587\u5B57\u8F6C\u8BED\u97F3", "task.music": "\u97F3\u4E50", "limits.title": "\u60A8\u4E3A\u4ED6\u4EBA\u8BBE\u5B9A\u7684\u4E0A\u9650", "limits.hint": "\u6B64\u7535\u8111\u4E3A\u4ED6\u4EBA\u5B8C\u6210\u7684 AI \u5DE5\u4F5C\u91CF\u3002\u7559\u7A7A\u8868\u793A\u4E0D\u8BBE\u4E0A\u9650\u3002\u8FBE\u5230\u4E0A\u9650\u540E\uFF0C\u5728\u4E0B\u4E00\u5468\u671F\u5F00\u59CB\u524D\u4E0D\u518D\u63D0\u4F9B\u60A8\u7684\u6A21\u578B\u3002", "limits.save": "\u4FDD\u5B58\u4E0A\u9650", "limits.requests": "\u8BF7\u6C42\u6570", "limits.tokens": "Token \u6570", "limits.used": "\u5DF2\u7528", "limits.day": "\u6BCF\u5929", "limits.week": "\u6BCF\u5468", "limits.month": "\u6BCF\u6708", "limits.none": "\u4E0D\u8BBE\u4E0A\u9650", "limits.usage": "{requests} \u6B21\u8BF7\u6C42 \xB7 {tokens} \u4E2A token", "limits.saved": "\u4E0A\u9650\u5DF2\u4FDD\u5B58\u3002", "tip.models.engine": "\u5C06\u5F00\u6E90 Lemonade \u5F15\u64CE\u4E0B\u8F7D\u5230 BitPull \u4E2D\uFF0C\u4F7F\u6B64\u7535\u8111\u53EF\u4EE5\u51FA\u501F\u56FE\u50CF\u3001\u8BED\u97F3\u548C\u97F3\u4E50\u6A21\u578B\u3002", "tip.models.download": "\u5C06 {model}\uFF08{size} GB\uFF09\u4E0B\u8F7D\u5230\u6B64\u7535\u8111\uFF0C\u4EE5\u4FBF\u63D0\u4F9B\u7ED9\u4ED6\u4EBA\u3002\u4E4B\u540E\u53EF\u4EE5\u5220\u9664\u3002", "tip.limits.save": "\u4FDD\u5B58\u4E3A\u4ED6\u4EBA\u5B8C\u6210 AI \u5DE5\u4F5C\u7684\u6BCF\u65E5\u3001\u6BCF\u5468\u548C\u6BCF\u6708\u4E0A\u9650\u3002", "lend.visible": "\u2713 \u7F51\u7EDC\u80FD\u770B\u5230\u8FD9\u53F0\u7535\u8111\uFF1A{cpus} \u4E2A CPU\u3001{ram} GB \u53EF\u4F9B\u4ED6\u4EBA\u4F7F\u7528\u3002", "lend.invisible": "\u7F51\u7EDC\u5C1A\u672A\u770B\u5230\u51FA\u501F\uFF1A\u8BF7\u6700\u591A\u7B49\u5F85\u4E00\u5206\u949F\uFF1B\u5982\u679C\u4ECD\u7136\u5982\u6B64\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u3002", "lend.unusable": "\u26A0 \u8FD8\u6CA1\u6709\u4EBA\u80FD\u4F7F\u7528\u8FD9\u53F0\u7535\u8111\uFF1A\u8FD9\u91CC\u65E0\u6CD5\u8FD0\u884C\u4EFB\u4F55\u4EFB\u52A1\u3002{reason}", "lend.unusable.docker": "Docker \u672A\u901A\u8FC7 BitPull \u7684\u9694\u79BB\u68C0\u67E5\uFF1A\u8BF7\u67E5\u770B\u201C\u8BBE\u7F6E\u6B64\u7535\u8111\u201D\u3002", "lend.unusable.off": "\u5BB9\u5668\u4EFB\u52A1\u5DF2\u5173\u95ED\u4E14\u672A\u5B89\u88C5 AI \u6A21\u578B\uFF1A\u8BF7\u5F00\u542F\u201C\u5BB9\u5668\u4EFB\u52A1\u201D\u6216\u4E0B\u8F7D\u4E00\u4E2A\u6A21\u578B\u3002", "lend.docker_login": "Docker \u65E0\u6CD5\u4E0B\u8F7D\u955C\u50CF\uFF0C\u56E0\u4E3A\u5B83\u7684 Docker Hub \u767B\u5F55\u5DF2\u5931\u6548\u3002\u5728 Docker Desktop \u4E2D\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684\u8D26\u6237 \u2192 Sign out\uFF0C\u7136\u540E\u91CD\u65B0\u767B\u5F55\u6216\u4FDD\u6301\u672A\u767B\u5F55\u3002\u4E4B\u540E\u70B9\u51FB\u201C\u91CD\u65B0\u68C0\u67E5\u201D\u3002", "lend.off_hint": "\u51FA\u501F\u5DF2\u5173\u95ED\uFF1A\u8BF7\u5728\u4E0B\u65B9\u201C{rules}\u201D\u4E2D\u52FE\u9009\u201C{enabled}\u201D\u5E76\u70B9\u51FB\u201C{save}\u201D\u3002\uFF08\u6682\u505C / \u7EE7\u7EED\u53EA\u4F1A\u6682\u505C\u5DF2\u5F00\u542F\u7684\u51FA\u501F\u3002\uFF09", "lend.low_memory": "\u53EA\u63D0\u4F9B\u4E86 {mb} MB \u5185\u5B58\uFF1A\u80FD\u8FD0\u884C\u7684\u4EFB\u52A1\u5F88\u5C11\u3002\u8BF7\u5728\u201C{rules}\u201D\u4E2D\u5C06\u201C{memory}\u201D\u8BBE\u4E3A\u4F8B\u5982 4096\uFF08= 4 GB\uFF09\uFF0C\u7136\u540E\u70B9\u51FB\u201C{save}\u201D\u3002", "rules.awake": "\u51FA\u501F\u65F6\u4FDD\u6301\u5524\u9192", "rules.awake.help": "\u5728\u4E3A\u4ED6\u4EBA\u8FD0\u884C\u4EFB\u52A1\u65F6\uFF0C\u8FD9\u53F0\u7535\u8111\u4E0D\u4F1A\u8FDB\u5165\u7761\u7720\uFF08\u5C4F\u5E55\u4ECD\u53EF\u5173\u95ED\uFF09\u3002\u4E4B\u540E\u7167\u5E38\u7761\u7720\u3002\u907F\u514D\u4EFB\u52A1\u88AB\u4E2D\u65AD\u3002", "ask.wait": "\u6700\u591A\u7B49\u5F85\uFF08\u5206\u949F\uFF09", "ask.wait.save": "\u4FDD\u5B58", "ask.wait.saved": "\u5C06\u6700\u591A\u7B49\u5F85 {n} \u5206\u949F\u7684\u56DE\u7B54\u3002", "ask.wait.range": "\u8BF7\u8F93\u5165 1 \u5230 120 \u4E4B\u95F4\u7684\u5206\u949F\u6570\u3002", "tip.wait": "\u7B49\u5F85\u7F51\u7EDC\u4E2D AI \u6A21\u578B\u56DE\u7B54\u7684\u6700\u957F\u65F6\u95F4\u3002\u5728\u4ED6\u4EBA\u5904\u7406\u5668\u4E0A\u8FD0\u884C\u7684\u6A21\u578B\u53EF\u80FD\u9700\u8981\u51E0\u5206\u949F\u3002\u60A8\u7684 AI \u4E5F\u53EF\u4EE5\u4FEE\u6539\u3002" } };
42
42
  }
43
43
  });
44
44
 
@@ -263,8 +263,8 @@ var require_utils = __commonJS({
263
263
  exports2.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
264
264
  exports2.isWindows = () => {
265
265
  if (typeof navigator !== "undefined" && navigator.platform) {
266
- const platform10 = navigator.platform.toLowerCase();
267
- return platform10 === "win32" || platform10 === "windows";
266
+ const platform11 = navigator.platform.toLowerCase();
267
+ return platform11 === "win32" || platform11 === "windows";
268
268
  }
269
269
  if (typeof process !== "undefined" && process.platform) {
270
270
  return process.platform === "win32";
@@ -12847,9 +12847,9 @@ var require_websocket_server = __commonJS({
12847
12847
 
12848
12848
  // apps/agent/src/cli.ts
12849
12849
  init_define_BITPULL_UI_I18N();
12850
- var import_node_child_process7 = require("node:child_process");
12850
+ var import_node_child_process8 = require("node:child_process");
12851
12851
  var import_promises21 = require("node:fs/promises");
12852
- var import_node_os10 = require("node:os");
12852
+ var import_node_os11 = require("node:os");
12853
12853
  var import_node_path18 = require("node:path");
12854
12854
  var import_node_readline = require("node:readline");
12855
12855
 
@@ -17400,10 +17400,10 @@ function supportsTask(id, task) {
17400
17400
  const tasks2 = modelTasks(id);
17401
17401
  return tasks2.includes(task) || task === "chat" && tasks2.includes("vision") || task === "translate" && tasks2.includes("chat");
17402
17402
  }
17403
- function modelsFor(platform10, ramGb) {
17403
+ function modelsFor(platform11, ramGb) {
17404
17404
  return OPEN_MODELS.map((m) => ({
17405
17405
  ...m,
17406
- available: !m.platforms || m.platforms.includes(platform10),
17406
+ available: !m.platforms || m.platforms.includes(platform11),
17407
17407
  fits: ramGb >= m.minRamGb
17408
17408
  }));
17409
17409
  }
@@ -17668,7 +17668,8 @@ var DEFAULT_LENDING = {
17668
17668
  idleMinutes: 10,
17669
17669
  onlyOnAc: true,
17670
17670
  hours: null,
17671
- aiLimits: NO_AI_LIMITS
17671
+ aiLimits: NO_AI_LIMITS,
17672
+ keepAwake: true
17672
17673
  };
17673
17674
  function bitpullHome() {
17674
17675
  return process.env.BITPULL_HOME ?? (0, import_node_path4.join)((0, import_node_os.homedir)(), ".bitpull");
@@ -17869,14 +17870,36 @@ var LemonadeServer = class {
17869
17870
  signal
17870
17871
  });
17871
17872
  }
17873
+ /**
17874
+ * The backend to use for a recipe on this computer (graphics card or processor), from Lemonade's
17875
+ * own report (/v1/system-info): its preferred one, otherwise the best one that can run here.
17876
+ */
17877
+ async chooseBackend(recipe) {
17878
+ let info = {};
17879
+ try {
17880
+ const res = await fetch(`${this.url}/v1/system-info`, { headers: this.auth(), signal: AbortSignal.timeout(2e4) });
17881
+ if (res.ok) info = await res.json();
17882
+ } catch {
17883
+ }
17884
+ const r = info.recipes?.[recipe];
17885
+ const backends = r?.backends ?? {};
17886
+ const usable = (name2) => backends[name2] && backends[name2].state !== "unsupported";
17887
+ const order = ["metal", "cuda", "rocm", "vulkan", "cpu"];
17888
+ const name = (r?.default_backend && usable(r.default_backend) ? r.default_backend : void 0) ?? order.find(usable) ?? Object.keys(backends).find(usable) ?? "default";
17889
+ if (Object.keys(backends).length && !usable(name)) throw new Error(`no ${recipe} engine can run on this computer`);
17890
+ return { name, install: backends[name]?.state !== "installed" };
17891
+ }
17872
17892
  /** Installs the backend a catalogue model needs, then downloads the model, with progress. */
17873
17893
  async pull(model, onProgress) {
17874
17894
  const entry = catalogModel(model);
17875
17895
  if (!entry || entry.runtime !== "lemonade") throw new Error(`${model} is not a Lemonade model`);
17876
17896
  if (!await this.start()) throw new Error(this.lastError ?? "Lemonade is not installed");
17877
- onProgress({ detail: `installing ${entry.recipe} engine` });
17878
- const inst = await this.post("/v1/install", { recipe: entry.recipe });
17879
- if (!inst.ok) throw new Error(`engine install failed: ${await errorText(inst)}`);
17897
+ const backend = await this.chooseBackend(entry.recipe);
17898
+ if (backend.install) {
17899
+ onProgress({ detail: `installing ${entry.recipe} engine (${backend.name})` });
17900
+ const inst = await this.post("/v1/install", { recipe: entry.recipe, backend: backend.name });
17901
+ if (!inst.ok) throw new Error(`engine install failed (${entry.recipe}, ${backend.name}): ${await errorText(inst)}`);
17902
+ }
17880
17903
  onProgress({ progress: 0, detail: "downloading model" });
17881
17904
  const res = await this.post("/v1/pull", { model, stream: true });
17882
17905
  if (!res.ok || !res.body) throw new Error(`model download failed: ${await errorText(res)}`);
@@ -17954,19 +17977,38 @@ async function runAiTask(spec, timeoutSec, ollamaUrl, signal) {
17954
17977
  const d2 = await ollama(ollamaUrl, "/api/embed", { model: spec.model, input: (spec.input ?? []).slice(0, 256) }, sig);
17955
17978
  return { ok: true, result: { embeddings: d2.embeddings }, usage: { seconds: seconds(), promptTokens: d2.prompt_eval_count ?? 0 } };
17956
17979
  }
17957
- const d = await ollama(
17958
- ollamaUrl,
17959
- "/api/chat",
17960
- {
17961
- model: spec.model,
17962
- messages: spec.messages ?? [],
17963
- stream: false,
17964
- options: { num_predict: spec.maxTokens ?? 1024, ...spec.temperature !== void 0 ? { temperature: spec.temperature } : {} }
17965
- },
17966
- sig
17967
- );
17980
+ const body = {
17981
+ model: spec.model,
17982
+ messages: spec.messages ?? [],
17983
+ stream: false,
17984
+ // Reasoning models (Qwen 3.5, gpt-oss…) can spend every token "thinking" and return an empty
17985
+ // answer: answer directly unless the requester asks for reasoning.
17986
+ think: spec.think ?? false,
17987
+ options: { num_predict: spec.maxTokens ?? 1024, ...spec.temperature !== void 0 ? { temperature: spec.temperature } : {} }
17988
+ };
17989
+ let d;
17990
+ try {
17991
+ d = await ollama(ollamaUrl, "/api/chat", body, sig);
17992
+ } catch (err) {
17993
+ if (!/think/i.test(err.message)) throw err;
17994
+ const { think: _t, ...plain } = body;
17995
+ d = await ollama(ollamaUrl, "/api/chat", plain, sig);
17996
+ }
17968
17997
  const usage = { seconds: seconds(), promptTokens: d.prompt_eval_count ?? 0, completionTokens: d.eval_count ?? 0 };
17969
- return { ok: true, result: { content: d.message?.content ?? "", usage: { promptTokens: usage.promptTokens, completionTokens: usage.completionTokens } }, usage };
17998
+ const content = d.message?.content ?? "";
17999
+ const reasoning = d.message?.thinking ?? "";
18000
+ return {
18001
+ ok: true,
18002
+ result: {
18003
+ // Out of tokens while reasoning: give the reasoning rather than nothing, and say so.
18004
+ content: content || (reasoning ? `[The model used all ${usage.completionTokens} tokens reasoning before answering; raise maxTokens. Its reasoning so far:]
18005
+ ${reasoning}` : ""),
18006
+ ...reasoning && spec.think ? { reasoning } : {},
18007
+ truncated: d.done_reason === "length",
18008
+ usage: { promptTokens: usage.promptTokens, completionTokens: usage.completionTokens }
18009
+ },
18010
+ usage
18011
+ };
17970
18012
  }
17971
18013
  const declared = spec.units ?? 0;
17972
18014
  if (task === "image") {
@@ -18289,7 +18331,7 @@ async function openModelsFor(ctx, task) {
18289
18331
  return models.filter((m) => !task || supportsTask(m.model, task)).map((m) => ({ ...m, tasks: modelTasks(m.model), name: catalogModel(m.model)?.name ?? m.model, license: catalogModel(m.model)?.license ?? null }));
18290
18332
  }
18291
18333
  var OUT_EXT = { png: "png", mp3: "mp3", wav: "wav" };
18292
- async function useOpenModel(ctx, input, waitMs = 6e5) {
18334
+ async function useOpenModel(ctx, input, waitMs = answerWaitMs(ctx, input.waitMinutes, input.task === "image" || input.task === "music")) {
18293
18335
  const task = input.task;
18294
18336
  const model = input.model ?? (await openModelsFor(ctx, task))[0]?.model;
18295
18337
  if (!model) throw new ToolError(`No computer on the network offers a model for "${task}" right now.`);
@@ -18361,7 +18403,13 @@ ${texts.join("\n")}` : input.prompt ?? "Describe this image.";
18361
18403
  const { images: _i, audio: _a, ...rest } = result;
18362
18404
  return { model, task, cost: done.cost, jobId: done.id, ...files.length ? { files } : {}, ...rest };
18363
18405
  }
18364
- async function askOpenModel(ctx, input, waitMs = 18e4) {
18406
+ var DEFAULT_WAIT_MINUTES = 10;
18407
+ var HEAVY_TASK_MIN_WAIT_MINUTES = 30;
18408
+ function answerWaitMs(ctx, minutes, heavy = false) {
18409
+ const m = minutes ?? ctx.config.answerWaitMinutes ?? DEFAULT_WAIT_MINUTES;
18410
+ return Math.max(1, Math.min(heavy && minutes === void 0 ? Math.max(m, HEAVY_TASK_MIN_WAIT_MINUTES) : m, 120)) * 6e4;
18411
+ }
18412
+ async function askOpenModel(ctx, input, waitMs = answerWaitMs(ctx, input.waitMinutes)) {
18365
18413
  const model = await chooseModel(ctx, input.model, input.tier);
18366
18414
  const promptChars = input.messages.reduce((n, m) => n + m.content.length, 0);
18367
18415
  const job = await submitEncrypted(
@@ -18371,6 +18419,9 @@ async function askOpenModel(ctx, input, waitMs = 18e4) {
18371
18419
  { messages: input.messages, ...input.temperature !== void 0 ? { temperature: input.temperature } : {} }
18372
18420
  );
18373
18421
  const done = await waitForJob(ctx, job.id, waitMs, 500);
18422
+ if (done.status === "running" || done.status === "queued") {
18423
+ throw new ToolError(`The model is still working on a lender's computer (job ${done.id}). It is not lost: check later with job_status, or "bitpull ask" again.`);
18424
+ }
18374
18425
  if (done.status !== "done") throw new ToolError(`Model job ${done.status}${done.error ? `: ${done.error}` : ""} (id ${done.id})`);
18375
18426
  const result = done.result;
18376
18427
  return { model, content: result.content, cost: done.cost, jobId: done.id, usage: result.usage };
@@ -18685,14 +18736,14 @@ async function connectTool(id) {
18685
18736
 
18686
18737
  // apps/agent/src/doctor.ts
18687
18738
  init_define_BITPULL_UI_I18N();
18688
- var import_node_os8 = require("node:os");
18739
+ var import_node_os9 = require("node:os");
18689
18740
 
18690
18741
  // apps/agent/src/setup.ts
18691
18742
  init_define_BITPULL_UI_I18N();
18692
- var import_node_child_process6 = require("node:child_process");
18743
+ var import_node_child_process7 = require("node:child_process");
18693
18744
  var import_node_fs4 = require("node:fs");
18694
18745
  var import_promises13 = require("node:fs/promises");
18695
- var import_node_os7 = require("node:os");
18746
+ var import_node_os8 = require("node:os");
18696
18747
  var import_node_path11 = require("node:path");
18697
18748
  var import_node_stream2 = require("node:stream");
18698
18749
  var import_promises14 = require("node:stream/promises");
@@ -18700,18 +18751,61 @@ var import_node_util5 = require("node:util");
18700
18751
 
18701
18752
  // apps/agent/src/worker.ts
18702
18753
  init_define_BITPULL_UI_I18N();
18703
- var import_node_child_process5 = require("node:child_process");
18754
+ var import_node_child_process6 = require("node:child_process");
18704
18755
  var import_node_crypto6 = require("node:crypto");
18705
18756
  var import_promises12 = require("node:fs/promises");
18706
- var import_node_os6 = require("node:os");
18757
+ var import_node_os7 = require("node:os");
18707
18758
  var import_node_path10 = require("node:path");
18708
18759
  var import_node_util4 = require("node:util");
18709
- var exec4 = (0, import_node_util4.promisify)(import_node_child_process5.execFile);
18760
+
18761
+ // apps/agent/src/awake.ts
18762
+ init_define_BITPULL_UI_I18N();
18763
+ var import_node_child_process5 = require("node:child_process");
18764
+ var import_node_os6 = require("node:os");
18765
+ function sleepGuardCommand(os = (0, import_node_os6.platform)()) {
18766
+ if (os === "darwin") return ["caffeinate", ["-i"]];
18767
+ if (os === "win32") {
18768
+ const script = [
18769
+ `$sig = '[DllImport("kernel32.dll")] public static extern uint SetThreadExecutionState(uint esFlags);'`,
18770
+ "Add-Type -MemberDefinition $sig -Name Power -Namespace BitPull",
18771
+ "[BitPull.Power]::SetThreadExecutionState(0x80000001) | Out-Null",
18772
+ "while ($true) { Start-Sleep -Seconds 60 }"
18773
+ ].join("; ");
18774
+ return ["powershell.exe", ["-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")]];
18775
+ }
18776
+ if (os === "linux") return ["systemd-inhibit", ["--what=sleep:idle", "--who=BitPull", "--why=Running a job for the BitPull network", "--mode=block", "sleep", "infinity"]];
18777
+ return null;
18778
+ }
18779
+ var guards = /* @__PURE__ */ new Set();
18780
+ process.on("exit", () => guards.forEach((g) => g.kill()));
18781
+ function preventSleep() {
18782
+ const cmd = sleepGuardCommand();
18783
+ if (!cmd) return () => {
18784
+ };
18785
+ let child = null;
18786
+ try {
18787
+ child = (0, import_node_child_process5.spawn)(cmd[0], cmd[1], { stdio: "ignore", windowsHide: true });
18788
+ child.on("error", () => guards.delete(child));
18789
+ guards.add(child);
18790
+ } catch {
18791
+ return () => {
18792
+ };
18793
+ }
18794
+ return () => {
18795
+ if (!child) return;
18796
+ guards.delete(child);
18797
+ child.kill();
18798
+ child = null;
18799
+ };
18800
+ }
18801
+
18802
+ // apps/agent/src/worker.ts
18803
+ var exec4 = (0, import_node_util4.promisify)(import_node_child_process6.execFile);
18710
18804
  var MAX_STREAM_BYTES = 1e6;
18711
18805
  var MAX_OUTPUT_BYTES = 5e6;
18712
18806
  var KEY_WAIT_MS = 12e4;
18713
18807
  async function idleSeconds() {
18714
- if ((0, import_node_os6.platform)() !== "darwin") return null;
18808
+ if ((0, import_node_os7.platform)() !== "darwin") return null;
18715
18809
  try {
18716
18810
  const { stdout } = await exec4("ioreg", ["-c", "IOHIDSystem"]);
18717
18811
  const m = /"HIDIdleTime" = (\d+)/.exec(stdout);
@@ -18722,8 +18816,8 @@ async function idleSeconds() {
18722
18816
  }
18723
18817
  async function onAcPower() {
18724
18818
  try {
18725
- if ((0, import_node_os6.platform)() === "darwin") return (await exec4("pmset", ["-g", "batt"])).stdout.includes("AC Power");
18726
- if ((0, import_node_os6.platform)() === "linux") {
18819
+ if ((0, import_node_os7.platform)() === "darwin") return (await exec4("pmset", ["-g", "batt"])).stdout.includes("AC Power");
18820
+ if ((0, import_node_os7.platform)() === "linux") {
18727
18821
  const dir = "/sys/class/power_supply";
18728
18822
  for (const e of await (0, import_promises12.readdir)(dir)) {
18729
18823
  if (/^(AC|ADP)/.test(e)) return (await (0, import_promises12.readFile)((0, import_node_path10.join)(dir, e, "online"), "utf8")).trim() === "1";
@@ -18763,8 +18857,8 @@ async function detectCapacity(rules, ollamaUrl, sandbox) {
18763
18857
  const serving = rules.serveModels && !await aiLimitReached(rules.aiLimits);
18764
18858
  const installed = serving ? [...await ollamaModels(ollamaUrl), ...await lemonade.models()].filter(isShareable) : [];
18765
18859
  return {
18766
- cpus: Math.min(rules.maxCpus, (0, import_node_os6.cpus)().length),
18767
- memoryMb: Math.min(rules.maxMemoryMb, Math.floor((0, import_node_os6.totalmem)() / 1024 / 1024 / 2)),
18860
+ cpus: Math.min(rules.maxCpus, (0, import_node_os7.cpus)().length),
18861
+ memoryMb: Math.min(rules.maxMemoryMb, Math.floor((0, import_node_os7.totalmem)() / 1024 / 1024 / 2)),
18768
18862
  gpu: rules.gpu,
18769
18863
  models: rules.models.length ? installed.filter((m) => rules.models.includes(m)) : installed,
18770
18864
  containers: rules.containers && !!sandbox,
@@ -18814,7 +18908,7 @@ function inputFiles(spec) {
18814
18908
  }
18815
18909
  function runWithInput(cmd, args, input) {
18816
18910
  return new Promise((resolve, reject) => {
18817
- const child = (0, import_node_child_process5.spawn)(cmd, args, { stdio: ["pipe", "ignore", "pipe"], windowsHide: true });
18911
+ const child = (0, import_node_child_process6.spawn)(cmd, args, { stdio: ["pipe", "ignore", "pipe"], windowsHide: true });
18818
18912
  let stderr = "";
18819
18913
  child.stderr.on("data", (c) => stderr += c.toString("utf8"));
18820
18914
  child.on("error", reject);
@@ -18844,10 +18938,10 @@ async function runDockerJob(spec, sandbox, signal) {
18844
18938
  const stdout = capped();
18845
18939
  const stderr = capped();
18846
18940
  const exitCode = await new Promise((resolve, reject) => {
18847
- const child = (0, import_node_child_process5.spawn)("docker", ["start", "-a", name], { stdio: ["ignore", "pipe", "pipe"], windowsHide: true });
18941
+ const child = (0, import_node_child_process6.spawn)("docker", ["start", "-a", name], { stdio: ["ignore", "pipe", "pipe"], windowsHide: true });
18848
18942
  child.stdout.on("data", (c) => stdout.push(c));
18849
18943
  child.stderr.on("data", (c) => stderr.push(c));
18850
- const kill = () => (0, import_node_child_process5.spawn)("docker", ["kill", name], { stdio: "ignore", windowsHide: true });
18944
+ const kill = () => (0, import_node_child_process6.spawn)("docker", ["kill", name], { stdio: "ignore", windowsHide: true });
18851
18945
  const timer = setTimeout(kill, spec.timeoutSec * 1e3);
18852
18946
  signal.addEventListener("abort", kill, { once: true });
18853
18947
  child.on("error", reject);
@@ -18858,7 +18952,7 @@ async function runDockerJob(spec, sandbox, signal) {
18858
18952
  });
18859
18953
  const seconds = (Date.now() - started) / 1e3;
18860
18954
  if (signal.aborted) return { ok: false, usage: { seconds }, error: "stopped_by_owner" };
18861
- outDir = await (0, import_promises12.mkdtemp)((0, import_node_path10.join)((0, import_node_os6.tmpdir)(), "bitpull-out-"));
18955
+ outDir = await (0, import_promises12.mkdtemp)((0, import_node_path10.join)((0, import_node_os7.tmpdir)(), "bitpull-out-"));
18862
18956
  await docker(["cp", `${name}:/work/out/.`, outDir]).catch(() => void 0);
18863
18957
  return {
18864
18958
  ok: true,
@@ -18874,7 +18968,7 @@ async function runDockerJob(spec, sandbox, signal) {
18874
18968
  }
18875
18969
  }
18876
18970
  async function runFolderJob(spec, sandbox, signal) {
18877
- const workdir = await (0, import_promises12.mkdtemp)((0, import_node_path10.join)((0, import_node_os6.tmpdir)(), "bitpull-job-"));
18971
+ const workdir = await (0, import_promises12.mkdtemp)((0, import_node_path10.join)((0, import_node_os7.tmpdir)(), "bitpull-job-"));
18878
18972
  const name = `bitpull-${(0, import_node_crypto6.randomBytes)(6).toString("hex")}`;
18879
18973
  let started = Date.now();
18880
18974
  try {
@@ -18893,10 +18987,10 @@ async function runFolderJob(spec, sandbox, signal) {
18893
18987
  const stdout = capped();
18894
18988
  const stderr = capped();
18895
18989
  const exitCode = await new Promise((resolve, reject) => {
18896
- const child = (0, import_node_child_process5.spawn)(sandbox.cli, sandboxArgs(sandbox, name, workdir, spec), { stdio: ["ignore", "pipe", "pipe"] });
18990
+ const child = (0, import_node_child_process6.spawn)(sandbox.cli, sandboxArgs(sandbox, name, workdir, spec), { stdio: ["ignore", "pipe", "pipe"] });
18897
18991
  child.stdout.on("data", (c) => stdout.push(c));
18898
18992
  child.stderr.on("data", (c) => stderr.push(c));
18899
- const kill = () => (0, import_node_child_process5.spawn)(sandbox.cli, killArgs(sandbox, name), { stdio: "ignore" });
18993
+ const kill = () => (0, import_node_child_process6.spawn)(sandbox.cli, killArgs(sandbox, name), { stdio: "ignore" });
18900
18994
  const timer = setTimeout(kill, spec.timeoutSec * 1e3);
18901
18995
  signal.addEventListener("abort", kill, { once: true });
18902
18996
  child.on("error", reject);
@@ -18930,6 +19024,8 @@ async function executeJob(ctx, job, sandbox, signal, keyWaitMs = KEY_WAIT_MS) {
18930
19024
  const key = await waitForKey(ctx, job.jobId, signal, keyWaitMs);
18931
19025
  if (!key) return ctx.client.reportJob(job.jobId, { nodeId: ctx.config.nodeId, ok: false, error: signal.aborted ? "stopped_by_owner" : "key_timeout" });
18932
19026
  let outcome;
19027
+ const release = ctx.config.lending.keepAwake !== false ? preventSleep() : () => {
19028
+ };
18933
19029
  try {
18934
19030
  const secret = decryptJson(key, job.payload);
18935
19031
  const spec = { ...job.spec, ...secret };
@@ -18942,6 +19038,8 @@ async function executeJob(ctx, job, sandbox, signal, keyWaitMs = KEY_WAIT_MS) {
18942
19038
  }
18943
19039
  } catch (err) {
18944
19040
  outcome = { ok: false, usage: {}, error: `bad_payload: ${err.message}` };
19041
+ } finally {
19042
+ release();
18945
19043
  }
18946
19044
  if (!outcome.ok) return ctx.client.reportJob(job.jobId, { nodeId: ctx.config.nodeId, ok: false, usage: outcome.usage, error: outcome.error });
18947
19045
  return ctx.client.reportJob(job.jobId, {
@@ -18997,10 +19095,10 @@ function startWorker(ctx, opts = {}) {
18997
19095
  }
18998
19096
 
18999
19097
  // apps/agent/src/setup.ts
19000
- var exec5 = (0, import_node_util5.promisify)(import_node_child_process6.execFile);
19098
+ var exec5 = (0, import_node_util5.promisify)(import_node_child_process7.execFile);
19001
19099
  function windowsCandidates() {
19002
19100
  const pf = [process.env.ProgramW6432, process.env.ProgramFiles, process.env["ProgramFiles(x86)"], "C:\\Program Files"].filter(Boolean);
19003
- const local = process.env.LOCALAPPDATA ?? (0, import_node_path11.join)((0, import_node_os7.homedir)(), "AppData", "Local");
19101
+ const local = process.env.LOCALAPPDATA ?? (0, import_node_path11.join)((0, import_node_os8.homedir)(), "AppData", "Local");
19004
19102
  return {
19005
19103
  dockerBin: [...pf.map((p) => (0, import_node_path11.join)(p, "Docker", "Docker", "resources", "bin")), (0, import_node_path11.join)(local, "Programs", "Docker", "Docker", "resources", "bin"), (0, import_node_path11.join)(local, "Docker", "Docker", "resources", "bin")],
19006
19104
  dockerApp: [...pf.map((p) => (0, import_node_path11.join)(p, "Docker", "Docker", "Docker Desktop.exe")), (0, import_node_path11.join)(local, "Programs", "Docker", "Docker", "Docker Desktop.exe"), (0, import_node_path11.join)(local, "Docker", "Docker", "Docker Desktop.exe")],
@@ -19020,8 +19118,8 @@ async function windowsRegistryPath() {
19020
19118
  return [...await read("HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"), ...await read("HKCU\\Environment")];
19021
19119
  }
19022
19120
  function extendPath(more = []) {
19023
- const home = (0, import_node_os7.homedir)();
19024
- const extra = (0, import_node_os7.platform)() === "win32" ? [...windowsCandidates().dockerBin, ...windowsCandidates().ollama] : [
19121
+ const home = (0, import_node_os8.homedir)();
19122
+ const extra = (0, import_node_os8.platform)() === "win32" ? [...windowsCandidates().dockerBin, ...windowsCandidates().ollama] : [
19025
19123
  "/usr/local/bin",
19026
19124
  "/opt/homebrew/bin",
19027
19125
  "/Applications/Docker.app/Contents/Resources/bin",
@@ -19035,7 +19133,7 @@ function extendPath(more = []) {
19035
19133
  process.env.PATH = [...current, ...[...more, ...extra].filter((p) => p && !current.includes(p))].join(import_node_path11.delimiter);
19036
19134
  }
19037
19135
  async function refreshPath() {
19038
- extendPath((0, import_node_os7.platform)() === "win32" ? await windowsRegistryPath() : []);
19136
+ extendPath((0, import_node_os8.platform)() === "win32" ? await windowsRegistryPath() : []);
19039
19137
  }
19040
19138
  function sandboxProblem() {
19041
19139
  const sb = lastSandboxCheck();
@@ -19055,7 +19153,7 @@ async function has(cmd, args = ["--version"], label = cmd) {
19055
19153
  return false;
19056
19154
  }
19057
19155
  }
19058
- function installersFor(os = (0, import_node_os7.platform)(), cpu = (0, import_node_os7.arch)()) {
19156
+ function installersFor(os = (0, import_node_os8.platform)(), cpu = (0, import_node_os8.arch)()) {
19059
19157
  const mac = cpu === "arm64" ? "arm64" : "amd64";
19060
19158
  if (os === "darwin") {
19061
19159
  return {
@@ -19085,8 +19183,8 @@ function recommendedModel(ramGb) {
19085
19183
  var tasks = /* @__PURE__ */ new Map();
19086
19184
  var listTasks = () => [...tasks.values()];
19087
19185
  async function setupStatus(ollamaUrl) {
19088
- const os = (0, import_node_os7.platform)();
19089
- const ramGb = Math.round((0, import_node_os7.totalmem)() / 1024 ** 3);
19186
+ const os = (0, import_node_os8.platform)();
19187
+ const ramGb = Math.round((0, import_node_os8.totalmem)() / 1024 ** 3);
19090
19188
  await refreshPath();
19091
19189
  const dockerCli = await has("docker", ["--version"], "docker");
19092
19190
  const dockerApp = os === "darwin" && (0, import_node_fs4.existsSync)("/Applications/Docker.app") || os === "win32" && windowsCandidates().dockerApp.some((p) => (0, import_node_fs4.existsSync)(p));
@@ -19096,7 +19194,7 @@ async function setupStatus(ollamaUrl) {
19096
19194
  const ollamaInstalled = ollamaRunning || await has("ollama") || os === "darwin" && (0, import_node_fs4.existsSync)("/Applications/Ollama.app") || os === "win32" && windowsCandidates().ollama.some((d) => (0, import_node_fs4.existsSync)((0, import_node_path11.join)(d, "ollama.exe")));
19097
19195
  return {
19098
19196
  os,
19099
- arch: (0, import_node_os7.arch)(),
19197
+ arch: (0, import_node_os8.arch)(),
19100
19198
  ramGb,
19101
19199
  docker: {
19102
19200
  installed: dockerInstalled,
@@ -19123,8 +19221,8 @@ function openInBrowser(url) {
19123
19221
  openFile(url);
19124
19222
  }
19125
19223
  function openFile(path) {
19126
- const [cmd, args] = (0, import_node_os7.platform)() === "darwin" ? ["open", [path]] : (0, import_node_os7.platform)() === "win32" ? ["cmd", ["/c", "start", "", path]] : ["xdg-open", [path]];
19127
- (0, import_node_child_process6.spawn)(cmd, args, { stdio: "ignore", detached: true }).unref();
19224
+ const [cmd, args] = (0, import_node_os8.platform)() === "darwin" ? ["open", [path]] : (0, import_node_os8.platform)() === "win32" ? ["cmd", ["/c", "start", "", path]] : ["xdg-open", [path]];
19225
+ (0, import_node_child_process7.spawn)(cmd, args, { stdio: "ignore", detached: true }).unref();
19128
19226
  }
19129
19227
  function downloadInstaller(inst) {
19130
19228
  if (inst.kind !== "download" || !inst.url || !inst.fileName) throw new Error("not downloadable");
@@ -19132,7 +19230,7 @@ function downloadInstaller(inst) {
19132
19230
  tasks.set(task.id, task);
19133
19231
  void (async () => {
19134
19232
  try {
19135
- const dir = (0, import_node_path11.join)((0, import_node_os7.homedir)(), "Downloads");
19233
+ const dir = (0, import_node_path11.join)((0, import_node_os8.homedir)(), "Downloads");
19136
19234
  await (0, import_promises13.mkdir)(dir, { recursive: true });
19137
19235
  const dest = (0, import_node_path11.join)(dir, inst.fileName);
19138
19236
  const res = await fetch(inst.url, { redirect: "follow" });
@@ -19154,16 +19252,16 @@ function downloadInstaller(inst) {
19154
19252
  return task;
19155
19253
  }
19156
19254
  function startApp(id) {
19157
- if ((0, import_node_os7.platform)() === "darwin") (0, import_node_child_process6.spawn)("open", ["-a", id === "docker" ? "Docker" : "Ollama"], { stdio: "ignore", detached: true }).unref();
19158
- else if ((0, import_node_os7.platform)() === "win32") {
19255
+ if ((0, import_node_os8.platform)() === "darwin") (0, import_node_child_process7.spawn)("open", ["-a", id === "docker" ? "Docker" : "Ollama"], { stdio: "ignore", detached: true }).unref();
19256
+ else if ((0, import_node_os8.platform)() === "win32") {
19159
19257
  const c = windowsCandidates();
19160
19258
  const exe = id === "docker" ? c.dockerApp.find((p) => (0, import_node_fs4.existsSync)(p)) ?? c.dockerApp[0] : (0, import_node_path11.join)(c.ollama.find((d) => (0, import_node_fs4.existsSync)((0, import_node_path11.join)(d, "ollama app.exe"))) ?? c.ollama[0], "ollama app.exe");
19161
- (0, import_node_child_process6.spawn)("cmd", ["/c", "start", "", exe], { stdio: "ignore", detached: true }).unref();
19162
- } else if (id === "ollama") (0, import_node_child_process6.spawn)("ollama", ["serve"], { stdio: "ignore", detached: true }).unref();
19259
+ (0, import_node_child_process7.spawn)("cmd", ["/c", "start", "", exe], { stdio: "ignore", detached: true }).unref();
19260
+ } else if (id === "ollama") (0, import_node_child_process7.spawn)("ollama", ["serve"], { stdio: "ignore", detached: true }).unref();
19163
19261
  else throw new Error("On Linux start Docker with: sudo systemctl start docker");
19164
19262
  }
19165
19263
  function currentPlatform() {
19166
- return `${(0, import_node_os7.platform)()}-${(0, import_node_os7.arch)()}`;
19264
+ return `${(0, import_node_os8.platform)()}-${(0, import_node_os8.arch)()}`;
19167
19265
  }
19168
19266
  function installLemonadeTask() {
19169
19267
  const task = { id: "download-lemonade", label: "Installing the image, speech and music engine", state: "running", progress: 0 };
@@ -19212,10 +19310,10 @@ function pullModel(ollamaUrl, name) {
19212
19310
 
19213
19311
  // apps/agent/src/doctor.ts
19214
19312
  async function doctor(cfg) {
19215
- const os = (0, import_node_os8.platform)();
19313
+ const os = (0, import_node_os9.platform)();
19216
19314
  const st = await setupStatus(cfg.ollamaUrl);
19217
19315
  const tools = await toolStatus().catch(() => []);
19218
- const reqs = requirementsFor(os, (0, import_node_os8.arch)() === "arm64" ? "arm64" : "x64");
19316
+ const reqs = requirementsFor(os, (0, import_node_os9.arch)() === "arm64" ? "arm64" : "x64");
19219
19317
  const items = reqs.map((r) => {
19220
19318
  const item = (status, problem = null) => ({ ...r, status, problem });
19221
19319
  switch (r.id) {
@@ -19239,7 +19337,7 @@ async function doctor(cfg) {
19239
19337
  });
19240
19338
  const missingRequired = items.filter((i) => i.level === "required" && i.status !== "ok");
19241
19339
  return {
19242
- computer: { os, arch: (0, import_node_os8.arch)(), ramGb: st.ramGb },
19340
+ computer: { os, arch: (0, import_node_os9.arch)(), ramGb: st.ramGb },
19243
19341
  ready: missingRequired.length === 0,
19244
19342
  lending: { enabled: cfg.lending.enabled, paused: cfg.lending.paused },
19245
19343
  items,
@@ -19255,7 +19353,7 @@ async function doctor(cfg) {
19255
19353
  }
19256
19354
 
19257
19355
  // apps/agent/src/control.ts
19258
- var APP_VERSION = true ? "0.1.13" : "dev";
19356
+ var APP_VERSION = true ? "0.1.15" : "dev";
19259
19357
  var UPDATE_MANIFEST = "https://github.com/SamuealPK/bitpull-releases/releases/latest/download/latest.json";
19260
19358
  var inDesktopApp = () => /bitpull-agent(\.exe)?$/i.test(process.execPath);
19261
19359
  function newerVersion(a, b) {
@@ -19275,12 +19373,14 @@ async function dashboardStrings(lang) {
19275
19373
  return (0, import_promises15.readFile)((0, import_node_path12.join)((0, import_node_path12.dirname)((0, import_node_url.fileURLToPath)(__bitpull_import_meta_url)), "..", "ui", "i18n", `${lang}.json`), "utf8").catch(() => null);
19276
19374
  }
19277
19375
  async function dashboardHtml() {
19278
- if (true) return '<!doctype html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<meta name="viewport" content="width=device-width, initial-scale=1">\n<title>BitPull</title>\n<style>\n :root { --bg:#fafaf7; --surface:#fff; --text:#1d1d1b; --muted:#6b6b66; --line:#e4e2dc; --accent:#2f5bd3; --accent-ink:#fff; --good:#1f7a4d; --warn:#9a6700; --bad:#b3261e; }\n @media (prefers-color-scheme: dark) { :root { --bg:#151514; --surface:#1e1e1c; --text:#ecebe6; --muted:#a2a19b; --line:#33322f; --accent:#7c9cf2; --accent-ink:#10131c; --good:#5cc28f; --warn:#e3b341; --bad:#f2867c; } }\n * { box-sizing: border-box; }\n body { margin:0; background:var(--bg); color:var(--text); font:15px/1.5 system-ui,-apple-system,"Segoe UI","Noto Sans",sans-serif; }\n header { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:center; padding:16px; border-bottom:1px solid var(--line); background:var(--surface); }\n header h1 { font-size:18px; margin:0; }\n .head-right { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }\n .pills { display:flex; flex-wrap:wrap; gap:8px; }\n .pill { border:1px solid var(--line); border-radius:999px; padding:3px 10px; font-size:13px; color:var(--muted); }\n .pill.good { color:var(--good); border-color:currentColor; } .pill.warn { color:var(--warn); border-color:currentColor; } .pill.bad { color:var(--bad); border-color:currentColor; }\n main { max-width:1100px; margin:0 auto; padding:16px; display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); }\n section { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:16px; min-width:0; }\n section h2 { font-size:16px; margin:0 0 4px; } section p.hint { margin:0 0 12px; color:var(--muted); font-size:13px; }\n .stat { font-size:28px; font-weight:700; }\n label { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:6px 0 2px; }\n .field { border-bottom:1px solid var(--line); padding-bottom:6px; }\n .field p.help { margin:0; color:var(--muted); font-size:12.5px; line-height:1.45; }\n .check-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--line); }\n .check-row .status { font-size:13px; color:var(--muted); }\n .ok { color:var(--good); font-weight:600; } .missing { color:var(--warn); font-weight:600; }\n progress { width:100%; height:8px; }\n input[type=number], input[type=text], select { width:110px; padding:6px 8px; border:1px solid var(--line); border-radius:6px; background:var(--bg); color:var(--text); font:inherit; }\n select#lang { width:auto; }\n input.wide { width:100%; }\n button { background:var(--accent); color:var(--accent-ink); border:0; border-radius:8px; padding:8px 12px; font:inherit; font-weight:600; cursor:pointer; }\n button.secondary { background:transparent; color:var(--text); border:1px solid var(--line); }\n button:disabled { opacity:.6; cursor:progress; }\n button.danger { background:var(--bad); color:#fff; }\n .row { display:flex; gap:8px; align-items:center; margin-top:10px; flex-wrap:wrap; }\n ul.list { list-style:none; padding:0; margin:8px 0 0; }\n ul.list li { display:flex; justify-content:space-between; gap:8px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); font-size:14px; }\n ul.list li span.path { overflow-wrap:anywhere; }\n #ai-limits { overflow-x:auto; } table.limits { border-collapse:collapse; } table.limits td, table.limits th { padding:4px 8px; text-align:start; }\n code { font:13px ui-monospace,Menlo,monospace; overflow-wrap:anywhere; direction:ltr; unicode-bidi:embed; }\n textarea { width:100%; min-height:70px; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); font:inherit; }\n pre { white-space:pre-wrap; background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:10px; margin:8px 0 0; max-height:260px; overflow:auto; font-size:13px; }\n .msg { min-height:1.4em; font-size:13px; margin-top:6px; } .msg.error { color:var(--bad); } .msg.ok { color:var(--good); }\n .full { grid-column:1/-1; }\n .live { display:flex; flex-wrap:wrap; gap:4px 14px; align-items:center; padding:8px 16px; font-size:13px; color:var(--muted); border-bottom:1px solid var(--line); background:var(--surface); }\n .live strong { color:var(--text); } .live .dot { width:8px; height:8px; border-radius:50%; background:var(--good); }\n #locked { max-width:520px; margin:80px auto; padding:0 16px; text-align:center; }\n [hidden] { display:none !important; }\n #tip { position:fixed; z-index:50; max-width:320px; padding:8px 10px; border-radius:8px; background:var(--text); color:var(--bg); font-size:13px; line-height:1.45; box-shadow:0 4px 16px rgba(0,0,0,.18); pointer-events:none; }\n</style>\n</head>\n<body>\n<div id="locked" hidden>\n <h1>BitPull</h1>\n <p data-i18n="locked.text"></p>\n</div>\n<div id="app" hidden>\n<header>\n <h1 data-i18n="app.title"></h1>\n <div class="head-right">\n <div class="pills" id="pills"></div>\n <select id="lang" aria-label="Language" data-tip="tip.lang"></select>\n </div>\n</header>\n<div class="live" id="live" hidden></div>\n<main>\n <section>\n <h2 data-i18n="credits.title"></h2>\n <div class="stat" id="balance">\u2013</div>\n <p class="hint" id="plan"></p>\n <div class="row">\n <button data-buy="base" class="secondary" data-i18n="buy.base" data-tip="tip.buy.base"></button>\n <button data-buy="pro" class="secondary" data-i18n="buy.pro" data-tip="tip.buy.pro"></button>\n <button data-buy="recharge" class="secondary" data-i18n="buy.recharge" data-tip="tip.buy.recharge"></button>\n </div>\n <div class="msg" id="buy-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="lend.title"></h2>\n <p class="hint" data-i18n="lend.hint"></p>\n <div class="stat" id="worker-state">\u2013</div>\n <p class="hint" id="worker-detail"></p>\n <p class="status" id="worker-visible"></p>\n <div class="row"><button id="pause" class="danger"></button></div>\n <div class="msg" id="pause-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="setup.title"></h2>\n <p class="hint" data-i18n="setup.hint"></p>\n <div id="setup"><p class="hint" data-i18n="setup.checking"></p></div>\n <div class="msg" id="setup-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="models.title"></h2>\n <p class="hint" data-i18n="models.hint"></p>\n <div id="ai-models"><p class="hint" data-i18n="setup.checking"></p></div>\n <h3 data-i18n="limits.title"></h3>\n <p class="hint" data-i18n="limits.hint"></p>\n <div id="ai-limits"></div>\n <div class="row"><button id="save-limits" data-i18n="limits.save" data-tip="tip.limits.save"></button></div>\n <div class="msg" id="models-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="rules.title"></h2>\n <form id="rules">\n <div class="field"><label><span data-i18n="rules.enabled"></span> <input type="checkbox" name="enabled"></label><p class="help" data-i18n="rules.enabled.help"></p></div>\n <div class="field"><label><span data-i18n="rules.cpus"></span> <input type="number" name="maxCpus" min="0.25" step="0.25"></label><p class="help" data-i18n="rules.cpus.help"></p></div>\n <div class="field"><label><span data-i18n="rules.memory"></span> <input type="number" name="maxMemoryMb" min="256" step="256"></label><p class="help" data-i18n="rules.memory.help"></p></div>\n <div class="field"><label><span data-i18n="rules.gpu"></span> <select name="gpu"><option value="none" data-i18n="rules.gpu.none"></option><option value="consumer" data-i18n="rules.gpu.consumer"></option><option value="high" data-i18n="rules.gpu.high"></option><option value="datacenter" data-i18n="rules.gpu.datacenter"></option></select></label><p class="help" data-i18n="rules.gpu.help"></p></div>\n <div class="field"><label><span data-i18n="rules.containers"></span> <input type="checkbox" name="containers"></label><p class="help" data-i18n="rules.containers.help"></p></div>\n <div class="field"><label><span data-i18n="rules.models"></span> <input type="checkbox" name="serveModels"></label><p class="help" data-i18n="rules.models.help"></p></div>\n <div class="field"><label><span data-i18n="rules.idle"></span> <input type="number" name="idleMinutes" min="0"></label><p class="help" data-i18n="rules.idle.help"></p></div>\n <div class="field"><label><span data-i18n="rules.ac"></span> <input type="checkbox" name="onlyOnAc"></label><p class="help" data-i18n="rules.ac.help"></p></div>\n <div class="field"><label><span data-i18n="rules.hours"></span> <span><input type="number" name="hourFrom" min="0" max="23" style="width:56px"> <input type="number" name="hourTo" min="0" max="24" style="width:56px"></span></label><p class="help" data-i18n="rules.hours.help"></p></div>\n <div class="field"><label><span data-i18n="rules.cache"></span> <input type="number" name="cacheMax" min="0"></label><p class="help" data-i18n="rules.cache.help"></p></div>\n <div class="row"><button type="submit" data-i18n="rules.save" data-tip="tip.rules.save"></button></div>\n <div class="msg" id="rules-msg"></div>\n </form>\n </section>\n\n <section>\n <h2 data-i18n="folders.title"></h2>\n <p class="hint" data-i18n="folders.hint"></p>\n <div class="row"><input class="wide" type="text" id="folder-path" data-i18n-placeholder="folders.placeholder"><button id="folder-add" data-i18n="folders.add" data-tip="tip.folder.add"></button></div>\n <ul class="list" id="folders"></ul>\n <div class="msg" id="folder-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="repos.title"></h2>\n <p class="hint" data-i18n="repos.hint"></p>\n <ul class="list" id="repos"></ul>\n <div class="msg" id="repos-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="ask.title"></h2>\n <p class="hint" id="models-hint"></p>\n <textarea id="prompt" data-i18n-placeholder="ask.placeholder"></textarea>\n <div class="row">\n <select id="tier" data-tip="tip.tier"><option value="small" data-i18n="ask.small"></option><option value="medium" data-i18n="ask.medium"></option><option value="large" data-i18n="ask.large"></option></select>\n <button id="ask" data-i18n="ask.button" data-tip="tip.ask"></button>\n </div>\n <pre id="answer" hidden></pre>\n </section>\n\n <section class="full">\n <h2 data-i18n="tools.title"></h2>\n <p class="hint" data-i18n="tools.hint"></p>\n <div id="tools"></div>\n <div class="msg" id="tools-msg"></div>\n <p class="hint" style="margin-top:12px"><span data-i18n="tools.openai"></span> <code id="oai-url"></code> \xB7 <span data-i18n="tools.key"></span> <code id="oai-key">\u2022\u2022\u2022\u2022\u2022\u2022</code> <button class="secondary" id="show-key" data-i18n="tools.show" data-tip="tip.show_key"></button></p>\n </section>\n\n <section class="full">\n <h2 data-i18n="update.title"></h2>\n <p class="hint" id="update-info"></p>\n <div class="row"><button id="update-btn" data-i18n="update.button" data-tip="tip.update"></button></div>\n <div class="msg" id="update-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="jobs.title"></h2>\n <ul class="list" id="jobs"></ul>\n </section>\n</main>\n</div>\n<script>\nconst LANGS = { en: "English", zh: "\u4E2D\u6587", hi: "\u0939\u093F\u0928\u094D\u0926\u0940", es: "Espa\xF1ol", ar: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", fr: "Fran\xE7ais", bn: "\u09AC\u09BE\u0982\u09B2\u09BE", pt: "Portugu\xEAs", ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", id: "Bahasa Indonesia", de: "Deutsch", it: "Italiano" };\nconst $ = (id) => document.getElementById(id);\nconst esc = (s) => String(s ?? "").replace(/[&<>"\']/g, (c) => ({ "&":"&amp;","<":"&lt;",">":"&gt;",\'"\':"&quot;","\'":"&#39;" })[c]);\n\nconst params = new URLSearchParams(location.hash.slice(1));\nlet token = params.get("token");\nconst langFromApp = params.get("lang");\ntry { if (token) sessionStorage.setItem("bp_token", token); else token = sessionStorage.getItem("bp_token"); } catch {}\nif (location.hash) history.replaceState(null, "", "/");\n\n// ---- languages ------------------------------------------------------------------------\nlet lang = "en", dict = {}, fallback = {};\nconst t = (key, vars = {}) => String(dict[key] ?? fallback[key] ?? key).replace(/\\{(\\w+)\\}/g, (_, k) => (vars[k] ?? `{${k}}`));\nconst fmt = (n) => Number(n).toLocaleString(lang, { maximumFractionDigits: 2 });\n\nasync function loadLang(l, save) {\n lang = LANGS[l] ? l : "en";\n if (!Object.keys(fallback).length) fallback = await (await fetch("/i18n/en.json")).json();\n dict = lang === "en" ? fallback : await fetch(`/i18n/${lang}.json`).then((r) => (r.ok ? r.json() : fallback)).catch(() => fallback);\n document.documentElement.lang = lang;\n document.documentElement.dir = lang === "ar" ? "rtl" : "ltr";\n document.querySelectorAll("[data-i18n]").forEach((e) => (e.textContent = t(e.dataset.i18n)));\n document.querySelectorAll("[data-i18n-placeholder]").forEach((e) => (e.placeholder = t(e.dataset.i18nPlaceholder)));\n $("lang").value = lang;\n if (save) api("/api/language", { language: lang }).catch(() => {});\n if (state) render();\n refreshSetup();\n if (update) refreshUpdate();\n if (tools.length) refreshTools();\n}\n$("lang").innerHTML = Object.entries(LANGS).map(([k, v]) => `<option value="${k}">${v}</option>`).join("");\n$("lang").addEventListener("change", (e) => loadLang(e.target.value, true));\n\nasync function api(path, body) {\n const res = await fetch(path, { method: body ? "POST" : "GET", headers: { "content-type": "application/json", "x-bitpull-token": token || "" }, body: body ? JSON.stringify(body) : undefined });\n const data = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(data.error || res.status);\n return data;\n}\n\n// ---- status -----------------------------------------------------------------------------\nlet state = null;\n/** The user changed the lending rules and has not saved them yet. */\nlet rulesDirty = false;\nasync function refresh() {\n try { state = await api("/api/status"); } catch (e) { if (String(e.message) === "unauthorized") { $("app").hidden = true; $("locked").hidden = false; } return; }\n $("app").hidden = false; $("locked").hidden = true;\n render();\n}\n\nfunction render() {\n const s = state, n = s.node;\n const pills = [\n `<span class="pill ${n.online ? "good" : "bad"}">${esc(t(n.online ? "pill.online" : "pill.offline"))}</span>`,\n `<span class="pill ${n.relay === "disconnected" ? "warn" : "good"}">${esc(t(n.relay === "direct" ? "pill.direct" : n.relay === "connected" ? "pill.relay_on" : "pill.relay_off"))}</span>`,\n `<span class="pill">${esc(t("pill.cached", { n: n.cached }))}</span>`,\n ];\n if (s.me) pills.unshift(`<span class="pill">${esc(s.me.email)}</span>`);\n $("pills").innerHTML = pills.join("");\n const net = s.network;\n if (net) {\n $("live").hidden = false;\n $("live").innerHTML = `<span class="dot"></span><strong>${esc(t("net.title"))}</strong>` +\n [["net.online", net.computersOnline], ["net.lending", net.computersLending], ["net.cpu", net.cpus], ["net.ram", net.memoryGb], ["net.gpu", net.gpus.total]]\n .map(([k, v]) => `<span>${esc(t(k, { n: fmt(v) }))}</span>`).join("") +\n `<span title="${esc(net.models.join(", "))}">${esc(t("net.models", { n: fmt(net.models.length) }))}</span><span>${esc(t("net.jobs", { n: fmt(net.jobsRunning) }))}</span>`;\n }\n if (s.me) {\n $("balance").textContent = fmt(s.me.balance);\n $("plan").textContent = t("credits.plan", { plan: t(`plan.${s.me.plan}`), n: s.me.threshold });\n }\n const w = n.worker;\n $("worker-state").textContent = t(`lend.state.${w.state}`);\n $("worker-detail").textContent = w.currentJob\n ? t("lend.running", { kind: t(w.currentJob.kind === "inference" ? "jobs.model" : "jobs.container"), time: new Date(w.currentJob.since).toLocaleTimeString(lang) })\n : t("lend.detail", { reason: w.reason && !w.reason.startsWith("error") ? t(`lend.reason.${w.reason}`) : (w.reason || ""), n: w.completed, cpus: s.capacity.cpus, ram: fmt(s.capacity.memoryMb / 1024) }) +\n (s.capacity.containers ? t("lend.detail.sandbox", { name: w.sandbox || "" }) : "") + (s.capacity.models.length ? t("lend.detail.models", { n: s.capacity.models.length }) : "");\n // What the network actually sees of this computer, and why nothing can run when that is the case.\n const seen = s.me && (s.me.nodes || []).find((x) => x.id === s.nodeId);\n const usable = s.capacity.containers || s.capacity.models.length > 0;\n const tried = (s.sandbox && s.sandbox.tried || []).join(" \xB7 ");\n // Known problems in the person\'s language; anything else as reported by the system.\n const sbProblem = /Docker Hub login is no longer valid/.test(tried) ? t("lend.docker_login") : tried;\n $("worker-visible").className = "status " + (seen && seen.online && seen.capacity && usable ? "ok" : "missing");\n // Lending switched off: say so plainly, with what to do; Pause/Resume does not turn it on.\n $("pause").hidden = !s.lending.enabled;\n if (!s.lending.enabled) {\n $("worker-visible").className = "status missing";\n $("worker-visible").textContent = t("lend.off_hint", { enabled: t("rules.enabled"), rules: t("rules.title"), save: t("rules.save") });\n } else if (s.lendingNow.ok && s.capacity.memoryMb < 1024 && usable) {\n $("worker-visible").className = "status missing";\n $("worker-visible").textContent = t("lend.low_memory", { mb: s.capacity.memoryMb, rules: t("rules.title"), memory: t("rules.memory"), save: t("rules.save") });\n } else $("worker-visible").textContent = s.lending.paused || !s.lendingNow.ok ? ""\n : !usable ? t("lend.unusable", { reason: s.lending.containers ? (sbProblem || t("lend.unusable.docker")) : t("lend.unusable.off") })\n : seen && seen.online && seen.capacity ? t("lend.visible", { cpus: seen.capacity.cpus, ram: fmt(seen.capacity.memoryMb / 1024) })\n : t("lend.invisible");\n $("pause").textContent = t(s.lending.paused ? "lend.resume" : "lend.pause");\n $("pause").dataset.tip = s.lending.paused ? "tip.resume" : "tip.pause";\n $("pause").className = s.lending.paused ? "" : "danger";\n\n // Never overwrite changes the user has not saved yet (on macOS a clicked checkbox does not take focus).\n if (!rulesDirty && (!document.activeElement || !$("rules").contains(document.activeElement))) {\n const f = $("rules").elements, l = s.lending;\n for (const k of ["enabled", "containers", "serveModels", "onlyOnAc"]) f[k].checked = !!l[k];\n for (const k of ["maxCpus", "maxMemoryMb", "idleMinutes"]) f[k].value = l[k];\n f.gpu.value = l.gpu; f.cacheMax.value = s.cacheMax;\n f.hourFrom.value = l.hours ? l.hours[0] : ""; f.hourTo.value = l.hours ? l.hours[1] : "";\n }\n $("folders").innerHTML = s.folders.map((p) => `<li><span class="path">${esc(p)}</span><span><button class="secondary" data-draft="${esc(p)}" data-tip="tip.folder.draft">${esc(t("folders.draft"))}</button> <button data-publish="${esc(p)}" data-tip="tip.folder.publish">${esc(t("folders.publish"))}</button> <button class="secondary" data-unfolder="${esc(p)}" data-tip="tip.folder.remove">${esc(t("folders.remove"))}</button></span></li>`).join("") || `<li class="hint">${esc(t("folders.none"))}</li>`;\n $("repos").innerHTML = s.repos.map((r) => `<li><span><strong>${esc(r.name)}</strong><br><span class="path hint">${esc(r.path)}</span></span><button class="secondary" data-unpublish="${esc(r.id)}" data-tip="tip.repo.withdraw">${esc(t("repos.withdraw"))}</button></li>`).join("") || `<li class="hint">${esc(t("repos.none"))}</li>`;\n $("jobs").innerHTML = s.jobs.map((j) => `<li><span>${esc(t(j.kind === "inference" ? "jobs.model" : "jobs.container"))} \xB7 ${new Date(j.createdAt).toLocaleString(lang)}</span><span>${esc(t(`jobs.status.${j.status}`))}${j.cost != null ? ` \xB7 ${esc(t("jobs.cost", { n: fmt(j.cost) }))}` : ""}</span></li>`).join("") || `<li class="hint">${esc(t("jobs.none"))}</li>`;\n $("oai-url").textContent = s.openaiBaseUrl;\n $("models-hint").textContent = t("ask.offers", { models: s.capacity.models.join(", ") || t("ask.offers_none") });\n}\n\n// ---- every button answers at once, and says clearly what went wrong ----------------------\nfunction explain(err) {\n const m = String((err && err.message) || err);\n if (/Failed to fetch|Load failed|NetworkError/.test(m)) return t("err.agent_down");\n if (/fetch failed|ECONNREFUSED|ENOTFOUND|ETIMEDOUT|coordinator unreachable|timeout/i.test(m)) return t("err.server");\n if (/unauthorized/.test(m)) return t("err.session");\n if (/billing_not_configured/.test(m)) return t("err.billing");\n if (/not found on disk|ENOENT/.test(m)) return t("err.no_folder");\n if (/not a folder/.test(m)) return t("err.not_folder");\n if (/insufficient_credits/.test(m)) return `${t("err.credits")} ${m.replace(/^insufficient_credits:\\s*/, "")}`;\n if (/device_required/.test(m)) return t("err.device");\n if (/No open model is online/.test(m)) return t("err.no_model");\n if (/invalid_request|invalid JSON/.test(m)) return t("err.invalid");\n return m.replace(/^Error:\\s*/, "");\n}\n\n/** Runs a button\'s action: disables it at once, shows "Working\u2026", then the result next to it. */\nasync function act(btn, msgEl, fn, okText) {\n if (btn.disabled) return;\n const label = btn.textContent;\n btn.disabled = true;\n btn.textContent = t("working");\n if (msgEl) { msgEl.className = "msg"; msgEl.textContent = ""; }\n try {\n const r = await fn();\n const text = typeof okText === "function" ? okText(r) : okText;\n if (msgEl && text) { msgEl.className = "msg ok"; msgEl.textContent = text; }\n return r;\n } catch (err) {\n if (msgEl) { msgEl.className = "msg error"; msgEl.textContent = explain(err); }\n } finally {\n btn.disabled = false;\n btn.textContent = label;\n }\n}\n\nfor (const ev of ["input", "change"]) $("rules").addEventListener(ev, () => { rulesDirty = true; });\n\n$("rules").addEventListener("submit", (e) => {\n e.preventDefault();\n const f = e.target.elements;\n if ((f.hourFrom.value === "") !== (f.hourTo.value === "")) { $("rules-msg").className = "msg error"; $("rules-msg").textContent = t("rules.hours_both"); return; }\n const hours = f.hourFrom.value !== "" ? [Number(f.hourFrom.value), Number(f.hourTo.value)] : null;\n act(e.submitter || e.target.querySelector("button"), $("rules-msg"), async () => {\n await api("/api/settings", { cacheMax: Number(f.cacheMax.value), lending: { enabled: f.enabled.checked, maxCpus: Number(f.maxCpus.value), maxMemoryMb: Number(f.maxMemoryMb.value),\n gpu: f.gpu.value, containers: f.containers.checked, serveModels: f.serveModels.checked, idleMinutes: Number(f.idleMinutes.value), onlyOnAc: f.onlyOnAc.checked, hours } });\n rulesDirty = false;\n refresh();\n }, t("rules.saved"));\n});\n\n$("pause").addEventListener("click", () => {\n const pausing = !state.lending.paused;\n act($("pause"), $("pause-msg"), async () => { await api("/api/pause", { paused: pausing }); await refresh(); }, t(pausing ? "lend.paused_ok" : "lend.resumed_ok"));\n});\n\n$("folder-add").addEventListener("click", () => {\n const path = $("folder-path").value.trim();\n if (!path) { $("folder-msg").className = "msg error"; $("folder-msg").textContent = t("folders.need_path"); return; }\n act($("folder-add"), $("folder-msg"), async () => { await api("/api/folders", { path }); $("folder-path").value = ""; await refresh(); }, t("folders.added"));\n});\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || b.closest("#setup")) return;\n const msg = $("folder-msg");\n if (b.dataset.unfolder) act(b, msg, async () => { await api("/api/folders/remove", { path: b.dataset.unfolder }); await refresh(); }, t("folders.removed"));\n if (b.dataset.draft) act(b, msg, () => api("/api/draft", { folder: b.dataset.draft }), (r) => t("folders.drafted", { n: r.draft.modules.length }));\n if (b.dataset.publish) act(b, msg, async () => {\n const r = await api("/api/publish", { folder: b.dataset.publish });\n if (!r.ok) throw new Error(r.errors.join(" ") + (r.secrets ? " " + t("folders.secrets_in", { where: r.secrets.map((x) => t("folders.line", { file: x.file, line: x.line })).join(", ") }) : ""));\n await refresh();\n return r;\n }, (r) => t("folders.published", { name: r.repo.name, n: r.files }));\n if (b.dataset.unpublish) act(b, $("repos-msg"), async () => { await api("/api/repos/remove", { id: b.dataset.unpublish }); await refresh(); }, t("repos.withdrawn"));\n if (b.dataset.buy) act(b, $("buy-msg"), async () => { const { url } = await api("/api/checkout", { product: b.dataset.buy }); await api("/api/open", { url }); }, t("buy.ok"));\n});\n\n$("ask").addEventListener("click", () => {\n const prompt = $("prompt").value.trim();\n const out = $("answer");\n out.hidden = false;\n if (!prompt) { out.textContent = t("ask.empty"); return; }\n out.textContent = t("ask.waiting");\n act($("ask"), null, async () => {\n try { const r = await api("/api/ask", { prompt, tier: $("tier").value }); out.textContent = `${r.content}\\n\\n\u2014 ${r.model} \xB7 ${t("ask.credits", { n: fmt(r.cost) })}`; refresh(); }\n catch (err) { out.textContent = explain(err); }\n });\n});\n$("show-key").addEventListener("click", () => { $("oai-key").textContent = token; });\n\n// ---- "Set up this computer" -------------------------------------------------------------\nasync function refreshSetup() {\n if (!token) return;\n let st;\n try { st = await api("/api/setup"); } catch { return; }\n const task = (id) => st.tasks.find((x) => x.id === id);\n const progress = (x) => x ? (x.state === "running" ? `<progress max="100" value="${x.progress || 0}"></progress><div class="status">${esc(x.label)} ${x.progress ? x.progress + "%" : ""}</div>`\n : x.state === "failed" ? `<div class="status missing">${esc(x.detail || "")}</div>`\n : `<div class="status ok">${esc(x.detail && /[\\\\/]/.test(x.detail) ? t("setup.opened", { file: x.detail.split(/[\\\\/]/).pop() }) : t("setup.done"))}</div>`) : "";\n const NAMES = { docker: "Docker", ollama: "Ollama", "apple-container": "Apple Container", nvidia: "NVIDIA" };\n const install = (id, label) => {\n const inst = st.installers[id];\n if (!inst) return "";\n const vars = esc(JSON.stringify({ name: NAMES[id] || id }));\n if (inst.kind === "download") return `<button data-download="${id}" data-tip="tip.setup.download" data-tip-vars="${vars}">${esc(label)}</button>`;\n if (inst.kind === "page") return `<button class="secondary" data-open="${esc(inst.url)}" data-tip="tip.setup.open" data-tip-vars="${vars}">${esc(label)}</button>`;\n return `<div class="status">${esc(t("setup.terminal"))} <code>${esc(inst.command)}</code></div>`;\n };\n const row = (title, ok, okText, missingText, action, help) =>\n `<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(title)}</strong><div class="status">${esc(help)}</div></div><div style="text-align:end;min-width:220px">${ok ? `<span class="ok">\u2713 ${esc(okText)}</span>` : `<span class="missing">${esc(missingText)}</span><div>${action}</div>`}</div></div>`;\n const rows = [];\n rows.push(row("Docker", st.docker.running, t("setup.status.running"), t(st.docker.installed ? "setup.status.stopped" : "setup.status.missing"),\n st.docker.installed ? `<button data-start="docker" data-tip="tip.setup.start" data-tip-vars="${esc(JSON.stringify({ name: "Docker" }))}">${esc(t("setup.docker.start"))}</button>` : install("docker", t("setup.docker.download")) + progress(task("download-docker")),\n t("setup.docker.help") + (st.docker.problem ? ` \u2014 ${/Docker Hub login is no longer valid/.test(st.docker.problem) ? t("lend.docker_login") : st.docker.problem}` : "")));\n if (st.os === "darwin" && st.arch === "arm64")\n rows.push(row(t("setup.apple.title"), st.appleContainer.installed, t("setup.status.installed"), t("setup.status.missing"), install("apple-container", t("setup.apple.get")), t("setup.apple.help")));\n rows.push(row("Ollama", st.ollama.running, t("setup.status.running"), t(st.ollama.installed ? "setup.status.stopped" : "setup.status.missing"),\n st.ollama.installed ? `<button data-start="ollama" data-tip="tip.setup.start" data-tip-vars="${esc(JSON.stringify({ name: "Ollama" }))}">${esc(t("setup.ollama.start"))}</button>` : install("ollama", t("setup.ollama.download")) + progress(task("download-ollama")),\n t("setup.ollama.help")));\n const rec = st.recommendedModel;\n rows.push(row(t("setup.model.title"), st.ollama.models.length > 0, st.ollama.models.join(", "), t("setup.model.none"),\n st.ollama.running ? `<button data-pull="${esc(rec.name)}" data-tip="tip.setup.pull" data-tip-vars="${esc(JSON.stringify({ model: rec.name, size: rec.sizeGb }))}">${esc(t("setup.model.download", { model: rec.name, size: rec.sizeGb }))}</button>${progress(task("model-" + rec.name))}` : `<div class="status">${esc(t("setup.model.need_ollama"))}</div>`,\n t("setup.model.help", { ram: st.ramGb, model: rec.name })));\n if (st.nvidia !== null)\n rows.push(row(t("setup.nvidia.title"), st.nvidia, t("setup.status.found"), t("setup.status.not_found"), install("nvidia", t("setup.nvidia.get")), t("setup.nvidia.help")));\n $("setup").innerHTML = rows.join("") + `<div class="row"><button class="secondary" id="recheck" data-tip="tip.setup.recheck">${esc(t("setup.recheck"))}</button></div>`;\n renderModels(st, task, progress);\n if (st.tasks.some((x) => x.state === "running")) setTimeout(refreshSetup, 1500);\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#setup")) return;\n const m = $("setup-msg");\n if (b.dataset.download) act(b, m, () => api("/api/setup/download", { id: b.dataset.download }), t("setup.ok.download"));\n if (b.dataset.start) act(b, m, () => api("/api/setup/start", { id: b.dataset.start }), t("setup.ok.start"));\n if (b.dataset.pull) act(b, m, () => api("/api/setup/pull", { model: b.dataset.pull }), t("setup.ok.pull"));\n if (b.dataset.open) act(b, m, () => api("/api/open", { url: b.dataset.open }), t("setup.ok.page"));\n if (b.id === "recheck") act(b, m, () => api("/api/setup/recheck", {}), t("setup.ok.recheck"));\n setTimeout(refreshSetup, 1000);\n});\n\n// ---- open AI models to share, and the lender\'s limits ------------------------------------\nconst TASK_ORDER = ["chat", "vision", "ocr", "translate", "embed", "rerank", "image", "upscale", "stt", "tts", "music"];\nfunction renderModels(st, task, progress) {\n const lem = st.lemonade;\n const engine = !lem.supported\n ? `<span class="missing">${esc(t("models.engine.unsupported"))}</span>`\n : lem.running ? `<span class="ok">\u2713 ${esc(t("setup.status.running"))}</span>`\n : `<button data-lemonade="1" data-tip="tip.models.engine">${esc(t(lem.installed ? "models.engine.repair" : "models.engine.install"))}</button>${progress(task("download-lemonade"))}${lem.error ? `<div class="status missing">${esc(lem.error)}</div>` : ""}`;\n const installed = (m) => m.runtime === "ollama"\n ? st.ollama.models.some((x) => x === m.id || x === m.id + ":latest")\n : lem.models.includes(m.id);\n const ready = (m) => m.runtime === "ollama" ? st.ollama.running : lem.running;\n const html = [`<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(t("models.engine.title"))}</strong><div class="status">${esc(t("models.engine.help"))}</div></div><div style="text-align:end;min-width:220px">${engine}</div></div>`];\n for (const tk of TASK_ORDER) {\n const list = st.openModels.filter((m) => m.tasks[0] === tk);\n if (!list.length) continue;\n html.push(`<h3 style="margin:14px 0 4px">${esc(t("task." + tk))}</h3>`);\n for (const m of list) {\n const tip = esc(JSON.stringify({ model: m.name, size: m.sizeGb }));\n let action;\n if (installed(m)) action = `<span class="ok">\u2713 ${esc(t("models.shared"))}</span>`;\n else if (!m.available) action = `<span class="status">${esc(t("models.not_here"))}</span>`;\n else if (!ready(m)) action = `<span class="status">${esc(t(m.runtime === "ollama" ? "setup.model.need_ollama" : "models.need_engine"))}</span>`;\n else action = `<button class="${m.fits ? "" : "secondary"}" data-pull-model="${esc(m.id)}" data-tip="tip.models.download" data-tip-vars="${tip}">${esc(t("models.download", { size: m.sizeGb }))}</button>${m.fits ? "" : `<div class="status missing">${esc(t("models.needs_ram", { ram: m.minRamGb }))}</div>`}${progress(task("model-" + m.id))}`;\n html.push(`<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(m.name)}</strong>${m.recommended ? ` <span class="pill">${esc(t("models.recommended"))}</span>` : ""}<div class="status">${esc(m.sizeGb)} GB \xB7 ${esc(t("models.license"))}: ${esc(m.license)}</div></div><div style="text-align:end;min-width:220px">${action}</div></div>`);\n }\n }\n $("ai-models").innerHTML = html.join("");\n // Limits: keep what the user is typing; render only once per load.\n if (!$("ai-limits").dataset.ready) {\n const lim = st.aiLimits, u = st.aiUsage;\n const cell = (p, k) => `<input type="number" min="0" step="1" data-limit="${p}.${k}" value="${lim[p][k] ?? ""}" placeholder="${esc(t("limits.none"))}" style="width:120px">`;\n $("ai-limits").innerHTML = `<table class="limits"><tr><th></th><th>${esc(t("limits.requests"))}</th><th>${esc(t("limits.tokens"))}</th><th>${esc(t("limits.used"))}</th></tr>` +\n ["day", "week", "month"].map((p) => `<tr><td>${esc(t("limits." + p))}</td><td>${cell(p, "requests")}</td><td>${cell(p, "tokens")}</td><td class="status">${esc(t("limits.usage", { requests: u[p].requests, tokens: fmt(u[p].tokens) }))}</td></tr>`).join("") + `</table>`;\n $("ai-limits").dataset.ready = "1";\n }\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#ai-models")) return;\n const m = $("models-msg");\n if (b.dataset.lemonade) act(b, m, () => api("/api/setup/download", { id: "lemonade" }), t("models.ok.engine"));\n if (b.dataset.pullModel) act(b, m, () => api("/api/setup/pull", { model: b.dataset.pullModel }), t("setup.ok.pull"));\n setTimeout(refreshSetup, 1000);\n});\n\n$("save-limits").addEventListener("click", () => {\n const aiLimits = { day: {}, week: {}, month: {} };\n for (const input of document.querySelectorAll("[data-limit]")) {\n const [p, k] = input.dataset.limit.split(".");\n aiLimits[p][k] = input.value === "" ? null : Math.max(0, Math.floor(Number(input.value)));\n }\n act($("save-limits"), $("models-msg"), () => api("/api/settings", { lending: { aiLimits } }), t("limits.saved"));\n});\n\n// ---- connect AI tools -------------------------------------------------------------------\nlet tools = [];\nasync function refreshTools() {\n try { tools = (await api("/api/integrations")).tools; } catch { return; }\n $("tools").innerHTML = tools.map((x, i) => {\n const vars = esc(JSON.stringify({ name: x.name }));\n const status = x.connected ? `<span class="ok">\u2713 ${esc(t("tools.connected"))}</span>` : x.installed ? `<span class="status">${esc(t("tools.installed"))}</span>` : `<span class="status">${esc(t("tools.not_found"))}</span>`;\n const connect = x.installed && !x.connected ? `<button data-connect="${esc(x.id)}" data-tip="tip.tools.connect" data-tip-vars="${vars}">${esc(t("tools.connect"))}</button>` : "";\n const copy = `<button class="secondary" data-copy="${i}" data-tip="tip.tools.copy" data-tip-vars="${vars}">${esc(t("tools.copy"))}</button>`;\n const problem = x.problem === "config_invalid" ? `<div class="status missing">${esc(t("tools.config_invalid", { name: x.name }))}</div>` : "";\n return `<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(x.name)}</strong> ${status}${problem}</div><div class="row" style="margin:0">${connect}${copy}</div></div>`;\n }).join("");\n}\n\nasync function copyText(text) {\n try { await navigator.clipboard.writeText(text); return true; } catch {}\n const ta = document.createElement("textarea");\n ta.value = text; document.body.appendChild(ta); ta.select();\n let ok = false;\n try { ok = document.execCommand("copy"); } catch {}\n ta.remove();\n return ok;\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#tools")) return;\n const m = $("tools-msg");\n if (b.dataset.connect) {\n const tool = tools.find((x) => x.id === b.dataset.connect);\n act(b, m, async () => {\n try { await api("/api/integrations/connect", { id: b.dataset.connect }); }\n catch (err) { if (/config_invalid/.test(err.message)) throw new Error(t("tools.config_invalid", { name: tool.name })); throw err; }\n await refreshTools();\n }, t("tools.done", { name: tool.name }));\n }\n if (b.dataset.copy !== undefined) {\n const tool = tools[Number(b.dataset.copy)];\n act(b, m, async () => {\n if (!(await copyText(tool.manual))) throw new Error(`${t("tools.manual")} ${tool.manual}`);\n }, `${t("tools.copied")} ${tool.where ? `${t("tools.manual")} ${tool.where}` : ""}`);\n }\n});\n\n// ---- app updates ------------------------------------------------------------------------\nlet update = null;\nasync function refreshUpdate() {\n try { update = await api("/api/update"); } catch { return; }\n const u = update;\n $("update-info").textContent = `${t("update.current", { v: u.current })}${u.latest ? " \xB7 " + t("update.latest", { v: u.latest }) : ""}`;\n const btn = $("update-btn");\n if (!btn.disabled) btn.textContent = u.available ? t("update.install", { v: u.latest }) : t("update.button");\n const st = u.status;\n const fresh = st && Date.now() / 1000 - Number(st.at || 0) < 600;\n const m = $("update-msg");\n if (!u.inApp) { m.className = "msg"; m.textContent = t("update.not_in_app"); return; }\n if (fresh && st.state) {\n m.className = st.state === "error" ? "msg error" : st.state === "up_to_date" ? "msg ok" : "msg";\n m.textContent = t(`update.state.${st.state}`, { v: st.version || u.latest || "", msg: st.message || "" });\n if (["requested", "checking", "installing", "restarting"].includes(st.state)) setTimeout(refreshUpdate, 1500);\n } else if (u.available) { m.className = "msg"; m.textContent = t("update.available", { v: u.latest }); }\n}\n$("update-btn").addEventListener("click", () => {\n act($("update-btn"), null, async () => {\n try { await api("/api/update", {}); }\n catch (err) { $("update-msg").className = "msg error"; $("update-msg").textContent = /updates_only_in_app/.test(err.message) ? t("update.not_in_app") : explain(err); return; }\n setTimeout(refreshUpdate, 500);\n });\n});\n\n// ---- explanations on hover: after a short pause over a button, say what it does ----------\nconst tipBox = document.createElement("div");\ntipBox.id = "tip";\ntipBox.setAttribute("role", "tooltip");\ntipBox.hidden = true;\ndocument.body.appendChild(tipBox);\nlet tipTimer = null;\nconst TIP_DELAY_MS = 800;\nfunction showTip(el) {\n let vars = {};\n try { vars = JSON.parse(el.dataset.tipVars || "{}"); } catch {}\n tipBox.textContent = t(el.dataset.tip, vars);\n tipBox.hidden = false;\n const r = el.getBoundingClientRect(), w = tipBox.offsetWidth, h = tipBox.offsetHeight;\n const left = Math.min(Math.max(8, r.left + r.width / 2 - w / 2), window.innerWidth - w - 8);\n const top = r.bottom + 8 + h > window.innerHeight ? r.top - h - 8 : r.bottom + 8;\n tipBox.style.left = `${left}px`;\n tipBox.style.top = `${Math.max(8, top)}px`;\n}\nfunction hideTip() { clearTimeout(tipTimer); tipBox.hidden = true; }\nconst scheduleTip = (e) => {\n const el = e.target.closest && e.target.closest("[data-tip]");\n if (!el) return;\n clearTimeout(tipTimer);\n tipTimer = setTimeout(() => showTip(el), TIP_DELAY_MS);\n};\ndocument.addEventListener("mouseover", scheduleTip);\ndocument.addEventListener("focusin", scheduleTip);\ndocument.addEventListener("mouseout", (e) => { if (e.target.closest && e.target.closest("[data-tip]")) hideTip(); });\ndocument.addEventListener("focusout", hideTip);\ndocument.addEventListener("mousedown", hideTip);\ndocument.addEventListener("keydown", (e) => { if (e.key === "Escape") hideTip(); });\nwindow.addEventListener("scroll", hideTip, { passive: true });\n\n// ---- start --------------------------------------------------------------------------------\n(async () => {\n if (!token) { await loadLang(langFromApp || "en"); $("locked").hidden = false; return; }\n let saved = null;\n try { saved = (await api("/api/language")).language; } catch {}\n const browser = (navigator.languages || [navigator.language]).map((l) => l.slice(0, 2)).find((l) => LANGS[l]);\n await loadLang(langFromApp || saved || browser || "en", !!langFromApp && langFromApp !== saved);\n refresh();\n refreshUpdate();\n refreshTools();\n setInterval(refresh, 5000);\n setInterval(refreshSetup, 20000);\n setInterval(refreshUpdate, 60000);\n})();\n</script>\n</body>\n</html>\n';
19376
+ if (true) return '<!doctype html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<meta name="viewport" content="width=device-width, initial-scale=1">\n<title>BitPull</title>\n<style>\n :root { --bg:#fafaf7; --surface:#fff; --text:#1d1d1b; --muted:#6b6b66; --line:#e4e2dc; --accent:#2f5bd3; --accent-ink:#fff; --good:#1f7a4d; --warn:#9a6700; --bad:#b3261e; }\n @media (prefers-color-scheme: dark) { :root { --bg:#151514; --surface:#1e1e1c; --text:#ecebe6; --muted:#a2a19b; --line:#33322f; --accent:#7c9cf2; --accent-ink:#10131c; --good:#5cc28f; --warn:#e3b341; --bad:#f2867c; } }\n * { box-sizing: border-box; }\n body { margin:0; background:var(--bg); color:var(--text); font:15px/1.5 system-ui,-apple-system,"Segoe UI","Noto Sans",sans-serif; }\n header { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:center; padding:16px; border-bottom:1px solid var(--line); background:var(--surface); }\n header h1 { font-size:18px; margin:0; }\n .head-right { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }\n .pills { display:flex; flex-wrap:wrap; gap:8px; }\n .pill { border:1px solid var(--line); border-radius:999px; padding:3px 10px; font-size:13px; color:var(--muted); }\n .pill.good { color:var(--good); border-color:currentColor; } .pill.warn { color:var(--warn); border-color:currentColor; } .pill.bad { color:var(--bad); border-color:currentColor; }\n main { max-width:1100px; margin:0 auto; padding:16px; display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); }\n section { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:16px; min-width:0; }\n section h2 { font-size:16px; margin:0 0 4px; } section p.hint { margin:0 0 12px; color:var(--muted); font-size:13px; }\n .stat { font-size:28px; font-weight:700; }\n label { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:6px 0 2px; }\n .field { border-bottom:1px solid var(--line); padding-bottom:6px; }\n .field p.help { margin:0; color:var(--muted); font-size:12.5px; line-height:1.45; }\n .check-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--line); }\n .check-row .status { font-size:13px; color:var(--muted); }\n .ok { color:var(--good); font-weight:600; } .missing { color:var(--warn); font-weight:600; }\n progress { width:100%; height:8px; }\n input[type=number], input[type=text], select { width:110px; padding:6px 8px; border:1px solid var(--line); border-radius:6px; background:var(--bg); color:var(--text); font:inherit; }\n select#lang { width:auto; }\n input.wide { width:100%; }\n button { background:var(--accent); color:var(--accent-ink); border:0; border-radius:8px; padding:8px 12px; font:inherit; font-weight:600; cursor:pointer; }\n button.secondary { background:transparent; color:var(--text); border:1px solid var(--line); }\n button:disabled { opacity:.6; cursor:progress; }\n button.danger { background:var(--bad); color:#fff; }\n .row { display:flex; gap:8px; align-items:center; margin-top:10px; flex-wrap:wrap; }\n ul.list { list-style:none; padding:0; margin:8px 0 0; }\n ul.list li { display:flex; justify-content:space-between; gap:8px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); font-size:14px; }\n ul.list li span.path { overflow-wrap:anywhere; }\n #ai-limits { overflow-x:auto; } table.limits { border-collapse:collapse; } table.limits td, table.limits th { padding:4px 8px; text-align:start; }\n code { font:13px ui-monospace,Menlo,monospace; overflow-wrap:anywhere; direction:ltr; unicode-bidi:embed; }\n textarea { width:100%; min-height:70px; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); font:inherit; }\n pre { white-space:pre-wrap; background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:10px; margin:8px 0 0; max-height:260px; overflow:auto; font-size:13px; }\n .msg { min-height:1.4em; font-size:13px; margin-top:6px; } .msg.error { color:var(--bad); } .msg.ok { color:var(--good); }\n .full { grid-column:1/-1; }\n .live { display:flex; flex-wrap:wrap; gap:4px 14px; align-items:center; padding:8px 16px; font-size:13px; color:var(--muted); border-bottom:1px solid var(--line); background:var(--surface); }\n .live strong { color:var(--text); } .live .dot { width:8px; height:8px; border-radius:50%; background:var(--good); }\n #locked { max-width:520px; margin:80px auto; padding:0 16px; text-align:center; }\n [hidden] { display:none !important; }\n #tip { position:fixed; z-index:50; max-width:320px; padding:8px 10px; border-radius:8px; background:var(--text); color:var(--bg); font-size:13px; line-height:1.45; box-shadow:0 4px 16px rgba(0,0,0,.18); pointer-events:none; }\n</style>\n</head>\n<body>\n<div id="locked" hidden>\n <h1>BitPull</h1>\n <p data-i18n="locked.text"></p>\n</div>\n<div id="app" hidden>\n<header>\n <h1 data-i18n="app.title"></h1>\n <div class="head-right">\n <div class="pills" id="pills"></div>\n <select id="lang" aria-label="Language" data-tip="tip.lang"></select>\n </div>\n</header>\n<div class="live" id="live" hidden></div>\n<main>\n <section>\n <h2 data-i18n="credits.title"></h2>\n <div class="stat" id="balance">\u2013</div>\n <p class="hint" id="plan"></p>\n <div class="row">\n <button data-buy="base" class="secondary" data-i18n="buy.base" data-tip="tip.buy.base"></button>\n <button data-buy="pro" class="secondary" data-i18n="buy.pro" data-tip="tip.buy.pro"></button>\n <button data-buy="recharge" class="secondary" data-i18n="buy.recharge" data-tip="tip.buy.recharge"></button>\n </div>\n <div class="msg" id="buy-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="lend.title"></h2>\n <p class="hint" data-i18n="lend.hint"></p>\n <div class="stat" id="worker-state">\u2013</div>\n <p class="hint" id="worker-detail"></p>\n <p class="status" id="worker-visible"></p>\n <div class="row"><button id="pause" class="danger"></button></div>\n <div class="msg" id="pause-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="setup.title"></h2>\n <p class="hint" data-i18n="setup.hint"></p>\n <div id="setup"><p class="hint" data-i18n="setup.checking"></p></div>\n <div class="msg" id="setup-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="models.title"></h2>\n <p class="hint" data-i18n="models.hint"></p>\n <div id="ai-models"><p class="hint" data-i18n="setup.checking"></p></div>\n <h3 data-i18n="limits.title"></h3>\n <p class="hint" data-i18n="limits.hint"></p>\n <div id="ai-limits"></div>\n <div class="row"><button id="save-limits" data-i18n="limits.save" data-tip="tip.limits.save"></button></div>\n <div class="msg" id="models-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="rules.title"></h2>\n <form id="rules">\n <div class="field"><label><span data-i18n="rules.enabled"></span> <input type="checkbox" name="enabled"></label><p class="help" data-i18n="rules.enabled.help"></p></div>\n <div class="field"><label><span data-i18n="rules.cpus"></span> <input type="number" name="maxCpus" min="0.25" step="0.25"></label><p class="help" data-i18n="rules.cpus.help"></p></div>\n <div class="field"><label><span data-i18n="rules.memory"></span> <input type="number" name="maxMemoryMb" min="256" step="256"></label><p class="help" data-i18n="rules.memory.help"></p></div>\n <div class="field"><label><span data-i18n="rules.gpu"></span> <select name="gpu"><option value="none" data-i18n="rules.gpu.none"></option><option value="consumer" data-i18n="rules.gpu.consumer"></option><option value="high" data-i18n="rules.gpu.high"></option><option value="datacenter" data-i18n="rules.gpu.datacenter"></option></select></label><p class="help" data-i18n="rules.gpu.help"></p></div>\n <div class="field"><label><span data-i18n="rules.containers"></span> <input type="checkbox" name="containers"></label><p class="help" data-i18n="rules.containers.help"></p></div>\n <div class="field"><label><span data-i18n="rules.models"></span> <input type="checkbox" name="serveModels"></label><p class="help" data-i18n="rules.models.help"></p></div>\n <div class="field"><label><span data-i18n="rules.idle"></span> <input type="number" name="idleMinutes" min="0"></label><p class="help" data-i18n="rules.idle.help"></p></div>\n <div class="field"><label><span data-i18n="rules.ac"></span> <input type="checkbox" name="onlyOnAc"></label><p class="help" data-i18n="rules.ac.help"></p></div>\n <div class="field"><label><span data-i18n="rules.awake"></span> <input type="checkbox" name="keepAwake"></label><p class="help" data-i18n="rules.awake.help"></p></div>\n <div class="field"><label><span data-i18n="rules.hours"></span> <span><input type="number" name="hourFrom" min="0" max="23" style="width:56px"> <input type="number" name="hourTo" min="0" max="24" style="width:56px"></span></label><p class="help" data-i18n="rules.hours.help"></p></div>\n <div class="field"><label><span data-i18n="rules.cache"></span> <input type="number" name="cacheMax" min="0"></label><p class="help" data-i18n="rules.cache.help"></p></div>\n <div class="row"><button type="submit" data-i18n="rules.save" data-tip="tip.rules.save"></button></div>\n <div class="msg" id="rules-msg"></div>\n </form>\n </section>\n\n <section>\n <h2 data-i18n="folders.title"></h2>\n <p class="hint" data-i18n="folders.hint"></p>\n <div class="row"><input class="wide" type="text" id="folder-path" data-i18n-placeholder="folders.placeholder"><button id="folder-add" data-i18n="folders.add" data-tip="tip.folder.add"></button></div>\n <ul class="list" id="folders"></ul>\n <div class="msg" id="folder-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="repos.title"></h2>\n <p class="hint" data-i18n="repos.hint"></p>\n <ul class="list" id="repos"></ul>\n <div class="msg" id="repos-msg"></div>\n </section>\n\n <section>\n <h2 data-i18n="ask.title"></h2>\n <p class="hint" id="models-hint"></p>\n <textarea id="prompt" data-i18n-placeholder="ask.placeholder"></textarea>\n <div class="row">\n <select id="tier" data-tip="tip.tier"><option value="small" data-i18n="ask.small"></option><option value="medium" data-i18n="ask.medium"></option><option value="large" data-i18n="ask.large"></option></select>\n <button id="ask" data-i18n="ask.button" data-tip="tip.ask"></button>\n <label data-tip="tip.wait"><span data-i18n="ask.wait"></span> <input type="number" id="wait-minutes" min="1" max="120" step="1" style="width:70px"></label>\n <button class="secondary" id="save-wait" data-i18n="ask.wait.save" data-tip="tip.wait"></button>\n </div>\n <div class="msg" id="wait-msg"></div>\n <pre id="answer" hidden></pre>\n </section>\n\n <section class="full">\n <h2 data-i18n="tools.title"></h2>\n <p class="hint" data-i18n="tools.hint"></p>\n <div id="tools"></div>\n <div class="msg" id="tools-msg"></div>\n <p class="hint" style="margin-top:12px"><span data-i18n="tools.openai"></span> <code id="oai-url"></code> \xB7 <span data-i18n="tools.key"></span> <code id="oai-key">\u2022\u2022\u2022\u2022\u2022\u2022</code> <button class="secondary" id="show-key" data-i18n="tools.show" data-tip="tip.show_key"></button></p>\n </section>\n\n <section class="full">\n <h2 data-i18n="update.title"></h2>\n <p class="hint" id="update-info"></p>\n <div class="row"><button id="update-btn" data-i18n="update.button" data-tip="tip.update"></button></div>\n <div class="msg" id="update-msg"></div>\n </section>\n\n <section class="full">\n <h2 data-i18n="jobs.title"></h2>\n <ul class="list" id="jobs"></ul>\n </section>\n</main>\n</div>\n<script>\nconst LANGS = { en: "English", zh: "\u4E2D\u6587", hi: "\u0939\u093F\u0928\u094D\u0926\u0940", es: "Espa\xF1ol", ar: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", fr: "Fran\xE7ais", bn: "\u09AC\u09BE\u0982\u09B2\u09BE", pt: "Portugu\xEAs", ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", id: "Bahasa Indonesia", de: "Deutsch", it: "Italiano" };\nconst $ = (id) => document.getElementById(id);\nconst esc = (s) => String(s ?? "").replace(/[&<>"\']/g, (c) => ({ "&":"&amp;","<":"&lt;",">":"&gt;",\'"\':"&quot;","\'":"&#39;" })[c]);\n\nconst params = new URLSearchParams(location.hash.slice(1));\nlet token = params.get("token");\nconst langFromApp = params.get("lang");\ntry { if (token) sessionStorage.setItem("bp_token", token); else token = sessionStorage.getItem("bp_token"); } catch {}\nif (location.hash) history.replaceState(null, "", "/");\n\n// ---- languages ------------------------------------------------------------------------\nlet lang = "en", dict = {}, fallback = {};\nconst t = (key, vars = {}) => String(dict[key] ?? fallback[key] ?? key).replace(/\\{(\\w+)\\}/g, (_, k) => (vars[k] ?? `{${k}}`));\nconst fmt = (n) => Number(n).toLocaleString(lang, { maximumFractionDigits: 2 });\n\nasync function loadLang(l, save) {\n lang = LANGS[l] ? l : "en";\n if (!Object.keys(fallback).length) fallback = await (await fetch("/i18n/en.json")).json();\n dict = lang === "en" ? fallback : await fetch(`/i18n/${lang}.json`).then((r) => (r.ok ? r.json() : fallback)).catch(() => fallback);\n document.documentElement.lang = lang;\n document.documentElement.dir = lang === "ar" ? "rtl" : "ltr";\n document.querySelectorAll("[data-i18n]").forEach((e) => (e.textContent = t(e.dataset.i18n)));\n document.querySelectorAll("[data-i18n-placeholder]").forEach((e) => (e.placeholder = t(e.dataset.i18nPlaceholder)));\n $("lang").value = lang;\n if (save) api("/api/language", { language: lang }).catch(() => {});\n if (state) render();\n refreshSetup();\n if (update) refreshUpdate();\n if (tools.length) refreshTools();\n}\n$("lang").innerHTML = Object.entries(LANGS).map(([k, v]) => `<option value="${k}">${v}</option>`).join("");\n$("lang").addEventListener("change", (e) => loadLang(e.target.value, true));\n\nasync function api(path, body) {\n const res = await fetch(path, { method: body ? "POST" : "GET", headers: { "content-type": "application/json", "x-bitpull-token": token || "" }, body: body ? JSON.stringify(body) : undefined });\n const data = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(data.error || res.status);\n return data;\n}\n\n// ---- status -----------------------------------------------------------------------------\nlet state = null;\n/** The user changed the lending rules and has not saved them yet. */\nlet rulesDirty = false;\nasync function refresh() {\n try { state = await api("/api/status"); } catch (e) { if (String(e.message) === "unauthorized") { $("app").hidden = true; $("locked").hidden = false; } return; }\n $("app").hidden = false; $("locked").hidden = true;\n render();\n}\n\nfunction render() {\n const s = state, n = s.node;\n const pills = [\n `<span class="pill ${n.online ? "good" : "bad"}">${esc(t(n.online ? "pill.online" : "pill.offline"))}</span>`,\n `<span class="pill ${n.relay === "disconnected" ? "warn" : "good"}">${esc(t(n.relay === "direct" ? "pill.direct" : n.relay === "connected" ? "pill.relay_on" : "pill.relay_off"))}</span>`,\n `<span class="pill">${esc(t("pill.cached", { n: n.cached }))}</span>`,\n ];\n if (s.me) pills.unshift(`<span class="pill">${esc(s.me.email)}</span>`);\n $("pills").innerHTML = pills.join("");\n const net = s.network;\n if (net) {\n $("live").hidden = false;\n $("live").innerHTML = `<span class="dot"></span><strong>${esc(t("net.title"))}</strong>` +\n [["net.online", net.computersOnline], ["net.lending", net.computersLending], ["net.cpu", net.cpus], ["net.ram", net.memoryGb], ["net.gpu", net.gpus.total]]\n .map(([k, v]) => `<span>${esc(t(k, { n: fmt(v) }))}</span>`).join("") +\n `<span title="${esc(net.models.join(", "))}">${esc(t("net.models", { n: fmt(net.models.length) }))}</span><span>${esc(t("net.jobs", { n: fmt(net.jobsRunning) }))}</span>`;\n }\n if (s.me) {\n $("balance").textContent = fmt(s.me.balance);\n $("plan").textContent = t("credits.plan", { plan: t(`plan.${s.me.plan}`), n: s.me.threshold });\n }\n const w = n.worker;\n $("worker-state").textContent = t(`lend.state.${w.state}`);\n $("worker-detail").textContent = w.currentJob\n ? t("lend.running", { kind: t(w.currentJob.kind === "inference" ? "jobs.model" : "jobs.container"), time: new Date(w.currentJob.since).toLocaleTimeString(lang) })\n : t("lend.detail", { reason: w.reason && !w.reason.startsWith("error") ? t(`lend.reason.${w.reason}`) : (w.reason || ""), n: w.completed, cpus: s.capacity.cpus, ram: fmt(s.capacity.memoryMb / 1024) }) +\n (s.capacity.containers ? t("lend.detail.sandbox", { name: w.sandbox || "" }) : "") + (s.capacity.models.length ? t("lend.detail.models", { n: s.capacity.models.length }) : "");\n // What the network actually sees of this computer, and why nothing can run when that is the case.\n const seen = s.me && (s.me.nodes || []).find((x) => x.id === s.nodeId);\n const usable = s.capacity.containers || s.capacity.models.length > 0;\n const tried = (s.sandbox && s.sandbox.tried || []).join(" \xB7 ");\n // Known problems in the person\'s language; anything else as reported by the system.\n const sbProblem = /Docker Hub login is no longer valid/.test(tried) ? t("lend.docker_login") : tried;\n $("worker-visible").className = "status " + (seen && seen.online && seen.capacity && usable ? "ok" : "missing");\n // Lending switched off: say so plainly, with what to do; Pause/Resume does not turn it on.\n $("pause").hidden = !s.lending.enabled;\n if (!s.lending.enabled) {\n $("worker-visible").className = "status missing";\n $("worker-visible").textContent = t("lend.off_hint", { enabled: t("rules.enabled"), rules: t("rules.title"), save: t("rules.save") });\n } else if (s.lendingNow.ok && s.capacity.memoryMb < 1024 && usable) {\n $("worker-visible").className = "status missing";\n $("worker-visible").textContent = t("lend.low_memory", { mb: s.capacity.memoryMb, rules: t("rules.title"), memory: t("rules.memory"), save: t("rules.save") });\n } else $("worker-visible").textContent = s.lending.paused || !s.lendingNow.ok ? ""\n : !usable ? t("lend.unusable", { reason: s.lending.containers ? (sbProblem || t("lend.unusable.docker")) : t("lend.unusable.off") })\n : seen && seen.online && seen.capacity ? t("lend.visible", { cpus: seen.capacity.cpus, ram: fmt(seen.capacity.memoryMb / 1024) })\n : t("lend.invisible");\n $("pause").textContent = t(s.lending.paused ? "lend.resume" : "lend.pause");\n $("pause").dataset.tip = s.lending.paused ? "tip.resume" : "tip.pause";\n $("pause").className = s.lending.paused ? "" : "danger";\n\n // Never overwrite changes the user has not saved yet (on macOS a clicked checkbox does not take focus).\n if (!rulesDirty && (!document.activeElement || !$("rules").contains(document.activeElement))) {\n const f = $("rules").elements, l = s.lending;\n for (const k of ["enabled", "containers", "serveModels", "onlyOnAc"]) f[k].checked = !!l[k];\n f.keepAwake.checked = l.keepAwake !== false;\n for (const k of ["maxCpus", "maxMemoryMb", "idleMinutes"]) f[k].value = l[k];\n f.gpu.value = l.gpu; f.cacheMax.value = s.cacheMax;\n f.hourFrom.value = l.hours ? l.hours[0] : ""; f.hourTo.value = l.hours ? l.hours[1] : "";\n }\n $("folders").innerHTML = s.folders.map((p) => `<li><span class="path">${esc(p)}</span><span><button class="secondary" data-draft="${esc(p)}" data-tip="tip.folder.draft">${esc(t("folders.draft"))}</button> <button data-publish="${esc(p)}" data-tip="tip.folder.publish">${esc(t("folders.publish"))}</button> <button class="secondary" data-unfolder="${esc(p)}" data-tip="tip.folder.remove">${esc(t("folders.remove"))}</button></span></li>`).join("") || `<li class="hint">${esc(t("folders.none"))}</li>`;\n $("repos").innerHTML = s.repos.map((r) => `<li><span><strong>${esc(r.name)}</strong><br><span class="path hint">${esc(r.path)}</span></span><button class="secondary" data-unpublish="${esc(r.id)}" data-tip="tip.repo.withdraw">${esc(t("repos.withdraw"))}</button></li>`).join("") || `<li class="hint">${esc(t("repos.none"))}</li>`;\n $("jobs").innerHTML = s.jobs.map((j) => `<li><span>${esc(t(j.kind === "inference" ? "jobs.model" : "jobs.container"))} \xB7 ${new Date(j.createdAt).toLocaleString(lang)}</span><span>${esc(t(`jobs.status.${j.status}`))}${j.cost != null ? ` \xB7 ${esc(t("jobs.cost", { n: fmt(j.cost) }))}` : ""}</span></li>`).join("") || `<li class="hint">${esc(t("jobs.none"))}</li>`;\n $("oai-url").textContent = s.openaiBaseUrl;\n if (document.activeElement !== $("wait-minutes") && !$("wait-minutes").dataset.dirty) $("wait-minutes").value = s.answerWaitMinutes ?? 10;\n $("models-hint").textContent = t("ask.offers", { models: s.capacity.models.join(", ") || t("ask.offers_none") });\n}\n\n// ---- every button answers at once, and says clearly what went wrong ----------------------\nfunction explain(err) {\n const m = String((err && err.message) || err);\n if (/Failed to fetch|Load failed|NetworkError/.test(m)) return t("err.agent_down");\n if (/fetch failed|ECONNREFUSED|ENOTFOUND|ETIMEDOUT|coordinator unreachable|timeout/i.test(m)) return t("err.server");\n if (/unauthorized/.test(m)) return t("err.session");\n if (/billing_not_configured/.test(m)) return t("err.billing");\n if (/not found on disk|ENOENT/.test(m)) return t("err.no_folder");\n if (/not a folder/.test(m)) return t("err.not_folder");\n if (/insufficient_credits/.test(m)) return `${t("err.credits")} ${m.replace(/^insufficient_credits:\\s*/, "")}`;\n if (/device_required/.test(m)) return t("err.device");\n if (/No open model is online/.test(m)) return t("err.no_model");\n if (/invalid_request|invalid JSON/.test(m)) return t("err.invalid");\n return m.replace(/^Error:\\s*/, "");\n}\n\n/** Runs a button\'s action: disables it at once, shows "Working\u2026", then the result next to it. */\nasync function act(btn, msgEl, fn, okText) {\n if (btn.disabled) return;\n const label = btn.textContent;\n btn.disabled = true;\n btn.textContent = t("working");\n if (msgEl) { msgEl.className = "msg"; msgEl.textContent = ""; }\n try {\n const r = await fn();\n const text = typeof okText === "function" ? okText(r) : okText;\n if (msgEl && text) { msgEl.className = "msg ok"; msgEl.textContent = text; }\n return r;\n } catch (err) {\n if (msgEl) { msgEl.className = "msg error"; msgEl.textContent = explain(err); }\n } finally {\n btn.disabled = false;\n btn.textContent = label;\n }\n}\n\nfor (const ev of ["input", "change"]) $("rules").addEventListener(ev, () => { rulesDirty = true; });\n\n$("rules").addEventListener("submit", (e) => {\n e.preventDefault();\n const f = e.target.elements;\n if ((f.hourFrom.value === "") !== (f.hourTo.value === "")) { $("rules-msg").className = "msg error"; $("rules-msg").textContent = t("rules.hours_both"); return; }\n const hours = f.hourFrom.value !== "" ? [Number(f.hourFrom.value), Number(f.hourTo.value)] : null;\n act(e.submitter || e.target.querySelector("button"), $("rules-msg"), async () => {\n await api("/api/settings", { cacheMax: Number(f.cacheMax.value), lending: { enabled: f.enabled.checked, maxCpus: Number(f.maxCpus.value), maxMemoryMb: Number(f.maxMemoryMb.value),\n gpu: f.gpu.value, containers: f.containers.checked, serveModels: f.serveModels.checked, idleMinutes: Number(f.idleMinutes.value), onlyOnAc: f.onlyOnAc.checked, keepAwake: f.keepAwake.checked, hours } });\n rulesDirty = false;\n refresh();\n }, t("rules.saved"));\n});\n\n$("pause").addEventListener("click", () => {\n const pausing = !state.lending.paused;\n act($("pause"), $("pause-msg"), async () => { await api("/api/pause", { paused: pausing }); await refresh(); }, t(pausing ? "lend.paused_ok" : "lend.resumed_ok"));\n});\n\n$("folder-add").addEventListener("click", () => {\n const path = $("folder-path").value.trim();\n if (!path) { $("folder-msg").className = "msg error"; $("folder-msg").textContent = t("folders.need_path"); return; }\n act($("folder-add"), $("folder-msg"), async () => { await api("/api/folders", { path }); $("folder-path").value = ""; await refresh(); }, t("folders.added"));\n});\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || b.closest("#setup")) return;\n const msg = $("folder-msg");\n if (b.dataset.unfolder) act(b, msg, async () => { await api("/api/folders/remove", { path: b.dataset.unfolder }); await refresh(); }, t("folders.removed"));\n if (b.dataset.draft) act(b, msg, () => api("/api/draft", { folder: b.dataset.draft }), (r) => t("folders.drafted", { n: r.draft.modules.length }));\n if (b.dataset.publish) act(b, msg, async () => {\n const r = await api("/api/publish", { folder: b.dataset.publish });\n if (!r.ok) throw new Error(r.errors.join(" ") + (r.secrets ? " " + t("folders.secrets_in", { where: r.secrets.map((x) => t("folders.line", { file: x.file, line: x.line })).join(", ") }) : ""));\n await refresh();\n return r;\n }, (r) => t("folders.published", { name: r.repo.name, n: r.files }));\n if (b.dataset.unpublish) act(b, $("repos-msg"), async () => { await api("/api/repos/remove", { id: b.dataset.unpublish }); await refresh(); }, t("repos.withdrawn"));\n if (b.dataset.buy) act(b, $("buy-msg"), async () => { const { url } = await api("/api/checkout", { product: b.dataset.buy }); await api("/api/open", { url }); }, t("buy.ok"));\n});\n\n$("ask").addEventListener("click", () => {\n const prompt = $("prompt").value.trim();\n const out = $("answer");\n out.hidden = false;\n if (!prompt) { out.textContent = t("ask.empty"); return; }\n out.textContent = t("ask.waiting");\n act($("ask"), null, async () => {\n try { const r = await api("/api/ask", { prompt, tier: $("tier").value }); out.textContent = `${r.content}\\n\\n\u2014 ${r.model} \xB7 ${t("ask.credits", { n: fmt(r.cost) })}`; refresh(); }\n catch (err) { out.textContent = explain(err); }\n });\n});\n$("show-key").addEventListener("click", () => { $("oai-key").textContent = token; });\n$("wait-minutes").addEventListener("input", () => { $("wait-minutes").dataset.dirty = "1"; });\n$("save-wait").addEventListener("click", () => {\n const n = Math.round(Number($("wait-minutes").value));\n if (!(n >= 1 && n <= 120)) { $("wait-msg").className = "msg error"; $("wait-msg").textContent = t("ask.wait.range"); return; }\n act($("save-wait"), $("wait-msg"), async () => { await api("/api/settings", { answerWaitMinutes: n }); delete $("wait-minutes").dataset.dirty; }, t("ask.wait.saved", { n }));\n});\n\n// ---- "Set up this computer" -------------------------------------------------------------\nasync function refreshSetup() {\n if (!token) return;\n let st;\n try { st = await api("/api/setup"); } catch { return; }\n const task = (id) => st.tasks.find((x) => x.id === id);\n const progress = (x) => x ? (x.state === "running" ? `<progress max="100" value="${x.progress || 0}"></progress><div class="status">${esc(x.label)} ${x.progress ? x.progress + "%" : ""}</div>`\n : x.state === "failed" ? `<div class="status missing">${esc(x.detail || "")}</div>`\n : `<div class="status ok">${esc(x.detail && /[\\\\/]/.test(x.detail) ? t("setup.opened", { file: x.detail.split(/[\\\\/]/).pop() }) : t("setup.done"))}</div>`) : "";\n const NAMES = { docker: "Docker", ollama: "Ollama", "apple-container": "Apple Container", nvidia: "NVIDIA" };\n const install = (id, label) => {\n const inst = st.installers[id];\n if (!inst) return "";\n const vars = esc(JSON.stringify({ name: NAMES[id] || id }));\n if (inst.kind === "download") return `<button data-download="${id}" data-tip="tip.setup.download" data-tip-vars="${vars}">${esc(label)}</button>`;\n if (inst.kind === "page") return `<button class="secondary" data-open="${esc(inst.url)}" data-tip="tip.setup.open" data-tip-vars="${vars}">${esc(label)}</button>`;\n return `<div class="status">${esc(t("setup.terminal"))} <code>${esc(inst.command)}</code></div>`;\n };\n const row = (title, ok, okText, missingText, action, help) =>\n `<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(title)}</strong><div class="status">${esc(help)}</div></div><div style="text-align:end;min-width:220px">${ok ? `<span class="ok">\u2713 ${esc(okText)}</span>` : `<span class="missing">${esc(missingText)}</span><div>${action}</div>`}</div></div>`;\n const rows = [];\n rows.push(row("Docker", st.docker.running, t("setup.status.running"), t(st.docker.installed ? "setup.status.stopped" : "setup.status.missing"),\n st.docker.installed ? `<button data-start="docker" data-tip="tip.setup.start" data-tip-vars="${esc(JSON.stringify({ name: "Docker" }))}">${esc(t("setup.docker.start"))}</button>` : install("docker", t("setup.docker.download")) + progress(task("download-docker")),\n t("setup.docker.help") + (st.docker.problem ? ` \u2014 ${/Docker Hub login is no longer valid/.test(st.docker.problem) ? t("lend.docker_login") : st.docker.problem}` : "")));\n if (st.os === "darwin" && st.arch === "arm64")\n rows.push(row(t("setup.apple.title"), st.appleContainer.installed, t("setup.status.installed"), t("setup.status.missing"), install("apple-container", t("setup.apple.get")), t("setup.apple.help")));\n rows.push(row("Ollama", st.ollama.running, t("setup.status.running"), t(st.ollama.installed ? "setup.status.stopped" : "setup.status.missing"),\n st.ollama.installed ? `<button data-start="ollama" data-tip="tip.setup.start" data-tip-vars="${esc(JSON.stringify({ name: "Ollama" }))}">${esc(t("setup.ollama.start"))}</button>` : install("ollama", t("setup.ollama.download")) + progress(task("download-ollama")),\n t("setup.ollama.help")));\n const rec = st.recommendedModel;\n rows.push(row(t("setup.model.title"), st.ollama.models.length > 0, st.ollama.models.join(", "), t("setup.model.none"),\n st.ollama.running ? `<button data-pull="${esc(rec.name)}" data-tip="tip.setup.pull" data-tip-vars="${esc(JSON.stringify({ model: rec.name, size: rec.sizeGb }))}">${esc(t("setup.model.download", { model: rec.name, size: rec.sizeGb }))}</button>${progress(task("model-" + rec.name))}` : `<div class="status">${esc(t("setup.model.need_ollama"))}</div>`,\n t("setup.model.help", { ram: st.ramGb, model: rec.name })));\n if (st.nvidia !== null)\n rows.push(row(t("setup.nvidia.title"), st.nvidia, t("setup.status.found"), t("setup.status.not_found"), install("nvidia", t("setup.nvidia.get")), t("setup.nvidia.help")));\n $("setup").innerHTML = rows.join("") + `<div class="row"><button class="secondary" id="recheck" data-tip="tip.setup.recheck">${esc(t("setup.recheck"))}</button></div>`;\n renderModels(st, task, progress);\n if (st.tasks.some((x) => x.state === "running")) setTimeout(refreshSetup, 1500);\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#setup")) return;\n const m = $("setup-msg");\n if (b.dataset.download) act(b, m, () => api("/api/setup/download", { id: b.dataset.download }), t("setup.ok.download"));\n if (b.dataset.start) act(b, m, () => api("/api/setup/start", { id: b.dataset.start }), t("setup.ok.start"));\n if (b.dataset.pull) act(b, m, () => api("/api/setup/pull", { model: b.dataset.pull }), t("setup.ok.pull"));\n if (b.dataset.open) act(b, m, () => api("/api/open", { url: b.dataset.open }), t("setup.ok.page"));\n if (b.id === "recheck") act(b, m, () => api("/api/setup/recheck", {}), t("setup.ok.recheck"));\n setTimeout(refreshSetup, 1000);\n});\n\n// ---- open AI models to share, and the lender\'s limits ------------------------------------\nconst TASK_ORDER = ["chat", "vision", "ocr", "translate", "embed", "rerank", "image", "upscale", "stt", "tts", "music"];\nfunction renderModels(st, task, progress) {\n const lem = st.lemonade;\n const engine = !lem.supported\n ? `<span class="missing">${esc(t("models.engine.unsupported"))}</span>`\n : lem.running ? `<span class="ok">\u2713 ${esc(t("setup.status.running"))}</span>`\n : `<button data-lemonade="1" data-tip="tip.models.engine">${esc(t(lem.installed ? "models.engine.repair" : "models.engine.install"))}</button>${progress(task("download-lemonade"))}${lem.error ? `<div class="status missing">${esc(lem.error)}</div>` : ""}`;\n const installed = (m) => m.runtime === "ollama"\n ? st.ollama.models.some((x) => x === m.id || x === m.id + ":latest")\n : lem.models.includes(m.id);\n const ready = (m) => m.runtime === "ollama" ? st.ollama.running : lem.running;\n const html = [`<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(t("models.engine.title"))}</strong><div class="status">${esc(t("models.engine.help"))}</div></div><div style="text-align:end;min-width:220px">${engine}</div></div>`];\n for (const tk of TASK_ORDER) {\n const list = st.openModels.filter((m) => m.tasks[0] === tk);\n if (!list.length) continue;\n html.push(`<h3 style="margin:14px 0 4px">${esc(t("task." + tk))}</h3>`);\n for (const m of list) {\n const tip = esc(JSON.stringify({ model: m.name, size: m.sizeGb }));\n let action;\n if (installed(m)) action = `<span class="ok">\u2713 ${esc(t("models.shared"))}</span>`;\n else if (!m.available) action = `<span class="status">${esc(t("models.not_here"))}</span>`;\n else if (!ready(m)) action = `<span class="status">${esc(t(m.runtime === "ollama" ? "setup.model.need_ollama" : "models.need_engine"))}</span>`;\n else action = `<button class="${m.fits ? "" : "secondary"}" data-pull-model="${esc(m.id)}" data-tip="tip.models.download" data-tip-vars="${tip}">${esc(t("models.download", { size: m.sizeGb }))}</button>${m.fits ? "" : `<div class="status missing">${esc(t("models.needs_ram", { ram: m.minRamGb }))}</div>`}${progress(task("model-" + m.id))}`;\n html.push(`<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(m.name)}</strong>${m.recommended ? ` <span class="pill">${esc(t("models.recommended"))}</span>` : ""}<div class="status">${esc(m.sizeGb)} GB \xB7 ${esc(t("models.license"))}: ${esc(m.license)}</div></div><div style="text-align:end;min-width:220px">${action}</div></div>`);\n }\n }\n $("ai-models").innerHTML = html.join("");\n // Limits: keep what the user is typing; render only once per load.\n if (!$("ai-limits").dataset.ready) {\n const lim = st.aiLimits, u = st.aiUsage;\n const cell = (p, k) => `<input type="number" min="0" step="1" data-limit="${p}.${k}" value="${lim[p][k] ?? ""}" placeholder="${esc(t("limits.none"))}" style="width:120px">`;\n $("ai-limits").innerHTML = `<table class="limits"><tr><th></th><th>${esc(t("limits.requests"))}</th><th>${esc(t("limits.tokens"))}</th><th>${esc(t("limits.used"))}</th></tr>` +\n ["day", "week", "month"].map((p) => `<tr><td>${esc(t("limits." + p))}</td><td>${cell(p, "requests")}</td><td>${cell(p, "tokens")}</td><td class="status">${esc(t("limits.usage", { requests: u[p].requests, tokens: fmt(u[p].tokens) }))}</td></tr>`).join("") + `</table>`;\n $("ai-limits").dataset.ready = "1";\n }\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#ai-models")) return;\n const m = $("models-msg");\n if (b.dataset.lemonade) act(b, m, () => api("/api/setup/download", { id: "lemonade" }), t("models.ok.engine"));\n if (b.dataset.pullModel) act(b, m, () => api("/api/setup/pull", { model: b.dataset.pullModel }), t("setup.ok.pull"));\n setTimeout(refreshSetup, 1000);\n});\n\n$("save-limits").addEventListener("click", () => {\n const aiLimits = { day: {}, week: {}, month: {} };\n for (const input of document.querySelectorAll("[data-limit]")) {\n const [p, k] = input.dataset.limit.split(".");\n aiLimits[p][k] = input.value === "" ? null : Math.max(0, Math.floor(Number(input.value)));\n }\n act($("save-limits"), $("models-msg"), () => api("/api/settings", { lending: { aiLimits } }), t("limits.saved"));\n});\n\n// ---- connect AI tools -------------------------------------------------------------------\nlet tools = [];\nasync function refreshTools() {\n try { tools = (await api("/api/integrations")).tools; } catch { return; }\n $("tools").innerHTML = tools.map((x, i) => {\n const vars = esc(JSON.stringify({ name: x.name }));\n const status = x.connected ? `<span class="ok">\u2713 ${esc(t("tools.connected"))}</span>` : x.installed ? `<span class="status">${esc(t("tools.installed"))}</span>` : `<span class="status">${esc(t("tools.not_found"))}</span>`;\n const connect = x.installed && !x.connected ? `<button data-connect="${esc(x.id)}" data-tip="tip.tools.connect" data-tip-vars="${vars}">${esc(t("tools.connect"))}</button>` : "";\n const copy = `<button class="secondary" data-copy="${i}" data-tip="tip.tools.copy" data-tip-vars="${vars}">${esc(t("tools.copy"))}</button>`;\n const problem = x.problem === "config_invalid" ? `<div class="status missing">${esc(t("tools.config_invalid", { name: x.name }))}</div>` : "";\n return `<div class="check-row"><div style="flex:1 1 280px"><strong>${esc(x.name)}</strong> ${status}${problem}</div><div class="row" style="margin:0">${connect}${copy}</div></div>`;\n }).join("");\n}\n\nasync function copyText(text) {\n try { await navigator.clipboard.writeText(text); return true; } catch {}\n const ta = document.createElement("textarea");\n ta.value = text; document.body.appendChild(ta); ta.select();\n let ok = false;\n try { ok = document.execCommand("copy"); } catch {}\n ta.remove();\n return ok;\n}\n\ndocument.addEventListener("click", (e) => {\n const b = e.target.closest("button");\n if (!b || !b.closest("#tools")) return;\n const m = $("tools-msg");\n if (b.dataset.connect) {\n const tool = tools.find((x) => x.id === b.dataset.connect);\n act(b, m, async () => {\n try { await api("/api/integrations/connect", { id: b.dataset.connect }); }\n catch (err) { if (/config_invalid/.test(err.message)) throw new Error(t("tools.config_invalid", { name: tool.name })); throw err; }\n await refreshTools();\n }, t("tools.done", { name: tool.name }));\n }\n if (b.dataset.copy !== undefined) {\n const tool = tools[Number(b.dataset.copy)];\n act(b, m, async () => {\n if (!(await copyText(tool.manual))) throw new Error(`${t("tools.manual")} ${tool.manual}`);\n }, `${t("tools.copied")} ${tool.where ? `${t("tools.manual")} ${tool.where}` : ""}`);\n }\n});\n\n// ---- app updates ------------------------------------------------------------------------\nlet update = null;\nasync function refreshUpdate() {\n try { update = await api("/api/update"); } catch { return; }\n const u = update;\n $("update-info").textContent = `${t("update.current", { v: u.current })}${u.latest ? " \xB7 " + t("update.latest", { v: u.latest }) : ""}`;\n const btn = $("update-btn");\n if (!btn.disabled) btn.textContent = u.available ? t("update.install", { v: u.latest }) : t("update.button");\n const st = u.status;\n const fresh = st && Date.now() / 1000 - Number(st.at || 0) < 600;\n const m = $("update-msg");\n if (!u.inApp) { m.className = "msg"; m.textContent = t("update.not_in_app"); return; }\n if (fresh && st.state) {\n m.className = st.state === "error" ? "msg error" : st.state === "up_to_date" ? "msg ok" : "msg";\n m.textContent = t(`update.state.${st.state}`, { v: st.version || u.latest || "", msg: st.message || "" });\n if (["requested", "checking", "installing", "restarting"].includes(st.state)) setTimeout(refreshUpdate, 1500);\n } else if (u.available) { m.className = "msg"; m.textContent = t("update.available", { v: u.latest }); }\n}\n$("update-btn").addEventListener("click", () => {\n act($("update-btn"), null, async () => {\n try { await api("/api/update", {}); }\n catch (err) { $("update-msg").className = "msg error"; $("update-msg").textContent = /updates_only_in_app/.test(err.message) ? t("update.not_in_app") : explain(err); return; }\n setTimeout(refreshUpdate, 500);\n });\n});\n\n// ---- explanations on hover: after a short pause over a button, say what it does ----------\nconst tipBox = document.createElement("div");\ntipBox.id = "tip";\ntipBox.setAttribute("role", "tooltip");\ntipBox.hidden = true;\ndocument.body.appendChild(tipBox);\nlet tipTimer = null;\nconst TIP_DELAY_MS = 800;\nfunction showTip(el) {\n let vars = {};\n try { vars = JSON.parse(el.dataset.tipVars || "{}"); } catch {}\n tipBox.textContent = t(el.dataset.tip, vars);\n tipBox.hidden = false;\n const r = el.getBoundingClientRect(), w = tipBox.offsetWidth, h = tipBox.offsetHeight;\n const left = Math.min(Math.max(8, r.left + r.width / 2 - w / 2), window.innerWidth - w - 8);\n const top = r.bottom + 8 + h > window.innerHeight ? r.top - h - 8 : r.bottom + 8;\n tipBox.style.left = `${left}px`;\n tipBox.style.top = `${Math.max(8, top)}px`;\n}\nfunction hideTip() { clearTimeout(tipTimer); tipBox.hidden = true; }\nconst scheduleTip = (e) => {\n const el = e.target.closest && e.target.closest("[data-tip]");\n if (!el) return;\n clearTimeout(tipTimer);\n tipTimer = setTimeout(() => showTip(el), TIP_DELAY_MS);\n};\ndocument.addEventListener("mouseover", scheduleTip);\ndocument.addEventListener("focusin", scheduleTip);\ndocument.addEventListener("mouseout", (e) => { if (e.target.closest && e.target.closest("[data-tip]")) hideTip(); });\ndocument.addEventListener("focusout", hideTip);\ndocument.addEventListener("mousedown", hideTip);\ndocument.addEventListener("keydown", (e) => { if (e.key === "Escape") hideTip(); });\nwindow.addEventListener("scroll", hideTip, { passive: true });\n\n// ---- start --------------------------------------------------------------------------------\n(async () => {\n if (!token) { await loadLang(langFromApp || "en"); $("locked").hidden = false; return; }\n let saved = null;\n try { saved = (await api("/api/language")).language; } catch {}\n const browser = (navigator.languages || [navigator.language]).map((l) => l.slice(0, 2)).find((l) => LANGS[l]);\n await loadLang(langFromApp || saved || browser || "en", !!langFromApp && langFromApp !== saved);\n refresh();\n refreshUpdate();\n refreshTools();\n setInterval(refresh, 5000);\n setInterval(refreshSetup, 20000);\n setInterval(refreshUpdate, 60000);\n})();\n</script>\n</body>\n</html>\n';
19279
19377
  return (0, import_promises15.readFile)((0, import_node_path12.join)((0, import_node_path12.dirname)((0, import_node_url.fileURLToPath)(__bitpull_import_meta_url)), "..", "ui", "index.html"), "utf8");
19280
19378
  }
19281
19379
  var AiLimit = external_exports.object({ requests: external_exports.number().int().min(0).max(1e7).nullable(), tokens: external_exports.number().int().min(0).max(1e11).nullable() });
19282
19380
  var Settings = external_exports.object({
19283
19381
  cacheMax: external_exports.number().int().min(0).max(1e3).optional(),
19382
+ /** How long to wait for answers from the network's AI models, in minutes. */
19383
+ answerWaitMinutes: external_exports.number().int().min(1).max(120).optional(),
19284
19384
  lending: external_exports.object({
19285
19385
  enabled: external_exports.boolean(),
19286
19386
  maxCpus: external_exports.number().min(0.25).max(256),
@@ -19293,7 +19393,8 @@ var Settings = external_exports.object({
19293
19393
  idleMinutes: external_exports.number().int().min(0).max(1440),
19294
19394
  onlyOnAc: external_exports.boolean(),
19295
19395
  hours: external_exports.tuple([external_exports.number().int().min(0).max(23), external_exports.number().int().min(0).max(24)]).nullable(),
19296
- aiLimits: external_exports.object({ day: AiLimit, week: AiLimit, month: AiLimit })
19396
+ aiLimits: external_exports.object({ day: AiLimit, week: AiLimit, month: AiLimit }),
19397
+ keepAwake: external_exports.boolean()
19297
19398
  }).partial().optional()
19298
19399
  });
19299
19400
  var ChatBody = external_exports.object({
@@ -19342,6 +19443,7 @@ function startControlServer(ctx, node, port = ctx.config.controlPort) {
19342
19443
  folders: ctx.config.folders,
19343
19444
  repos: ctx.config.repos,
19344
19445
  cacheMax: ctx.config.cacheMax,
19446
+ answerWaitMinutes: ctx.config.answerWaitMinutes ?? DEFAULT_WAIT_MINUTES,
19345
19447
  lending: ctx.config.lending,
19346
19448
  lendingNow: await lendingAllowed(ctx.config.lending),
19347
19449
  // The sandbox probe runs only when container lending is on (it may download a small image).
@@ -19370,10 +19472,11 @@ function startControlServer(ctx, node, port = ctx.config.controlPort) {
19370
19472
  "POST /api/settings": async (b) => {
19371
19473
  const s = Settings.parse(b);
19372
19474
  if (s.cacheMax !== void 0) ctx.config.cacheMax = s.cacheMax;
19475
+ if (s.answerWaitMinutes !== void 0) ctx.config.answerWaitMinutes = s.answerWaitMinutes;
19373
19476
  if (s.lending) ctx.config.lending = { ...ctx.config.lending, ...s.lending };
19374
19477
  await ctx.save();
19375
19478
  void node.tick();
19376
- return { cacheMax: ctx.config.cacheMax, lending: ctx.config.lending };
19479
+ return { cacheMax: ctx.config.cacheMax, answerWaitMinutes: ctx.config.answerWaitMinutes ?? DEFAULT_WAIT_MINUTES, lending: ctx.config.lending };
19377
19480
  },
19378
19481
  "POST /api/pause": async (b) => {
19379
19482
  await node.pauseLending(!!b.paused);
@@ -29916,14 +30019,14 @@ var import_node_path14 = require("node:path");
29916
30019
  // apps/agent/src/devicelogin.ts
29917
30020
  init_define_BITPULL_UI_I18N();
29918
30021
  var import_promises16 = require("node:fs/promises");
29919
- var import_node_os9 = require("node:os");
30022
+ var import_node_os10 = require("node:os");
29920
30023
  var import_node_path13 = require("node:path");
29921
30024
  async function startDeviceLogin(cfg) {
29922
30025
  const base = cfg.coordinatorUrl.replace(/\/+$/, "");
29923
30026
  const res = await fetch(`${base}/public/device/start`, {
29924
30027
  method: "POST",
29925
30028
  headers: { "content-type": "application/json" },
29926
- body: JSON.stringify({ deviceName: `${(0, import_node_os9.hostname)()} (${(0, import_node_os9.platform)()})` }),
30029
+ body: JSON.stringify({ deviceName: `${(0, import_node_os10.hostname)()} (${(0, import_node_os10.platform)()})` }),
29927
30030
  signal: AbortSignal.timeout(2e4)
29928
30031
  });
29929
30032
  const data = await res.json().catch(() => ({}));
@@ -30025,14 +30128,17 @@ function createMcpServer(ctx) {
30025
30128
  idleMinutes: external_exports.number().int().min(0).max(1440).optional().describe("Lend only after this many minutes without keyboard/mouse; 0 = always"),
30026
30129
  onlyOnAc: external_exports.boolean().optional().describe("Lend only when plugged in"),
30027
30130
  hours: external_exports.tuple([external_exports.number().int().min(0).max(23), external_exports.number().int().min(0).max(24)]).nullable().optional().describe("Lend only between these hours, e.g. [22, 8]; null = any time"),
30028
- cacheCopies: external_exports.number().int().min(0).max(1e3).optional().describe("How many public repos of others to keep a copy of")
30131
+ cacheCopies: external_exports.number().int().min(0).max(1e3).optional().describe("How many public repos of others to keep a copy of"),
30132
+ keepAwake: external_exports.boolean().optional().describe("Keep the computer from sleeping while it runs a job for someone (the display can still turn off); default on"),
30133
+ answerWaitMinutes: external_exports.number().int().min(1).max(120).optional().describe("How long to wait for answers from the network's AI models (default 10 minutes)")
30029
30134
  },
30030
30135
  annotations: { destructiveHint: false }
30031
30136
  },
30032
- ({ cacheCopies, ...lending }) => run2(async () => {
30137
+ ({ cacheCopies, answerWaitMinutes, ...lending }) => run2(async () => {
30033
30138
  const body = {};
30034
30139
  if (Object.keys(lending).length) body.lending = lending;
30035
30140
  if (cacheCopies !== void 0) body.cacheMax = cacheCopies;
30141
+ if (answerWaitMinutes !== void 0) body.answerWaitMinutes = answerWaitMinutes;
30036
30142
  return control(ctx, "/api/settings", body);
30037
30143
  })
30038
30144
  );
@@ -30150,16 +30256,18 @@ function createMcpServer(ctx) {
30150
30256
  system: external_exports.string().optional(),
30151
30257
  tier: external_exports.enum(["small", "medium", "large"]).optional().describe("Model size: small for simple tasks, large for harder ones"),
30152
30258
  model: external_exports.string().optional().describe("Exact model name, e.g. qwen2.5:7b; overrides tier"),
30153
- maxTokens: external_exports.number().int().min(1).max(32e3).optional()
30259
+ maxTokens: external_exports.number().int().min(1).max(32e3).optional(),
30260
+ waitMinutes: external_exports.number().int().min(1).max(120).optional().describe("How long to wait for the answer; default: the person's setting (10 minutes). Models on a lender's processor can be slow.")
30154
30261
  },
30155
30262
  annotations: { openWorldHint: true }
30156
30263
  },
30157
- ({ prompt, system, tier, model, maxTokens }) => run2(
30264
+ ({ prompt, system, tier, model, maxTokens, waitMinutes }) => run2(
30158
30265
  () => askOpenModel(ctx, {
30159
30266
  messages: [...system ? [{ role: "system", content: system }] : [], { role: "user", content: prompt }],
30160
30267
  tier,
30161
30268
  model,
30162
- maxTokens
30269
+ maxTokens,
30270
+ waitMinutes
30163
30271
  })
30164
30272
  )
30165
30273
  );
@@ -30244,7 +30352,8 @@ function createMcpServer(ctx) {
30244
30352
  seconds: external_exports.number().int().min(5).max(600).optional(),
30245
30353
  lyrics: external_exports.string().max(1e4).optional(),
30246
30354
  voice: external_exports.string().max(50).optional(),
30247
- language: external_exports.string().max(10).optional()
30355
+ language: external_exports.string().max(10).optional(),
30356
+ waitMinutes: external_exports.number().int().min(1).max(120).optional().describe("How long to wait; default: the person's setting, at least 30 minutes for images and music")
30248
30357
  }
30249
30358
  },
30250
30359
  (input) => run2(() => useOpenModel(ctx, input))
@@ -30631,7 +30740,8 @@ Set up this computer (works with or without the app open; add --json for machine
30631
30740
  docker, ollama, apple-container: prints the official commands, --run runs them
30632
30741
  bitpull pull <model> download an open model to lend (see "bitpull doctor" for the catalogue)
30633
30742
  bitpull set <rule>=<value>\u2026 lending rules: enabled, maxCpus, maxMemoryMb, gpu, containers, serveModels,
30634
- idleMinutes, onlyOnAc, hours (e.g. hours=22-8 or hours=any), cacheMax
30743
+ idleMinutes, onlyOnAc, hours (e.g. hours=22-8 or hours=any), keepAwake, cacheMax,
30744
+ waitMinutes (how long to wait for AI answers, default 10)
30635
30745
  bitpull limits <p>.<k>=<n>\u2026 AI work for others, p = day|week|month, k = requests|tokens, n or "none"
30636
30746
  bitpull connect <tool>|--list connect an AI tool (claude-code, codex, cursor, windsurf, gemini, vscode, claude-desktop)
30637
30747
  bitpull version version of this BitPull
@@ -30671,11 +30781,11 @@ function requireLogin(cfg) {
30671
30781
  if (!cfg.token) throw new Error('Not logged in. Run "bitpull login <email>".');
30672
30782
  }
30673
30783
  function openBrowser(url) {
30674
- const cmd = (0, import_node_os10.platform)() === "darwin" ? "open" : (0, import_node_os10.platform)() === "win32" ? "cmd" : "xdg-open";
30675
- const args = (0, import_node_os10.platform)() === "win32" ? ["/c", "start", "", url] : [url];
30676
- (0, import_node_child_process7.spawn)(cmd, args, { stdio: "ignore", detached: true }).unref();
30784
+ const cmd = (0, import_node_os11.platform)() === "darwin" ? "open" : (0, import_node_os11.platform)() === "win32" ? "cmd" : "xdg-open";
30785
+ const args = (0, import_node_os11.platform)() === "win32" ? ["/c", "start", "", url] : [url];
30786
+ (0, import_node_child_process8.spawn)(cmd, args, { stdio: "ignore", detached: true }).unref();
30677
30787
  }
30678
- var agentVersion = () => true ? "0.1.13" : "dev";
30788
+ var agentVersion = () => true ? "0.1.15" : "dev";
30679
30789
  var dashboardUrl = (cfg) => `http://127.0.0.1:${cfg.controlPort}/#token=${cfg.controlToken}`;
30680
30790
  var AppNotRunning = class extends Error {
30681
30791
  };
@@ -30700,6 +30810,7 @@ var print = (value, json2, human) => json2 ? console.log(JSON.stringify(value, n
30700
30810
  function parseRules(words) {
30701
30811
  const lending = {};
30702
30812
  let cacheMax;
30813
+ let waitMinutes;
30703
30814
  for (const w of words) {
30704
30815
  const [k, v] = w.split("=", 2);
30705
30816
  if (!k || v === void 0) throw new Error(`Expected key=value, got "${w}"`);
@@ -30718,6 +30829,7 @@ function parseRules(words) {
30718
30829
  case "serveModels":
30719
30830
  case "onlyOnAc":
30720
30831
  case "paused":
30832
+ case "keepAwake":
30721
30833
  lending[k] = bool();
30722
30834
  break;
30723
30835
  case "maxCpus":
@@ -30742,11 +30854,14 @@ function parseRules(words) {
30742
30854
  case "cacheMax":
30743
30855
  cacheMax = num();
30744
30856
  break;
30857
+ case "waitMinutes":
30858
+ waitMinutes = Math.min(120, Math.max(1, Math.round(num())));
30859
+ break;
30745
30860
  default:
30746
- throw new Error(`Unknown rule "${k}". Rules: enabled, maxCpus, maxMemoryMb, gpu, containers, serveModels, idleMinutes, onlyOnAc, hours, cacheMax`);
30861
+ throw new Error(`Unknown rule "${k}". Rules: enabled, maxCpus, maxMemoryMb, gpu, containers, serveModels, idleMinutes, onlyOnAc, hours, keepAwake, cacheMax, waitMinutes`);
30747
30862
  }
30748
30863
  }
30749
- return { lending, cacheMax };
30864
+ return { lending, cacheMax, waitMinutes };
30750
30865
  }
30751
30866
  async function waitTask(id) {
30752
30867
  let last = "";
@@ -30833,7 +30948,7 @@ Lending: ${d.lending.enabled ? d.lending.paused ? "paused" : "on" : "off"} \xB7
30833
30948
  }
30834
30949
  return;
30835
30950
  }
30836
- const req = requirementsFor((0, import_node_os10.platform)(), (0, import_node_os10.arch)() === "arm64" ? "arm64" : "x64").find((r) => r.id === what);
30951
+ const req = requirementsFor((0, import_node_os11.platform)(), (0, import_node_os11.arch)() === "arm64" ? "arm64" : "x64").find((r) => r.id === what);
30837
30952
  if (!req || !["docker", "ollama", "apple-container", "nvidia-driver"].includes(req.id)) throw new Error("Usage: bitpull install lemonade|docker|ollama|apple-container|nvidia-driver");
30838
30953
  console.log(`${req.name} (${req.level}): ${req.enables}
30839
30954
  Terms: ${req.terms}${req.needsAdmin ? "\nNeeds administrator rights: the system will ask for confirmation." : ""}${req.notes ? `
@@ -30846,7 +30961,7 @@ Official guide: ${req.docs}
30846
30961
  console.error(`
30847
30962
  > ${c}`);
30848
30963
  const code = await new Promise((resolve) => {
30849
- const p = (0, import_node_child_process7.spawn)(c, { shell: true, stdio: "inherit" });
30964
+ const p = (0, import_node_child_process8.spawn)(c, { shell: true, stdio: "inherit" });
30850
30965
  p.on("exit", (n) => resolve(n ?? 1));
30851
30966
  p.on("error", () => resolve(1));
30852
30967
  });
@@ -30886,14 +31001,15 @@ Official guide: ${req.docs}
30886
31001
  return;
30887
31002
  }
30888
31003
  case "set": {
30889
- const { lending, cacheMax } = parseRules([arg, ...rest].filter(Boolean));
31004
+ const { lending, cacheMax, waitMinutes } = parseRules([arg, ...rest].filter(Boolean));
30890
31005
  try {
30891
- const r = await appApi(cfg, "/api/settings", { lending, ...cacheMax !== void 0 ? { cacheMax } : {} });
30892
- console.log(JSON.stringify(r.lending, null, 2));
31006
+ const r = await appApi(cfg, "/api/settings", { ...Object.keys(lending).length ? { lending } : {}, ...cacheMax !== void 0 ? { cacheMax } : {}, ...waitMinutes !== void 0 ? { answerWaitMinutes: waitMinutes } : {} });
31007
+ console.log(JSON.stringify({ ...r.lending, answerWaitMinutes: r.answerWaitMinutes }, null, 2));
30893
31008
  } catch (err) {
30894
31009
  if (!(err instanceof AppNotRunning)) throw err;
30895
31010
  cfg.lending = { ...cfg.lending, ...lending };
30896
31011
  if (cacheMax !== void 0) cfg.cacheMax = cacheMax;
31012
+ if (waitMinutes !== void 0) cfg.answerWaitMinutes = waitMinutes;
30897
31013
  await saveConfig(cfg);
30898
31014
  console.log("Saved. The app applies it when it starts.");
30899
31015
  }