[{"data":1,"prerenderedAt":1110},["ShallowReactive",2],{"docs-doc-en-localization":3,"docs-list-en":1015},{"doc":4,"locale":108,"available":1013},{"id":5,"title":6,"body":7,"description":1002,"extension":1003,"group":1004,"meta":1005,"navigation":484,"order":1006,"path":1007,"section":1008,"seo":1009,"stem":1010,"updated":1011,"__hash__":1012},"docs_en\u002Fdocs\u002Flocalization.md","Translating the interface",{"type":8,"value":9,"toc":987},"minimark",[10,31,36,51,54,134,141,145,155,309,313,389,393,435,439,509,525,529,562,566,569,704,725,729,732,762,765,769,772,916,926,935,938,946,949,953,970,974,983],[11,12,15],"callout",{"color":13,"icon":14},"primary","i-lucide-languages",[16,17,18,22,23,30],"p",{},[19,20,21],"strong",{},"Want to start translating right away?"," The interface strings can also be translated directly on Crowdin — open ",[24,25,29],"a",{"href":26,"rel":27},"https:\u002F\u002Fcrowdin.scnexus.net\u002F",[28],"nofollow","crowdin.scnexus.net"," and claim the strings; you do not have to read this page first. The platform is still in trial, and how it works is described under Crowdin translation platform at the end. If you want to change files in the repository or add a language, carry on with the sections below.",[32,33,35],"h2",{"id":34},"what-the-translations-cover","What the translations cover",[16,37,38,39,44,45,50],{},"The interface strings of SCNexus live with the code in the ",[24,40,43],{"href":41,"rel":42},"https:\u002F\u002Fgithub.com\u002FMengLuoRJ\u002Fscnexus",[28],"scnexus-client"," repository and are loaded with ",[24,46,49],{"href":47,"rel":48},"https:\u002F\u002Fgithub.com\u002Fintlify\u002Fvue-i18n",[28],"vue-i18n (Next)",": one directory per language, one JSON file per part of the interface. The body text of this documentation site is a separate body of content, covered under Documentation translation below.",[16,52,53],{},"There are three interface languages today:",[55,56,57,76],"table",{},[58,59,60],"thead",{},[61,62,63,67,70,73],"tr",{},[64,65,66],"th",{},"Language",[64,68,69],{},"Code",[64,71,72],{},"Directory",[64,74,75],{},"Name in the settings",[77,78,79,99,116],"tbody",{},[61,80,81,85,91,96],{},[82,83,84],"td",{},"Simplified Chinese",[82,86,87],{},[88,89,90],"code",{},"zh",[82,92,93],{},[88,94,95],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Fzh",[82,97,98],{},"简体中文",[61,100,101,104,109,114],{},[82,102,103],{},"English",[82,105,106],{},[88,107,108],{},"en",[82,110,111],{},[88,112,113],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Fen",[82,115,103],{},[61,117,118,121,126,131],{},[82,119,120],{},"Traditional Chinese",[82,122,123],{},[88,124,125],{},"zh-Hant",[82,127,128],{},[88,129,130],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Fzh-Hant",[82,132,133],{},"繁體中文",[16,135,136,137,140],{},"Simplified Chinese is the ",[19,138,139],{},"source language",": new strings land there first, and the other languages follow its keys.",[32,142,144],{"id":143},"where-the-translation-files-live","Where the translation files live",[146,147,152],"pre",{"className":148,"code":150,"language":151},[149],"language-text","packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002F\n├── index.ts        # registers zh \u002F en \u002F zh-Hant\n├── zh\u002F\n│   ├── index.ts    # merges and exports every module in this directory\n│   ├── ui.json\n│   ├── account.json\n│   └── … 14 modules in total\n├── en\u002F             # the same files, with the same names\n└── zh-Hant\u002F\n","text",[88,153,150],{"__ignoreMap":154},"",[55,156,157,167],{},[58,158,159],{},[61,160,161,164],{},[64,162,163],{},"Module",[64,165,166],{},"What it covers",[77,168,169,179,189,199,209,219,229,239,249,259,269,279,289,299],{},[61,170,171,176],{},[82,172,173],{},[88,174,175],{},"ui.json",[82,177,178],{},"Sidebar and shared buttons, the four settings tabs, updates and logging privacy",[61,180,181,186],{},[82,182,183],{},[88,184,185],{},"account.json",[82,187,188],{},"Sign-in and sign-up, nickname and email, levels, check-in, two-step verification",[61,190,191,196],{},[82,192,193],{},[88,194,195],{},"campaign.json",[82,197,198],{},"Campaign lists, details, installation analysis and activation",[61,200,201,206],{},[82,202,203],{},[88,204,205],{},"customize.json",[82,207,208],{},"The custom content list and launcher maps",[61,210,211,216],{},[82,212,213],{},[88,214,215],{},"replay.json",[82,217,218],{},"Replays: scanning, duplicate grouping, match analysis, export",[61,220,221,226],{},[82,222,223],{},[88,224,225],{},"workshop.json",[82,227,228],{},"Workshop list, details, download",[61,230,231,236],{},[82,232,233],{},[88,234,235],{},"downloads.json",[82,237,238],{},"Download task list, source forms, verification and installation",[61,240,241,246],{},[82,242,243],{},[88,244,245],{},"weekly.json",[82,247,248],{},"Weekly mutations and the mutator reference",[61,250,251,256],{},[82,252,253],{},[88,254,255],{},"toolbox.json",[82,257,258],{},"Creation tools (the encoding converter and friends)",[61,260,261,266],{},[82,262,263],{},[88,264,265],{},"aiAssistant.json",[82,267,268],{},"Smart Assistant and the MCP connection notes",[61,270,271,276],{},[82,272,273],{},[88,274,275],{},"contentCenter.json",[82,277,278],{},"The Workshop switch and its explanation in Feature management",[61,280,281,286],{},[82,282,283],{},[88,284,285],{},"creatorActivation.json",[82,287,288],{},"Redeeming and reporting creator status",[61,290,291,296],{},[82,292,293],{},[88,294,295],{},"content.json",[82,297,298],{},"Content identification and the package.json \u002F metadata.txt conflict prompt",[61,300,301,306],{},[82,302,303],{},[88,304,305],{},"contentMedia.json",[82,307,308],{},"Package documents, changelogs and media on the work details page",[32,310,312],{"id":311},"key-conventions","Key conventions",[314,315,316,342,348,366,376,386],"ul",{},[317,318,319,322,323,326,327,330,331,334,335,337,338,341],"li",{},[19,320,321],{},"Flat keys with a module prefix."," The configuration enables ",[88,324,325],{},"flatJson: true",", so keys look like ",[88,328,329],{},"ui.home"," or ",[88,332,333],{},"campaign.title"," rather than nested objects, and the prefix has to match the filename — ",[88,336,175],{}," may only contain keys starting with ",[88,339,340],{},"ui.",". A test enforces this.",[317,343,344,347],{},[19,345,346],{},"Values are plain strings"," — no HTML tags and no line breaks.",[317,349,350,353,354,357,358,361,362,365],{},[19,351,352],{},"Variables use named placeholders"," such as ",[88,355,356],{},"\"{amount} total XP\"",". Placeholders like ",[88,359,360],{},"{amount}"," and ",[88,363,364],{},"{count}"," must be kept verbatim in a translation; their names cannot change.",[317,367,368,371,372,375],{},[19,369,370],{},"No plural segments."," The existing strings have no ",[88,373,374],{},"|"," plural forms, so phrase counts in a way that works for any number, for example \"Total: {count}\".",[317,377,378,381,382,385],{},[19,379,380],{},"The three languages must have exactly the same key set."," Adding or removing a string means touching all three files; a missing key fails ",[88,383,384],{},"locales.test.ts"," immediately.",[317,387,388],{},"Group the keys of one feature together in the order the interface presents them; alphabetical order is not required.",[32,390,392],{"id":391},"changing-or-adding-a-translation","Changing or adding a translation",[394,395,396,411,418,429,432],"ol",{},[317,397,398,399,402,403,406,407,410],{},"Fork ",[24,400,43],{"href":41,"rel":401},[28]," and branch off ",[88,404,405],{},"locales",". Translation changes and feature changes go into separate pull requests so each can be reviewed on its own; if that branch does not exist yet, follow the repository's current ",[88,408,409],{},"CONTRIBUTING.md",".",[317,412,413,414,417],{},"Change only the target language's JSON. Unless you genuinely need a new string, leave ",[88,415,416],{},"zh\u002F"," alone — changing the source language means keeping three files in step and deserves its own code pull request.",[317,419,420,421,424,425,428],{},"Run ",[88,422,423],{},"pnpm install",", then ",[88,426,427],{},"pnpm dev",", switch the interface language under Settings → General → Display language and check screen by screen. The switch takes effect immediately, with no restart.",[317,430,431],{},"Run the language resource tests (next section). They check for duplicate keys, matching prefixes and identical key sets across the three languages.",[317,433,434],{},"Open the pull request, naming the modules and screens you touched; screenshots help.",[32,436,438],{"id":437},"verifying-locally","Verifying locally",[146,440,444],{"className":441,"code":442,"language":443,"meta":154,"style":154},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# only the language resource tests\npnpm --filter @scnexus\u002Fapp-renderer-v2 test:unit --run src\u002Flocales\u002F__tests__\u002Flocales.test.ts\n\n# format only the file you changed, so reformatting does not drag the whole directory into the diff\npnpm exec oxfmt --write packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Fzh\u002Fui.json\n","bash",[88,445,446,455,479,486,492],{"__ignoreMap":154},[447,448,451],"span",{"class":449,"line":450},"line",1,[447,452,454],{"class":453},"sutJx","# only the language resource tests\n",[447,456,458,462,466,470,473,476],{"class":449,"line":457},2,[447,459,461],{"class":460},"sbgvK","pnpm",[447,463,465],{"class":464},"stzsN"," --filter",[447,467,469],{"class":468},"s_sjI"," @scnexus\u002Fapp-renderer-v2",[447,471,472],{"class":468}," test:unit",[447,474,475],{"class":464}," --run",[447,477,478],{"class":468}," src\u002Flocales\u002F__tests__\u002Flocales.test.ts\n",[447,480,482],{"class":449,"line":481},3,[447,483,485],{"emptyLinePlaceholder":484},true,"\n",[447,487,489],{"class":449,"line":488},4,[447,490,491],{"class":453},"# format only the file you changed, so reformatting does not drag the whole directory into the diff\n",[447,493,495,497,500,503,506],{"class":449,"line":494},5,[447,496,461],{"class":460},[447,498,499],{"class":468}," exec",[447,501,502],{"class":468}," oxfmt",[447,504,505],{"class":464}," --write",[447,507,508],{"class":468}," packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Fzh\u002Fui.json\n",[16,510,511,512,515,516,518,519,521,522,524],{},"The tests check four things: no duplicate keys within a file, key prefixes matching the filename, ",[88,513,514],{},"messages[locale]"," matching what the directory merges to, and the ",[88,517,108],{}," \u002F ",[88,520,125],{}," key sets matching ",[88,523,90],{}," exactly.",[32,526,528],{"id":527},"checklist-before-submitting","Checklist before submitting",[314,530,531,537,544,553,556,559],{},[317,532,533,534,536],{},"Keys line up one-to-one with ",[88,535,90],{}," — nothing dropped, nothing invented, no home-made prefixes",[317,538,539,540,543],{},"Placeholders ",[88,541,542],{},"{…}"," match the original in both count and name",[317,545,546,547,549,550,552],{},"No Chinese left in the ",[88,548,108],{}," files; ",[88,551,125],{}," uses Taiwanese vocabulary",[317,554,555],{},"Punctuation follows each language (half-width with spaces in English, full-width in Chinese)",[317,557,558],{},"Proper nouns follow the glossary below",[317,560,561],{},"The language resource tests pass; indentation and key order still match the original file, with no wholesale reformatting",[32,563,565],{"id":564},"glossary","Glossary",[16,567,568],{},"One concept has one translation across modules; when editing, keep the existing wording:",[55,570,571,582],{},[58,572,573],{},[61,574,575,578,580],{},[64,576,577],{},"Chinese",[64,579,103],{},[64,581,120],{},[77,583,584,595,606,617,628,639,650,661,672,682,693],{},[61,585,586,589,592],{},[82,587,588],{},"星际枢纽",[82,590,591],{},"SCNexus",[82,593,594],{},"星際樞紐",[61,596,597,600,603],{},[82,598,599],{},"战役管理",[82,601,602],{},"Campaigns",[82,604,605],{},"戰役管理",[61,607,608,611,614],{},[82,609,610],{},"自制作品",[82,612,613],{},"Custom content",[82,615,616],{},"自製作品",[61,618,619,622,625],{},[82,620,621],{},"创意工坊",[82,623,624],{},"Workshop (SCNexus Workshop for the setting)",[82,626,627],{},"創意工坊",[61,629,630,633,636],{},[82,631,632],{},"下载管理 \u002F 上传管理",[82,634,635],{},"Downloads \u002F Uploads",[82,637,638],{},"下載管理 \u002F 上傳管理",[61,640,641,644,647],{},[82,642,643],{},"创作者中心",[82,645,646],{},"Creator center",[82,648,649],{},"創作者中心",[61,651,652,655,658],{},[82,653,654],{},"每周突变",[82,656,657],{},"Weekly mutations",[82,659,660],{},"每週突變",[61,662,663,666,669],{},[82,664,665],{},"录像管理",[82,667,668],{},"Replay management",[82,670,671],{},"錄像管理",[61,673,674,677,680],{},[82,675,676],{},"智能助手",[82,678,679],{},"Smart Assistant",[82,681,676],{},[61,683,684,687,690],{},[82,685,686],{},"创作工具",[82,688,689],{},"Creation Tools",[82,691,692],{},"創作工具",[61,694,695,698,701],{},[82,696,697],{},"个人中心",[82,699,700],{},"Personal center",[82,702,703],{},"個人中心",[16,705,706,707,710,711,518,714,717,718,518,721,724],{},"Work numbers (",[88,708,709],{},"SCNID","), format names (",[88,712,713],{},"Maps",[88,715,716],{},"Mods",") and filenames (",[88,719,720],{},"package.json",[88,722,723],{},"metadata.txt",") stay as they are.",[32,726,728],{"id":727},"how-the-interface-language-is-chosen","How the interface language is chosen",[16,730,731],{},"With Display language set to System default, the app walks the system's language list and stops at the first match:",[314,733,734,740,759],{},[317,735,736,737,739],{},"starting with ",[88,738,108],{}," → English;",[317,741,736,742,744,745,748,749,518,752,518,755,758],{},[88,743,90],{},": ",[88,746,747],{},"hant"," anywhere, or a region of ",[88,750,751],{},"tw",[88,753,754],{},"hk",[88,756,757],{},"mo"," → Traditional Chinese, otherwise Simplified Chinese;",[317,760,761],{},"anything else → Simplified Chinese.",[16,763,764],{},"A key missing from the target language falls back to Simplified Chinese rather than leaving a blank label, but that is only a safety net — shipped language packs should stay complete.",[32,766,768],{"id":767},"adding-an-interface-language","Adding an interface language",[16,770,771],{},"A new language is more than a set of translations: it has to be registered in code. Work through these in order:",[55,773,774,784],{},[58,775,776],{},[61,777,778,781],{},[64,779,780],{},"File",[64,782,783],{},"What to do",[77,785,786,803,822,836,848,865,878,891,904],{},[61,787,788,793],{},[82,789,790],{},[88,791,792],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002F\u003Ccode>\u002F",[82,794,795,796,798,799,802],{},"Create the directory: the same 14 JSON files as ",[88,797,90],{},", plus an ",[88,800,801],{},"index.ts"," that merges and exports them",[61,804,805,810],{},[82,806,807],{},[88,808,809],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002Findex.ts",[82,811,812,815,816,361,819],{},[88,813,814],{},"import"," the new language and add it to ",[88,817,818],{},"messages",[88,820,821],{},"createI18n({ messages })",[61,823,824,829],{},[82,825,826],{},[88,827,828],{},"packages\u002Fapp-shared\u002Fsrc\u002Ftypes\u002Fdesktop.type.ts",[82,830,831,832,835],{},"The ",[88,833,834],{},"DisplayLanguage"," union",[61,837,838,843],{},[82,839,840],{},[88,841,842],{},"packages\u002Fapp-shared\u002Fsrc\u002Fstores\u002Fsetting.store.ts",[82,844,845,847],{},[88,846,834],{}," is declared here as well; both places need the change",[61,849,850,855],{},[82,851,852],{},[88,853,854],{},"packages\u002Fapp-main\u002Fsrc\u002Fstores\u002Fsetting.ts",[82,856,857,858,861,862],{},"The JSON Schema ",[88,859,860],{},"enum"," for ",[88,863,864],{},"displayLanguage",[61,866,867,872],{},[82,868,869],{},[88,870,871],{},"packages\u002Fapp-main\u002Fsrc\u002Fmodules\u002Fsetting\u002Fsetting-validation.ts",[82,873,874,875],{},"The allowed-values array used when writing, and the system-language matching in ",[88,876,877],{},"resolveDisplayLanguage()",[61,879,880,885],{},[82,881,882],{},[88,883,884],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Fviews\u002FSettingsView.vue",[82,886,831,887,890],{},[88,888,889],{},"languages"," dropdown options (each name written in its own language)",[61,892,893,898],{},[82,894,895],{},[88,896,897],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Fviews\u002Fweekly-mutations\u002FWeeklyMutationsView.vue",[82,899,831,900,903],{},[88,901,902],{},"Intl"," locale mapping for mutation dates and ratings",[61,905,906,911],{},[82,907,908],{},[88,909,910],{},"packages\u002Fapp-renderer-v2\u002Fsrc\u002Flocales\u002F__tests__\u002Flocales.test.ts",[82,912,831,913,915],{},[88,914,405],{}," array, otherwise the tests ignore the new language",[16,917,918,919,361,922,925],{},"Finish with ",[88,920,921],{},"pnpm typecheck",[88,923,924],{},"pnpm test:renderer",". Some interface tests assert on actual strings (the Traditional Chinese replay cases, for instance), so they need adjusting when the default language changes or a test starts referencing new keys.",[32,927,929,930],{"id":928},"crowdin-translation-platform-experimental","Crowdin translation platform ",[931,932,934],"badge",{"color":933},"warning","experimental",[16,936,937],{},"To make collaboration easier we are trialling Crowdin as the home of translation work; if you would like to help with languages, you can claim strings on the platform:",[314,939,940],{},[317,941,942],{},[24,943,945],{"href":26,"rel":944},[28],"SCNexus Crowdin",[16,947,948],{},"Translations made there still end up merged back into the repository, so the conventions above about keys, placeholders and key sets apply just the same. The workflow is still being adjusted, so the specifics may change.",[32,950,952],{"id":951},"documentation-translation","Documentation translation",[16,954,955,956,961,962,965,966,969],{},"The body text of this site (",[24,957,960],{"href":958,"rel":959},"https:\u002F\u002Fgithub.com\u002FMengLuoRJ\u002Fscnexus-docs",[28],"scnexus-docs",") is maintained separately from the interface strings: Chinese lives in ",[88,963,964],{},"content\u002Fzh-CN\u002F",", English in ",[88,967,968],{},"content\u002Fen\u002F",", and two files at the same path are the two language versions of one page. The app documentation and the reference section are fully translated; the editor documentation is still the Chinese text with a notice. Documentation translation goes through the docs repository's pull request flow and is outside the scope of this page.",[32,971,973],{"id":972},"thanks","Thanks",[16,975,976,977,982],{},"Special thanks to ",[24,978,981],{"href":979,"rel":980},"https:\u002F\u002Fcrowdin.com\u002F",[28],"Crowdin"," for providing a translation platform to open-source projects.",[984,985,986],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":154,"searchDepth":481,"depth":481,"links":988},[989,990,991,992,993,994,995,996,997,998,1000,1001],{"id":34,"depth":457,"text":35},{"id":143,"depth":457,"text":144},{"id":311,"depth":457,"text":312},{"id":391,"depth":457,"text":392},{"id":437,"depth":457,"text":438},{"id":527,"depth":457,"text":528},{"id":564,"depth":457,"text":565},{"id":727,"depth":457,"text":728},{"id":767,"depth":457,"text":768},{"id":928,"depth":457,"text":999},"Crowdin translation platform experimental",{"id":951,"depth":457,"text":952},{"id":972,"depth":457,"text":973},"Where the interface translation files live, how keys are named, how to submit changes, how to verify them locally, and what adding a language touches.","md","contribute",{},210,"\u002Fdocs\u002Flocalization","app",{"title":6,"description":1002},"docs\u002Flocalization","2026-11-01","9pNUgb8Ok3Hc5cvV2JU__BMYrhDyxiKspdrWddfdelc",[108,1014],"zh-CN",[1016,1022,1026,1031,1037,1041,1045,1050,1053,1057,1062,1065,1070,1075,1080,1085,1090,1094,1099,1104,1109],{"path":1017,"title":1018,"description":1019,"order":450,"group":1020,"section":1021,"contentLocale":1014},"\u002Fdocs\u002Feditor","创作流程概览","从在《星际争霸II》编辑器中制作，到打包、分发与更新，说明星际枢纽在创作流程里承担的环节。","start","editor",{"path":1023,"title":1024,"description":1025,"order":450,"group":1020,"section":1008,"contentLocale":108},"\u002Fdocs\u002Foverview","Getting started","SCNexus is a hub app built for the StarCraft community",{"path":1027,"title":1028,"description":1029,"order":450,"group":1030,"section":1030,"contentLocale":108},"\u002Fdocs\u002Freference","Overview","The packaging and source conventions that importing, installing and distributing content depends on.","reference",{"path":1032,"title":1033,"description":1034,"order":1035,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fcampaign","Campaign management","Import your own campaigns into the library, activate them in the game, and restore the official campaigns at any time",10,"usage",{"path":1038,"title":1039,"description":1040,"order":1035,"group":1036,"section":1021,"contentLocale":1014},"\u002Fdocs\u002Fpackaging","打包安装包","把编辑器产出的地图、模组与 package.json 组织成一个能被星际枢纽自动识别并安装的压缩包。",{"path":1042,"title":1043,"description":1044,"order":1035,"group":1030,"section":1030,"contentLocale":108},"\u002Fdocs\u002Fscnexus-package","SCNexus package standard","Directory layout, package.json manifest fields, map and mod resource declarations, and how launchers and bundled documents are written for SCNexus work packages.",{"path":1046,"title":1047,"description":1048,"order":1049,"group":1030,"section":1030,"contentLocale":108},"\u002Fdocs\u002Fccm-package","CCM package standard","How CCM describes a campaign in metadata.txt, the key-value format, the directory layout and install targets, and how SCNexus reads these packages.",20,{"path":1051,"title":613,"description":1052,"order":1049,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fcustomize","Install maps and mods straight into the game, then pick a launcher map and start in one click",{"path":1054,"title":1055,"description":1056,"order":1049,"group":1036,"section":1021,"contentLocale":1014},"\u002Fdocs\u002Ftoolbox","创作工具 · 编码转换","把中文等非 ASCII 文本转成 Galaxy 代码里可用的转义写法，可选直接转码、字符串、文本与触发调试四种输出。",{"path":1058,"title":1059,"description":1060,"order":1061,"group":1030,"section":1030,"contentLocale":108},"\u002Fdocs\u002Fgithub-source","GitHub source standard","The manifest and structural requirements a public GitHub repository has to meet to serve as an install source, and how addresses and branches are written.",30,{"path":1063,"title":657,"description":1064,"order":1061,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fweekly-mutations","This week's mutation map, mutators and community rating, plus the full mutator reference",{"path":1066,"title":1067,"description":1068,"order":1069,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Freplays","Replays","Index replays by StarCraft profile and replay type, with duplicate detection, bulk export and match data",40,{"path":1071,"title":1072,"description":1073,"order":1074,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fworkshop","Workshop","Browse community works, open their details and download reviewed releases",50,{"path":1076,"title":1077,"description":1078,"order":1079,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fcreator","Creator center and uploads","Create works, maintain their details, upload new versions and track upload tasks",60,{"path":1081,"title":1082,"description":1083,"order":1084,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fdownloads","Downloads","Fetch content from GitHub or the Workshop, then install it once you have checked it",70,{"path":1086,"title":1087,"description":1088,"order":1089,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Ftools","Creation tools","Local helpers such as the encoding converter; input is never uploaded or stored",80,{"path":1091,"title":679,"description":1092,"order":1093,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fai-assistant","A controlled MCP service connecting local data to AI clients on the same machine",90,{"path":1095,"title":1096,"description":1097,"order":1098,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Faccount","Account and personal center","Signing in, your profile and level progression, and setting up and maintaining two-step verification",100,{"path":1100,"title":1101,"description":1102,"order":1103,"group":1036,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fsettings","Settings","Language, game directories, feature switches and logging privacy, tab by tab",110,{"path":1105,"title":1106,"description":1107,"order":1108,"group":1004,"section":1008,"contentLocale":108},"\u002Fdocs\u002Fcontributing","Contributing","How to contribute to SCNexus: where the repositories live, how to set up a development environment, what to run before submitting, the code and documentation conventions, the code of conduct, and how to report security issues.",200,{"path":1007,"title":6,"description":1002,"order":1006,"group":1004,"section":1008,"contentLocale":108},1793550744913]