From dd6486dc4d5b4310e979834cb34a7ebecda768ef Mon Sep 17 00:00:00 2001 From: YAOYAO888999 <1yaoyao1234567890@gmail.com> Date: Sat, 8 Aug 2026 11:32:31 +0800 Subject: [PATCH 1/3] Add files via upload --- .github/workflows/build-cn.yml | 98 ++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .github/workflows/build-cn.yml diff --git a/.github/workflows/build-cn.yml b/.github/workflows/build-cn.yml new file mode 100644 index 0000000..b53e69b --- /dev/null +++ b/.github/workflows/build-cn.yml @@ -0,0 +1,98 @@ +name: Build ShardX Chinese + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + build-windows: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Set up Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-pc-windows-msvc + + - name: Install npm dependencies + run: npm ci + + - name: Add Simplified Chinese UI layer + shell: pwsh + run: | + $b64 = @' +Ly8gU2hhcmRYIOeugOS9k+S4reaWh+eVjOmdouWxggovLyDku4Xnv7vor5EgTGF1bmNoZXIg5Y+v6KeB55WM6Z2i77yM5LiN5L+u5pS5IFNoYXJkWCBDaHJvbWl1bSBlbmdpbmUg5oiW5Lia5Yqh5pWw5o2u44CCCgpjb25zdCBleGFjdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsKICAiV29ya3NwYWNlIjogIuW3peS9nOWMuiIsCiAgIkJyb3dzZXJzIjogIua1j+iniOWZqOeOr+WigyIsCiAgIkJyb3dzZXIiOiAi5rWP6KeI5ZmoIiwKICAiUHJveGllcyI6ICLku6PnkIYiLAogICJQcm94eSI6ICLku6PnkIYiLAogICJQcm94eVNoYXJkIjogIlByb3h5U2hhcmQiLAogICJMaWJyYXJ5IjogIui1hOa6kOW6kyIsCiAgIkZpbmdlcnByaW50cyI6ICLmjIfnurnmqKHmnb8iLAogICJGaW5nZXJwcmludCI6ICLmjIfnurkiLAogICJTeXN0ZW0iOiAi57O757ufIiwKICAiU2V0dGluZ3MiOiAi6K6+572uIiwKICAiUHJvZmlsZXMiOiAi546v5aKD5pWw6YePIiwKICAiUHJvZmlsZSI6ICLmtY/op4jlmajnjq/looMiLAogICJSdW5uaW5nIjogIui/kOihjOS4rSIsCiAgIlNlYXJjaC4uLiI6ICLmkJzntKIuLi4iLAogICJTZWFyY2giOiAi5pCc57SiIiwKICAiSW1wb3J0IjogIuWvvOWFpSIsCiAgIkV4cG9ydCI6ICLlr7zlh7oiLAogICJGcm9tIHRlbXBsYXRlIjogIuS7juaooeadv+WIm+W7uiIsCiAgIisgTmV3IHByb2ZpbGUiOiAiKyDmlrDlu7rnjq/looMiLAogICJOZXcgcHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJOZXcgUHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJBbGwiOiAi5YWo6YOoIiwKICAiTmFtZSI6ICLlkI3np7AiLAogICJTdGF0dXMiOiAi54q25oCBIiwKICAiTm90ZXMiOiAi5aSH5rOoIiwKICAiVGltZSI6ICLml7bpl7QiLAogICJObyBwcm9maWxlcyB5ZXQiOiAi6L+Y5rKh5pyJ5rWP6KeI5Zmo546v5aKDIiwKICAiUGljayBhIGZpbmdlcnByaW50IHRlbXBsYXRlIHRvIHN0YXJ0IGEgY3VyYXRlZCByZWFsLUNocm9tZSBzbmFwc2hvdCwgb3IgYnVpbGQgb25lIGZyb20gc2NyYXRjaC4iOiAi6YCJ5oup5LiA5Liq5oyH57q55qih5p2/5b+r6YCf5Yib5bu6546v5aKD77yM5oiW5LuO6Zu25byA5aeL6YWN572u44CCIiwKICAiTGlnaHQiOiAi5rWF6ImyIiwKICAiRGFyayI6ICLmt7HoibIiLAogICJ1cCB0byBkYXRlIjogIuW3suaYr+acgOaWsOeJiOacrCIsCiAgIkRvd25sb2FkIE1DUCI6ICLkuIvovb0gTUNQIiwKICAiRG9jdW1lbnRhdGlvbiI6ICLkvb/nlKjmlofmoaMiLAogICJBVVRPTUFUSU9OIEFQSSI6ICLoh6rliqjljJYgQVBJIiwKICAiQXV0b21hdGlvbiBBUEkiOiAi6Ieq5Yqo5YyWIEFQSSIsCiAgIkNhbmNlbCI6ICLlj5bmtogiLAogICJEZWxldGUiOiAi5Yig6ZmkIiwKICAiT0siOiAi56Gu5a6aIiwKICAiQ29uZmlybSI6ICLnoa7orqQiLAogICJDbG9zZSI6ICLlhbPpl60iLAogICJTYXZlIjogIuS/neWtmCIsCiAgIkNyZWF0ZSI6ICLliJvlu7oiLAogICJBZGQiOiAi5re75YqgIiwKICAiRWRpdCI6ICLnvJbovpEiLAogICJDbG9uZSI6ICLlhYvpmoYiLAogICJEdXBsaWNhdGUiOiAi5aSN5Yi2546v5aKDIiwKICAiU3RhcnQiOiAi5ZCv5YqoIiwKICAiU3RvcCI6ICLlgZzmraIiLAogICJMYXVuY2giOiAi5ZCv5YqoIiwKICAiT3BlbiI6ICLmiZPlvIAiLAogICJSZWZyZXNoIjogIuWIt+aWsCIsCiAgIkNvcHkiOiAi5aSN5Yi2IiwKICAiUGFzdGUiOiAi57KY6LS0IiwKICAiUmVtb3ZlIjogIuenu+mZpCIsCiAgIlRlc3QiOiAi5rWL6K+VIiwKICAiVGVzdGluZy4uLiI6ICLmtYvor5XkuK0uLi4iLAogICJTdWNjZXNzIjogIuaIkOWKnyIsCiAgIkZhaWxlZCI6ICLlpLHotKUiLAogICJFcnJvciI6ICLplJnor68iLAogICJFbmFibGVkIjogIuW3suWQr+eUqCIsCiAgIkRpc2FibGVkIjogIuW3suemgeeUqCIsCiAgIk5vbmUiOiAi5pegIiwKICAiRGVmYXVsdCI6ICLpu5jorqQiLAogICJBdXRvIjogIuiHquWKqCIsCiAgIk1hbnVhbCI6ICLmiYvliqgiLAogICJDdXN0b20iOiAi6Ieq5a6a5LmJIiwKICAiR2VuZXJhbCI6ICLluLjop4QiLAogICJBZHZhbmNlZCI6ICLpq5jnuqciLAogICJOZXR3b3JrIjogIue9kee7nCIsCiAgIkxvY2FsZSI6ICLor63oqIDkuI7lnLDljLoiLAogICJMYW5ndWFnZSI6ICLor63oqIAiLAogICJUaW1lem9uZSI6ICLml7bljLoiLAogICJHZW9sb2NhdGlvbiI6ICLlnLDnkIbkvY3nva4iLAogICJDb3VudHJ5IjogIuWbveWuti/lnLDljLoiLAogICJDaXR5IjogIuWfjuW4giIsCiAgIkxhdGl0dWRlIjogIue6rOW6piIsCiAgIkxvbmdpdHVkZSI6ICLnu4/luqYiLAogICJVc2VybmFtZSI6ICLnlKjmiLflkI0iLAogICJQYXNzd29yZCI6ICLlr4bnoIEiLAogICJIb3N0IjogIuS4u+acuiIsCiAgIlBvcnQiOiAi56uv5Y+jIiwKICAiVHlwZSI6ICLnsbvlnosiLAogICJQcm90b2NvbCI6ICLljY/orq4iLAogICJGb2xkZXIiOiAi5paH5Lu25aS5IiwKICAiVGFncyI6ICLmoIfnrb4iLAogICJQaW5uZWQiOiAi572u6aG2IiwKICAiUGluIjogIue9rumhtiIsCiAgIlVucGluIjogIuWPlua2iOe9rumhtiIsCiAgIkNvb2tpZXMiOiAiQ29va2llIiwKICAiQ29va2llIjogIkNvb2tpZSIsCiAgIkV4dGVuc2lvbnMiOiAi5omp5bGV56iL5bqPIiwKICAiU2NyZWVuIjogIuWxj+W5lSIsCiAgIlJlc29sdXRpb24iOiAi5YiG6L6o546HIiwKICAiUGxhdGZvcm0iOiAi5bmz5Y+wIiwKICAiT3BlcmF0aW5nIHN5c3RlbSI6ICLmk43kvZzns7vnu58iLAogICJEZXZpY2UiOiAi6K6+5aSHIiwKICAiQ1BVIjogIuWkhOeQhuWZqCIsCiAgIkNQVSBjb3JlcyI6ICJDUFUg5qC45b+D5pWwIiwKICAiTWVtb3J5IjogIuWGheWtmCIsCiAgIk1lbW9yeSAoR0IpIjogIuWGheWtmCAoR0IpIiwKICAiRm9udHMiOiAi5a2X5L2TIiwKICAiQXVkaW8iOiAi6Z+z6aKRIiwKICAiQ2FudmFzIjogIkNhbnZhcyIsCiAgIkNsaWVudCByZWN0cyI6ICLlrqLmiLfnq6/nn6nlvaIiLAogICJTZW5zb3JzIjogIuS8oOaEn+WZqCIsCiAgIlBvcnRzIHRvIGJsb2NrIjogIumcgOimgeWxj+iUveeahOerr+WPoyIsCiAgImFkZCBwb3J0Li4uIjogIua3u+WKoOerr+WPoy4uLiIsCiAgIldlYkdMIjogIldlYkdMIiwKICAiV2ViR1BVIjogIldlYkdQVSIsCiAgIldlYlJUQyI6ICJXZWJSVEMiLAogICJEbyBOb3QgVHJhY2siOiAi56aB5q2i6Lef6LiqIiwKICAiVXNlciBhZ2VudCI6ICLnlKjmiLfku6PnkIYiLAogICJVc2VyLUFnZW50IjogIueUqOaIt+S7o+eQhiIsCiAgIlVzZXIgQWdlbnQiOiAi55So5oi35Luj55CGIiwKICAiRGV2aWNlIGlkZW50aXR5IjogIuiuvuWkh+i6q+S7vSIsCiAgIklERU5USVRZIjogIui6q+S7vSIsCiAgIk5PSVNFIjogIuWZquWjsOmYsuaKpCIsCiAgIlBSSVZBQ1kiOiAi6ZqQ56eBIiwKICAiTUVESUEgREVWSUNFUyI6ICLlqpLkvZPorr7lpIciLAogICJNaWMgaW4iOiAi6bqm5YWL6aOO6L6T5YWlIiwKICAiU3BlYWtlcnMiOiAi5oms5aOw5ZmoIiwKICAiV2ViY2FtIjogIuaRhOWDj+WktCIsCiAgIlJlYWwiOiAi55yf5a6eIiwKICAiQXV0byBub2lzZSI6ICLoh6rliqjlmarlo7AiLAogICJOb2lzZSI6ICLlmarlo7AiLAogICJBdXRvIChmcm9tIHByb3h5IGdlbykiOiAi6Ieq5Yqo77yI5qC55o2u5Luj55CG5Zyw5Yy677yJIiwKICAiQXV0byAoZnJvbSBwcm94eSkiOiAi6Ieq5Yqo77yI5qC55o2u5Luj55CG77yJIiwKICAiTWFudWFsIGNvb3JkcyI6ICLmiYvliqjlnZDmoIciLAogICLigJQgZGlyZWN0IGNvbm5lY3Rpb24g4oCUIjogIuKAlCDnm7TmjqXov57mjqUg4oCUIiwKICAiZGlyZWN0IjogIuebtOi/niIsCiAgIklkbGUiOiAi56m66ZeyIiwKICAiTm8gcHJveHkiOiAi5LiN5L2/55So5Luj55CGIiwKICAiTm8gUHJveHkiOiAi5LiN5L2/55So5Luj55CGIiwKICAiQWRkIHByb3h5IjogIua3u+WKoOS7o+eQhiIsCiAgIk5ldyBwcm94eSI6ICLmlrDlu7rku6PnkIYiLAogICJQcm94eSBtYW5hZ2VyIjogIuS7o+eQhueuoeeQhiIsCiAgIlByb3h5IE1hbmFnZXIiOiAi5Luj55CG566h55CGIiwKICAiSW1wb3J0IHByb3hpZXMiOiAi5a+85YWl5Luj55CGIiwKICAiQnVsayBpbXBvcnQiOiAi5om56YeP5a+85YWlIiwKICAiQ2hlY2sgcHJveHkiOiAi5qOA5rWL5Luj55CGIiwKICAiQ2hlY2siOiAi5qOA5rWLIiwKICAiT25saW5lIjogIuWcqOe6vyIsCiAgIk9mZmxpbmUiOiAi56a757q/IiwKICAiVW5rbm93biI6ICLmnKrnn6UiLAogICJOZXZlciI6ICLku47mnKoiLAogICJMYXN0IGxhdW5jaGVkIjogIuS4iuasoeWQr+WKqCIsCiAgIkNyZWF0ZWQiOiAi5Yib5bu65pe26Ze0IiwKICAiQ3JlYXRlZCBhdCI6ICLliJvlu7rml7bpl7QiLAogICJSdW50aW1lIjogIui/kOihjOaXtumVvyIsCiAgIkFjdGlvbnMiOiAi5pON5L2cIiwKICAiQXBwbHkiOiAi5bqU55SoIiwKICAiUmVzZXQiOiAi6YeN572uIiwKICAiUmFuZG9taXplIjogIumaj+acuueUn+aIkCIsCiAgIkdlbmVyYXRlIjogIueUn+aIkCIsCiAgIlRlbXBsYXRlIjogIuaooeadvyIsCiAgIlRlbXBsYXRlcyI6ICLmqKHmnb8iLAogICJTZWxlY3QiOiAi6YCJ5oupIiwKICAiU2VsZWN0IGFsbCI6ICLlhajpgIkiLAogICJDbGVhciI6ICLmuIXpmaQiLAogICJCYWNrIjogIui/lOWbniIsCiAgIk5leHQiOiAi5LiL5LiA5q2lIiwKICAiRG9uZSI6ICLlrozmiJAiLAogICJDb250aW51ZSI6ICLnu6fnu60iLAogICJMb2FkaW5nLi4uIjogIuato+WcqOWKoOi9vS4uLiIsCiAgIkRvd25sb2FkaW5nLi4uIjogIuato+WcqOS4i+i9vS4uLiIsCiAgIkluc3RhbGxpbmcuLi4iOiAi5q2j5Zyo5a6J6KOFLi4uIiwKICAiU2F2aW5nLi4uIjogIuato+WcqOS/neWtmC4uLiIsCiAgIkNvcGllZCI6ICLlt7LlpI3liLYiLAogICJDb3BpZWQhIjogIuW3suWkjeWItu+8gSIsCiAgIlJlYWR5IjogIuWwsee7qiIsCiAgIkFjdGl2ZSI6ICLmtLvliqgiLAogICJJbmFjdGl2ZSI6ICLmnKrmtLvliqgiLAogICJSdW5uaW5nLi4uIjogIuato+WcqOi/kOihjC4uLiIsCiAgIlN0b3BwaW5nLi4uIjogIuato+WcqOWBnOatoi4uLiIsCiAgIk1heWJlIGxhdGVyIjogIuS7peWQjuWGjeivtCIsCiAgIlN0YXIgb24gR2l0SHViIjogIuWcqCBHaXRIdWIg54K5IFN0YXIiLAogICJFbmpveWluZyBTaGFyZFg/IjogIuinieW+lyBTaGFyZFgg5aW955So5ZCX77yfIiwKICAiT3BlbiBkYXNoYm9hcmQiOiAi5omT5byA5o6n5Yi25Y+wIiwKICAiRGFzaGJvYXJkIjogIuaOp+WItuWPsCIsCiAgIkFjY291bnQiOiAi6LSm5oi3IiwKICAiQVBJIGtleSI6ICJBUEkg5a+G6ZKlIiwKICAiQVBJIEtleSI6ICJBUEkg5a+G6ZKlIiwKICAiVGhlbWUiOiAi5Li76aKYIiwKICAiQnJvd3NlciBwYXRoIjogIua1j+iniOWZqOi3r+W+hCIsCiAgIkJyb3dzZXIgUGF0aCI6ICLmtY/op4jlmajot6/lvoQiLAogICJVc2Ugc3lzdGVtIjogIui3n+maj+ezu+e7nyIsCiAgIlZlcnNpb24iOiAi54mI5pysIiwKICAiVXBkYXRlIjogIuabtOaWsCIsCiAgIkNoZWNrIGZvciB1cGRhdGVzIjogIuajgOafpeabtOaWsCIsCiAgIkFib3V0IjogIuWFs+S6jiIsCiAgIk5vIHByb3hpZXMgeWV0IjogIui/mOayoeacieS7o+eQhiIsCiAgIk5vIGZpbmdlcnByaW50cyB5ZXQiOiAi6L+Y5rKh5pyJ5oyH57q55qih5p2/IiwKICAiQ2hvb3NlIGEgcHJvZmlsZSI6ICLpgInmi6nmtY/op4jlmajnjq/looMiLAogICJDcmVhdGUgcHJvZmlsZSI6ICLliJvlu7rnjq/looMiLAogICJFZGl0IHByb2ZpbGUiOiAi57yW6L6R546v5aKDIiwKICAiRGVsZXRlIHByb2ZpbGUiOiAi5Yig6Zmk546v5aKDIiwKICAiQ2xvbmUgcHJvZmlsZSI6ICLlhYvpmobnjq/looMiLAogICJTdGFydCBwcm9maWxlIjogIuWQr+WKqOeOr+WigyIsCiAgIlN0b3AgcHJvZmlsZSI6ICLlgZzmraLnjq/looMiLAogICJQcm9maWxlIG5hbWUiOiAi546v5aKD5ZCN56ewIiwKICAiUHJvZmlsZSBub3RlcyI6ICLnjq/looPlpIfms6giLAogICJGaW5nZXJwcmludCB0ZW1wbGF0ZSI6ICLmjIfnurnmqKHmnb8iLAogICJDaG9vc2UgZmluZ2VycHJpbnQiOiAi6YCJ5oup5oyH57q5IiwKICAiUHJveHkgc2V0dGluZ3MiOiAi5Luj55CG6K6+572uIiwKICAiRmluZ2VycHJpbnQgc2V0dGluZ3MiOiAi5oyH57q56K6+572uIiwKICAiQnJvd3NlciBzZXR0aW5ncyI6ICLmtY/op4jlmajorr7nva4iLAogICJDb25uZWN0aW9uIjogIui/nuaOpSIsCiAgIkF1dGhlbnRpY2F0aW9uIjogIui6q+S7vemqjOivgSIsCiAgIk5vIG5vdGVzIjogIuaXoOWkh+azqCIsCiAgIk5vIHByb3h5IGFzc2lnbmVkIjogIuacque7keWumuS7o+eQhiIsCiAgIk5vIHByb3h5IHNlbGVjdGVkIjogIuacqumAieaLqeS7o+eQhiIsCiAgIlVzZSBwcm94eSI6ICLkvb/nlKjku6PnkIYiLAogICJVc2UgdGhpcyB0ZW1wbGF0ZSI6ICLkvb/nlKjmraTmqKHmnb8iLAogICJDcmVhdGUgZnJvbSB0ZW1wbGF0ZSI6ICLku47mqKHmnb/liJvlu7oiLAogICJGcm9tIHNjcmF0Y2giOiAi5LuO6Zu25Yib5bu6IiwKICAiSW1wb3J0IHByb2ZpbGUiOiAi5a+85YWl546v5aKDIiwKICAiRXhwb3J0IHByb2ZpbGUiOiAi5a+85Ye6546v5aKDIiwKICAiSW1wb3J0IGNvb2tpZXMiOiAi5a+85YWlIENvb2tpZSIsCiAgIkV4cG9ydCBjb29raWVzIjogIuWvvOWHuiBDb29raWUiLAogICJQcm9maWxlIGNyZWF0ZWQiOiAi546v5aKD5bey5Yib5bu6IiwKICAiUHJvZmlsZSBkZWxldGVkIjogIueOr+Wig+W3suWIoOmZpCIsCiAgIlByb2ZpbGUgc2F2ZWQiOiAi546v5aKD5bey5L+d5a2YIiwKICAiUHJveHkgc2F2ZWQiOiAi5Luj55CG5bey5L+d5a2YIiwKICAiUHJveHkgZGVsZXRlZCI6ICLku6PnkIblt7LliKDpmaQiLAogICJGaW5nZXJwcmludCBzYXZlZCI6ICLmjIfnurnlt7Lkv53lrZgiCn07Cgpjb25zdCBhdHRycyA9IFsicGxhY2Vob2xkZXIiLCAidGl0bGUiLCAiYXJpYS1sYWJlbCJdIGFzIGNvbnN0OwoKZnVuY3Rpb24gcHJlc2VydmVXaGl0ZXNwYWNlKG9yaWdpbmFsOiBzdHJpbmcsIHRyYW5zbGF0ZWQ6IHN0cmluZykgewogIGNvbnN0IGxlYWQgPSBvcmlnaW5hbC5tYXRjaCgvXlxzKi8pPy5bMF0gPz8gIiI7CiAgY29uc3QgdGFpbCA9IG9yaWdpbmFsLm1hdGNoKC9ccyokLyk/LlswXSA/PyAiIjsKICByZXR1cm4gbGVhZCArIHRyYW5zbGF0ZWQgKyB0YWlsOwp9CgpmdW5jdGlvbiB0cmFuc2xhdGVUZXh0Tm9kZShub2RlOiBUZXh0KSB7CiAgY29uc3QgcmF3ID0gbm9kZS5ub2RlVmFsdWUgPz8gIiI7CiAgY29uc3Qga2V5ID0gcmF3LnRyaW0oKTsKICBpZiAoIWtleSkgcmV0dXJuOwogIGNvbnN0IGhpdCA9IGV4YWN0W2tleV07CiAgaWYgKGhpdCkgewogICAgbm9kZS5ub2RlVmFsdWUgPSBwcmVzZXJ2ZVdoaXRlc3BhY2UocmF3LCBoaXQpOwogICAgcmV0dXJuOwogIH0KCiAgY29uc3QgcGF0dGVybnM6IEFycmF5PFtSZWdFeHAsIHN0cmluZ10+ID0gWwogICAgWy9eKFxkKylccytwcm9maWxlcz8kL2ksICIkMSDkuKrnjq/looMiXSwKICAgIFsvXihcZCspXHMrcnVubmluZyQvaSwgIiQxIOS4qui/kOihjOS4rSJdLAogICAgWy9eRGVsZXRlXHMrIiguKykiXD8kL2ksICfliKDpmaTigJwkMeKAne+8nyddLAogICAgWy9eU3RhcnRccysiKC4rKSIkL2ksICflkK/liqjigJwkMeKAnSddLAogICAgWy9eU3RvcFxzKyIoLispIiQvaSwgJ+WBnOatouKAnCQx4oCdJ10sCiAgICBbL15Qcm9maWxlXHMrIiguKykiXHMrY3JlYXRlZCQvaSwgJ+eOr+Wig+KAnCQx4oCd5bey5Yib5bu6J10sCiAgXTsKICBmb3IgKGNvbnN0IFtyZSwgcmVwbGFjZW1lbnRdIG9mIHBhdHRlcm5zKSB7CiAgICBpZiAocmUudGVzdChrZXkpKSB7CiAgICAgIG5vZGUubm9kZVZhbHVlID0gcHJlc2VydmVXaGl0ZXNwYWNlKHJhdywga2V5LnJlcGxhY2UocmUsIHJlcGxhY2VtZW50KSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHRyYW5zbGF0ZUF0dHJpYnV0ZXMoZWw6IEVsZW1lbnQpIHsKICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHsKICAgIGNvbnN0IHZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKGF0dHIpOwogICAgaWYgKCF2YWx1ZSkgY29udGludWU7CiAgICBjb25zdCBoaXQgPSBleGFjdFt2YWx1ZS50cmltKCldOwogICAgaWYgKGhpdCkgZWwuc2V0QXR0cmlidXRlKGF0dHIsIGhpdCk7CiAgfQp9CgpmdW5jdGlvbiB3YWxrKHJvb3Q6IE5vZGUpIHsKICBpZiAocm9vdC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgIHRyYW5zbGF0ZVRleHROb2RlKHJvb3QgYXMgVGV4dCk7CiAgICByZXR1cm47CiAgfQogIGlmIChyb290Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiByb290Lm5vZGVUeXBlICE9PSBOb2RlLkRPQ1VNRU5UX05PREUgJiYgcm9vdC5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7CiAgICByZXR1cm47CiAgfQoKICBpZiAocm9vdC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKICAgIGNvbnN0IGVsID0gcm9vdCBhcyBFbGVtZW50OwogICAgaWYgKGVsLm1hdGNoZXMoInNjcmlwdCxzdHlsZSxjb2RlLHByZSxpbnB1dCx0ZXh0YXJlYSIpKSB7CiAgICAgIHRyYW5zbGF0ZUF0dHJpYnV0ZXMoZWwpOwogICAgICByZXR1cm47CiAgICB9CiAgICB0cmFuc2xhdGVBdHRyaWJ1dGVzKGVsKTsKICB9CgogIHJvb3QuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspOwp9CgpleHBvcnQgZnVuY3Rpb24gaW5zdGFsbFpoQ04oKSB7CiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSAiemgtQ04iOwoKICBjb25zdCBzdGFydCA9ICgpID0+IHsKICAgIHdhbGsoZG9jdW1lbnQuYm9keSk7CgogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7CiAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRhdGlvbnMpIHsKICAgICAgICBpZiAobS50eXBlID09PSAiY2hhcmFjdGVyRGF0YSIpIHRyYW5zbGF0ZVRleHROb2RlKG0udGFyZ2V0IGFzIFRleHQpOwogICAgICAgIGZvciAoY29uc3QgbiBvZiBBcnJheS5mcm9tKG0uYWRkZWROb2RlcykpIHdhbGsobik7CiAgICAgICAgaWYgKG0udHlwZSA9PT0gImF0dHJpYnV0ZXMiICYmIG0udGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkgdHJhbnNsYXRlQXR0cmlidXRlcyhtLnRhcmdldCk7CiAgICAgIH0KICAgIH0pOwoKICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgewogICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsCiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsCiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWy4uLmF0dHJzXSwKICAgIH0pOwogIH07CgogIGlmIChkb2N1bWVudC5ib2R5KSBzdGFydCgpOwogIGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBzdGFydCwgeyBvbmNlOiB0cnVlIH0pOwp9Cg== +'@ + [IO.File]::WriteAllBytes( + "src/zh-cn.ts", + [Convert]::FromBase64String(($b64 -replace "\s","")) + ) + + $main = Get-Content "src/main.tsx" -Raw -Encoding UTF8 + if ($main -notmatch 'installZhCN') { + $main = $main.Replace( + 'import App from "./App";', + "import App from `"./App`";`r`nimport { installZhCN } from `"./zh-cn`";" + ) + $main = $main + "`r`n`r`ninstallZhCN();`r`n" + Set-Content "src/main.tsx" $main -Encoding UTF8 + } + + $confPath = "src-tauri/tauri.conf.json" + $conf = Get-Content $confPath -Raw -Encoding UTF8 + $conf = $conf.Replace( + '"title": "ShardX Launcher"', + '"title": "ShardX Launcher 中文版"' + ) + Set-Content $confPath $conf -Encoding UTF8 + + - name: Build Chinese Windows version + run: npx tauri build --target x86_64-pc-windows-msvc + + - name: Prepare downloadable EXE + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path "artifact" | Out-Null + + $release = "src-tauri/target/x86_64-pc-windows-msvc/release" + $source = Join-Path $release "ShardX Launcher.exe" + if (-not (Test-Path $source)) { + $source = Join-Path $release "shardx-launcher.exe" + } + if (-not (Test-Path $source)) { + $source = Get-ChildItem $release -Filter "*.exe" -File | + Where-Object { $_.Name -notmatch "build|setup" } | + Select-Object -First 1 -ExpandProperty FullName + } + if (-not $source -or -not (Test-Path $source)) { + throw "Could not find compiled ShardX Launcher EXE." + } + + Copy-Item $source "artifact/ShardX-Launcher-中文版.exe" + + $msi = Get-ChildItem "$release/bundle" -Recurse -Filter "*.msi" -File -ErrorAction SilentlyContinue | + Select-Object -First 1 + if ($msi) { + Copy-Item $msi.FullName "artifact/ShardX-Launcher-中文版.msi" + } + + Get-ChildItem artifact + + - name: Upload Chinese build + uses: actions/upload-artifact@v4 + with: + name: ShardX-Launcher-Chinese-Windows + path: artifact/* + if-no-files-found: error + retention-days: 30 From e75d4bc894fe417ed5211a6de6e51d1d72e1d656 Mon Sep 17 00:00:00 2001 From: YAOYAO888999 <1yaoyao1234567890@gmail.com> Date: Sat, 8 Aug 2026 11:51:27 +0800 Subject: [PATCH 2/3] Add files via upload --- build-cn-fixed.yml | 205 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 build-cn-fixed.yml diff --git a/build-cn-fixed.yml b/build-cn-fixed.yml new file mode 100644 index 0000000..1a4d536 --- /dev/null +++ b/build-cn-fixed.yml @@ -0,0 +1,205 @@ +name: Build ShardX Chinese + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + build-windows: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Set up Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-pc-windows-msvc + + - name: Install npm dependencies + run: npm ci + + - name: Add Simplified Chinese UI layer + shell: pwsh + run: | + $b64 = @' + Ly8gU2hhcmRYIOeugOS9k+S4reaWh+eVjOmdouWxggovLyDku4Xnv7vor5EgTGF1bmNoZXIg5Y+v6KeB55WM6Z2i77yM5LiN5L+u + 5pS5IFNoYXJkWCBDaHJvbWl1bSBlbmdpbmUg5oiW5Lia5Yqh5pWw5o2u44CCCgpjb25zdCBleGFjdDogUmVjb3JkPHN0cmluZywg + c3RyaW5nPiA9IHsKICAiV29ya3NwYWNlIjogIuW3peS9nOWMuiIsCiAgIkJyb3dzZXJzIjogIua1j+iniOWZqOeOr+WigyIsCiAg + IkJyb3dzZXIiOiAi5rWP6KeI5ZmoIiwKICAiUHJveGllcyI6ICLku6PnkIYiLAogICJQcm94eSI6ICLku6PnkIYiLAogICJQcm94 + eVNoYXJkIjogIlByb3h5U2hhcmQiLAogICJMaWJyYXJ5IjogIui1hOa6kOW6kyIsCiAgIkZpbmdlcnByaW50cyI6ICLmjIfnurnm + qKHmnb8iLAogICJGaW5nZXJwcmludCI6ICLmjIfnurkiLAogICJTeXN0ZW0iOiAi57O757ufIiwKICAiU2V0dGluZ3MiOiAi6K6+ + 572uIiwKICAiUHJvZmlsZXMiOiAi546v5aKD5pWw6YePIiwKICAiUHJvZmlsZSI6ICLmtY/op4jlmajnjq/looMiLAogICJSdW5u + aW5nIjogIui/kOihjOS4rSIsCiAgIlNlYXJjaC4uLiI6ICLmkJzntKIuLi4iLAogICJTZWFyY2giOiAi5pCc57SiIiwKICAiSW1w + b3J0IjogIuWvvOWFpSIsCiAgIkV4cG9ydCI6ICLlr7zlh7oiLAogICJGcm9tIHRlbXBsYXRlIjogIuS7juaooeadv+WIm+W7uiIs + CiAgIisgTmV3IHByb2ZpbGUiOiAiKyDmlrDlu7rnjq/looMiLAogICJOZXcgcHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJO + ZXcgUHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJBbGwiOiAi5YWo6YOoIiwKICAiTmFtZSI6ICLlkI3np7AiLAogICJTdGF0 + dXMiOiAi54q25oCBIiwKICAiTm90ZXMiOiAi5aSH5rOoIiwKICAiVGltZSI6ICLml7bpl7QiLAogICJObyBwcm9maWxlcyB5ZXQi + OiAi6L+Y5rKh5pyJ5rWP6KeI5Zmo546v5aKDIiwKICAiUGljayBhIGZpbmdlcnByaW50IHRlbXBsYXRlIHRvIHN0YXJ0IGEgY3Vy + YXRlZCByZWFsLUNocm9tZSBzbmFwc2hvdCwgb3IgYnVpbGQgb25lIGZyb20gc2NyYXRjaC4iOiAi6YCJ5oup5LiA5Liq5oyH57q5 + 5qih5p2/5b+r6YCf5Yib5bu6546v5aKD77yM5oiW5LuO6Zu25byA5aeL6YWN572u44CCIiwKICAiTGlnaHQiOiAi5rWF6ImyIiwK + ICAiRGFyayI6ICLmt7HoibIiLAogICJ1cCB0byBkYXRlIjogIuW3suaYr+acgOaWsOeJiOacrCIsCiAgIkRvd25sb2FkIE1DUCI6 + ICLkuIvovb0gTUNQIiwKICAiRG9jdW1lbnRhdGlvbiI6ICLkvb/nlKjmlofmoaMiLAogICJBVVRPTUFUSU9OIEFQSSI6ICLoh6rl + iqjljJYgQVBJIiwKICAiQXV0b21hdGlvbiBBUEkiOiAi6Ieq5Yqo5YyWIEFQSSIsCiAgIkNhbmNlbCI6ICLlj5bmtogiLAogICJE + ZWxldGUiOiAi5Yig6ZmkIiwKICAiT0siOiAi56Gu5a6aIiwKICAiQ29uZmlybSI6ICLnoa7orqQiLAogICJDbG9zZSI6ICLlhbPp + l60iLAogICJTYXZlIjogIuS/neWtmCIsCiAgIkNyZWF0ZSI6ICLliJvlu7oiLAogICJBZGQiOiAi5re75YqgIiwKICAiRWRpdCI6 + ICLnvJbovpEiLAogICJDbG9uZSI6ICLlhYvpmoYiLAogICJEdXBsaWNhdGUiOiAi5aSN5Yi2546v5aKDIiwKICAiU3RhcnQiOiAi + 5ZCv5YqoIiwKICAiU3RvcCI6ICLlgZzmraIiLAogICJMYXVuY2giOiAi5ZCv5YqoIiwKICAiT3BlbiI6ICLmiZPlvIAiLAogICJS + ZWZyZXNoIjogIuWIt+aWsCIsCiAgIkNvcHkiOiAi5aSN5Yi2IiwKICAiUGFzdGUiOiAi57KY6LS0IiwKICAiUmVtb3ZlIjogIuen + u+mZpCIsCiAgIlRlc3QiOiAi5rWL6K+VIiwKICAiVGVzdGluZy4uLiI6ICLmtYvor5XkuK0uLi4iLAogICJTdWNjZXNzIjogIuaI + kOWKnyIsCiAgIkZhaWxlZCI6ICLlpLHotKUiLAogICJFcnJvciI6ICLplJnor68iLAogICJFbmFibGVkIjogIuW3suWQr+eUqCIs + CiAgIkRpc2FibGVkIjogIuW3suemgeeUqCIsCiAgIk5vbmUiOiAi5pegIiwKICAiRGVmYXVsdCI6ICLpu5jorqQiLAogICJBdXRv + IjogIuiHquWKqCIsCiAgIk1hbnVhbCI6ICLmiYvliqgiLAogICJDdXN0b20iOiAi6Ieq5a6a5LmJIiwKICAiR2VuZXJhbCI6ICLl + uLjop4QiLAogICJBZHZhbmNlZCI6ICLpq5jnuqciLAogICJOZXR3b3JrIjogIue9kee7nCIsCiAgIkxvY2FsZSI6ICLor63oqIDk + uI7lnLDljLoiLAogICJMYW5ndWFnZSI6ICLor63oqIAiLAogICJUaW1lem9uZSI6ICLml7bljLoiLAogICJHZW9sb2NhdGlvbiI6 + ICLlnLDnkIbkvY3nva4iLAogICJDb3VudHJ5IjogIuWbveWuti/lnLDljLoiLAogICJDaXR5IjogIuWfjuW4giIsCiAgIkxhdGl0 + dWRlIjogIue6rOW6piIsCiAgIkxvbmdpdHVkZSI6ICLnu4/luqYiLAogICJVc2VybmFtZSI6ICLnlKjmiLflkI0iLAogICJQYXNz + d29yZCI6ICLlr4bnoIEiLAogICJIb3N0IjogIuS4u+acuiIsCiAgIlBvcnQiOiAi56uv5Y+jIiwKICAiVHlwZSI6ICLnsbvlnosi + LAogICJQcm90b2NvbCI6ICLljY/orq4iLAogICJGb2xkZXIiOiAi5paH5Lu25aS5IiwKICAiVGFncyI6ICLmoIfnrb4iLAogICJQ + aW5uZWQiOiAi572u6aG2IiwKICAiUGluIjogIue9rumhtiIsCiAgIlVucGluIjogIuWPlua2iOe9rumhtiIsCiAgIkNvb2tpZXMi + OiAiQ29va2llIiwKICAiQ29va2llIjogIkNvb2tpZSIsCiAgIkV4dGVuc2lvbnMiOiAi5omp5bGV56iL5bqPIiwKICAiU2NyZWVu + IjogIuWxj+W5lSIsCiAgIlJlc29sdXRpb24iOiAi5YiG6L6o546HIiwKICAiUGxhdGZvcm0iOiAi5bmz5Y+wIiwKICAiT3BlcmF0 + aW5nIHN5c3RlbSI6ICLmk43kvZzns7vnu58iLAogICJEZXZpY2UiOiAi6K6+5aSHIiwKICAiQ1BVIjogIuWkhOeQhuWZqCIsCiAg + Ik1lbW9yeSI6ICLlhoXlrZgiLAogICJGb250cyI6ICLlrZfkvZMiLAogICJBdWRpbyI6ICLpn7PpopEiLAogICJXZWJHTCI6ICJX + ZWJHTCIsCiAgIldlYkdQVSI6ICJXZWJHUFUiLAogICJXZWJSVEMiOiAiV2ViUlRDIiwKICAiVXNlciBhZ2VudCI6ICLnlKjmiLfk + u6PnkIYiLAogICJVc2VyIEFnZW50IjogIueUqOaIt+S7o+eQhiIsCiAgIkRldmljZSBpZGVudGl0eSI6ICLorr7lpIfouqvku70i + LAogICJObyBwcm94eSI6ICLkuI3kvb/nlKjku6PnkIYiLAogICJObyBQcm94eSI6ICLkuI3kvb/nlKjku6PnkIYiLAogICJBZGQg + cHJveHkiOiAi5re75Yqg5Luj55CGIiwKICAiTmV3IHByb3h5IjogIuaWsOW7uuS7o+eQhiIsCiAgIlByb3h5IG1hbmFnZXIiOiAi + 5Luj55CG566h55CGIiwKICAiUHJveHkgTWFuYWdlciI6ICLku6PnkIbnrqHnkIYiLAogICJJbXBvcnQgcHJveGllcyI6ICLlr7zl + haXku6PnkIYiLAogICJCdWxrIGltcG9ydCI6ICLmibnph4/lr7zlhaUiLAogICJDaGVjayBwcm94eSI6ICLmo4DmtYvku6PnkIYi + LAogICJDaGVjayI6ICLmo4DmtYsiLAogICJPbmxpbmUiOiAi5Zyo57q/IiwKICAiT2ZmbGluZSI6ICLnprvnur8iLAogICJVbmtu + b3duIjogIuacquefpSIsCiAgIk5ldmVyIjogIuS7juacqiIsCiAgIkxhc3QgbGF1bmNoZWQiOiAi5LiK5qyh5ZCv5YqoIiwKICAi + Q3JlYXRlZCI6ICLliJvlu7rml7bpl7QiLAogICJDcmVhdGVkIGF0IjogIuWIm+W7uuaXtumXtCIsCiAgIlJ1bnRpbWUiOiAi6L+Q + 6KGM5pe26ZW/IiwKICAiQWN0aW9ucyI6ICLmk43kvZwiLAogICJBcHBseSI6ICLlupTnlKgiLAogICJSZXNldCI6ICLph43nva4i + LAogICJSYW5kb21pemUiOiAi6ZqP5py655Sf5oiQIiwKICAiR2VuZXJhdGUiOiAi55Sf5oiQIiwKICAiVGVtcGxhdGUiOiAi5qih + 5p2/IiwKICAiVGVtcGxhdGVzIjogIuaooeadvyIsCiAgIlNlbGVjdCI6ICLpgInmi6kiLAogICJTZWxlY3QgYWxsIjogIuWFqOmA + iSIsCiAgIkNsZWFyIjogIua4hemZpCIsCiAgIkJhY2siOiAi6L+U5ZueIiwKICAiTmV4dCI6ICLkuIvkuIDmraUiLAogICJEb25l + IjogIuWujOaIkCIsCiAgIkNvbnRpbnVlIjogIue7p+e7rSIsCiAgIkxvYWRpbmcuLi4iOiAi5q2j5Zyo5Yqg6L29Li4uIiwKICAi + RG93bmxvYWRpbmcuLi4iOiAi5q2j5Zyo5LiL6L29Li4uIiwKICAiSW5zdGFsbGluZy4uLiI6ICLmraPlnKjlronoo4UuLi4iLAog + ICJTYXZpbmcuLi4iOiAi5q2j5Zyo5L+d5a2YLi4uIiwKICAiQ29waWVkIjogIuW3suWkjeWItiIsCiAgIkNvcGllZCEiOiAi5bey + 5aSN5Yi277yBIiwKICAiUmVhZHkiOiAi5bCx57uqIiwKICAiQWN0aXZlIjogIua0u+WKqCIsCiAgIkluYWN0aXZlIjogIuacqua0 + u+WKqCIsCiAgIlJ1bm5pbmcuLi4iOiAi5q2j5Zyo6L+Q6KGMLi4uIiwKICAiU3RvcHBpbmcuLi4iOiAi5q2j5Zyo5YGc5q2iLi4u + IiwKICAiTWF5YmUgbGF0ZXIiOiAi5Lul5ZCO5YaN6K+0IiwKICAiU3RhciBvbiBHaXRIdWIiOiAi5ZyoIEdpdEh1YiDngrkgU3Rh + ciIsCiAgIkVuam95aW5nIFNoYXJkWD8iOiAi6KeJ5b6XIFNoYXJkWCDlpb3nlKjlkJfvvJ8iLAogICJPcGVuIGRhc2hib2FyZCI6 + ICLmiZPlvIDmjqfliLblj7AiLAogICJEYXNoYm9hcmQiOiAi5o6n5Yi25Y+wIiwKICAiQWNjb3VudCI6ICLotKbmiLciLAogICJB + UEkga2V5IjogIkFQSSDlr4bpkqUiLAogICJBUEkgS2V5IjogIkFQSSDlr4bpkqUiLAogICJUaGVtZSI6ICLkuLvpopgiLAogICJC + cm93c2VyIHBhdGgiOiAi5rWP6KeI5Zmo6Lev5b6EIiwKICAiQnJvd3NlciBQYXRoIjogIua1j+iniOWZqOi3r+W+hCIsCiAgIlVz + ZSBzeXN0ZW0iOiAi6Lef6ZqP57O757ufIiwKICAiVmVyc2lvbiI6ICLniYjmnKwiLAogICJVcGRhdGUiOiAi5pu05pawIiwKICAi + Q2hlY2sgZm9yIHVwZGF0ZXMiOiAi5qOA5p+l5pu05pawIiwKICAiQWJvdXQiOiAi5YWz5LqOIiwKICAiTm8gcHJveGllcyB5ZXQi + OiAi6L+Y5rKh5pyJ5Luj55CGIiwKICAiTm8gZmluZ2VycHJpbnRzIHlldCI6ICLov5jmsqHmnInmjIfnurnmqKHmnb8iLAogICJD + aG9vc2UgYSBwcm9maWxlIjogIumAieaLqea1j+iniOWZqOeOr+WigyIsCiAgIkNyZWF0ZSBwcm9maWxlIjogIuWIm+W7uueOr+Wi + gyIsCiAgIkVkaXQgcHJvZmlsZSI6ICLnvJbovpHnjq/looMiLAogICJEZWxldGUgcHJvZmlsZSI6ICLliKDpmaTnjq/looMiLAog + ICJDbG9uZSBwcm9maWxlIjogIuWFi+mahueOr+WigyIsCiAgIlN0YXJ0IHByb2ZpbGUiOiAi5ZCv5Yqo546v5aKDIiwKICAiU3Rv + cCBwcm9maWxlIjogIuWBnOatoueOr+WigyIsCiAgIlByb2ZpbGUgbmFtZSI6ICLnjq/looPlkI3np7AiLAogICJQcm9maWxlIG5v + dGVzIjogIueOr+Wig+Wkh+azqCIsCiAgIkZpbmdlcnByaW50IHRlbXBsYXRlIjogIuaMh+e6ueaooeadvyIsCiAgIkNob29zZSBm + aW5nZXJwcmludCI6ICLpgInmi6nmjIfnurkiLAogICJQcm94eSBzZXR0aW5ncyI6ICLku6PnkIborr7nva4iLAogICJGaW5nZXJw + cmludCBzZXR0aW5ncyI6ICLmjIfnurnorr7nva4iLAogICJCcm93c2VyIHNldHRpbmdzIjogIua1j+iniOWZqOiuvue9riIsCiAg + IkNvbm5lY3Rpb24iOiAi6L+e5o6lIiwKICAiQXV0aGVudGljYXRpb24iOiAi6Lqr5Lu96aqM6K+BIiwKICAiTm8gbm90ZXMiOiAi + 5peg5aSH5rOoIiwKICAiTm8gcHJveHkgYXNzaWduZWQiOiAi5pyq57uR5a6a5Luj55CGIiwKICAiTm8gcHJveHkgc2VsZWN0ZWQi + OiAi5pyq6YCJ5oup5Luj55CGIiwKICAiVXNlIHByb3h5IjogIuS9v+eUqOS7o+eQhiIsCiAgIlVzZSB0aGlzIHRlbXBsYXRlIjog + IuS9v+eUqOatpOaooeadvyIsCiAgIkNyZWF0ZSBmcm9tIHRlbXBsYXRlIjogIuS7juaooeadv+WIm+W7uiIsCiAgIkZyb20gc2Ny + YXRjaCI6ICLku47pm7bliJvlu7oiLAogICJJbXBvcnQgcHJvZmlsZSI6ICLlr7zlhaXnjq/looMiLAogICJFeHBvcnQgcHJvZmls + ZSI6ICLlr7zlh7rnjq/looMiLAogICJJbXBvcnQgY29va2llcyI6ICLlr7zlhaUgQ29va2llIiwKICAiRXhwb3J0IGNvb2tpZXMi + OiAi5a+85Ye6IENvb2tpZSIsCiAgIlByb2ZpbGUgY3JlYXRlZCI6ICLnjq/looPlt7LliJvlu7oiLAogICJQcm9maWxlIGRlbGV0 + ZWQiOiAi546v5aKD5bey5Yig6ZmkIiwKICAiUHJvZmlsZSBzYXZlZCI6ICLnjq/looPlt7Lkv53lrZgiLAogICJQcm94eSBzYXZl + ZCI6ICLku6PnkIblt7Lkv53lrZgiLAogICJQcm94eSBkZWxldGVkIjogIuS7o+eQhuW3suWIoOmZpCIsCiAgIkZpbmdlcnByaW50 + IHNhdmVkIjogIuaMh+e6ueW3suS/neWtmCIKfTsKCmNvbnN0IGF0dHJzID0gWyJwbGFjZWhvbGRlciIsICJ0aXRsZSIsICJhcmlh + LWxhYmVsIl0gYXMgY29uc3Q7CgpmdW5jdGlvbiBwcmVzZXJ2ZVdoaXRlc3BhY2Uob3JpZ2luYWw6IHN0cmluZywgdHJhbnNsYXRl + ZDogc3RyaW5nKSB7CiAgY29uc3QgbGVhZCA9IG9yaWdpbmFsLm1hdGNoKC9eXHMqLyk/LlswXSA/PyAiIjsKICBjb25zdCB0YWls + ID0gb3JpZ2luYWwubWF0Y2goL1xzKiQvKT8uWzBdID8/ICIiOwogIHJldHVybiBsZWFkICsgdHJhbnNsYXRlZCArIHRhaWw7Cn0K + CmZ1bmN0aW9uIHRyYW5zbGF0ZVRleHROb2RlKG5vZGU6IFRleHQpIHsKICBjb25zdCByYXcgPSBub2RlLm5vZGVWYWx1ZSA/PyAi + IjsKICBjb25zdCBrZXkgPSByYXcudHJpbSgpOwogIGlmICgha2V5KSByZXR1cm47CiAgY29uc3QgaGl0ID0gZXhhY3Rba2V5XTsK + ICBpZiAoaGl0KSB7CiAgICBub2RlLm5vZGVWYWx1ZSA9IHByZXNlcnZlV2hpdGVzcGFjZShyYXcsIGhpdCk7CiAgICByZXR1cm47 + CiAgfQoKICAvLyDlsJHph4/lronlhajnmoTmlbTlj6XmqKHlvI/vvJvpgb/lhY3mlLnliqjnlKjmiLfovpPlhaXjgIFQcm9maWxl + IOWQjeensOOAgee9keermeaVsOaNruOAggogIGNvbnN0IHBhdHRlcm5zOiBBcnJheTxbUmVnRXhwLCBzdHJpbmddPiA9IFsKICAg + IFsvXihcZCspXHMrcHJvZmlsZXM/JC9pLCAiJDEg5Liq546v5aKDIl0sCiAgICBbL14oXGQrKVxzK3J1bm5pbmckL2ksICIkMSDk + uKrov5DooYzkuK0iXSwKICAgIFsvXkRlbGV0ZVxzKyIoLispIlw/JC9pLCAn5Yig6Zmk4oCcJDHigJ3vvJ8nXSwKICAgIFsvXlN0 + YXJ0XHMrIiguKykiJC9pLCAn5ZCv5Yqo4oCcJDHigJ0nXSwKICAgIFsvXlN0b3BccysiKC4rKSIkL2ksICflgZzmraLigJwkMeKA + nSddLAogIF07CiAgZm9yIChjb25zdCBbcmUsIHJlcGxhY2VtZW50XSBvZiBwYXR0ZXJucykgewogICAgaWYgKHJlLnRlc3Qoa2V5 + KSkgewogICAgICBub2RlLm5vZGVWYWx1ZSA9IHByZXNlcnZlV2hpdGVzcGFjZShyYXcsIGtleS5yZXBsYWNlKHJlLCByZXBsYWNl + bWVudCkpOwogICAgICByZXR1cm47CiAgICB9CiAgfQp9CgpmdW5jdGlvbiB0cmFuc2xhdGVBdHRyaWJ1dGVzKGVsOiBFbGVtZW50 + KSB7CiAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJzKSB7CiAgICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyKTsK + ICAgIGlmICghdmFsdWUpIGNvbnRpbnVlOwogICAgY29uc3QgaGl0ID0gZXhhY3RbdmFsdWUudHJpbSgpXTsKICAgIGlmIChoaXQp + IGVsLnNldEF0dHJpYnV0ZShhdHRyLCBoaXQpOwogIH0KfQoKZnVuY3Rpb24gd2Fsayhyb290OiBOb2RlKSB7CiAgaWYgKHJvb3Qu + bm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7CiAgICB0cmFuc2xhdGVUZXh0Tm9kZShyb290IGFzIFRleHQpOwogICAgcmV0 + dXJuOwogIH0KICBpZiAocm9vdC5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcm9vdC5ub2RlVHlwZSAhPT0gTm9k + ZS5ET0NVTUVOVF9OT0RFICYmIHJvb3Qubm9kZVR5cGUgIT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewogICAgcmV0 + dXJuOwogIH0KCiAgaWYgKHJvb3Qubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CiAgICBjb25zdCBlbCA9IHJvb3Qg + YXMgRWxlbWVudDsKICAgIC8vIOS4jee/u+ivkeaWh+acrOi+k+WFpeahhuWGhemDqOWAvO+8jOS5n+S4jeeisOS7o+eggeWdly/n + lKjmiLfmlbDmja7jgIIKICAgIGlmIChlbC5tYXRjaGVzKCJzY3JpcHQsc3R5bGUsY29kZSxwcmUsaW5wdXQsdGV4dGFyZWEiKSkg + ewogICAgICB0cmFuc2xhdGVBdHRyaWJ1dGVzKGVsKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdHJhbnNsYXRlQXR0cmlidXRl + cyhlbCk7CiAgfQoKICByb290LmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKTsKfQoKZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxaaENO + KCkgewogIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gInpoLUNOIjsKCiAgY29uc3Qgc3RhcnQgPSAoKSA9PiB7CiAg + ICB3YWxrKGRvY3VtZW50LmJvZHkpOwoKICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9u + cykgPT4gewogICAgICBmb3IgKGNvbnN0IG0gb2YgbXV0YXRpb25zKSB7CiAgICAgICAgaWYgKG0udHlwZSA9PT0gImNoYXJhY3Rl + ckRhdGEiKSB7CiAgICAgICAgICB0cmFuc2xhdGVUZXh0Tm9kZShtLnRhcmdldCBhcyBUZXh0KTsKICAgICAgICB9CiAgICAgICAg + Zm9yIChjb25zdCBuIG9mIEFycmF5LmZyb20obS5hZGRlZE5vZGVzKSkgd2FsayhuKTsKICAgICAgICBpZiAobS50eXBlID09PSAi + YXR0cmlidXRlcyIgJiYgbS50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7CiAgICAgICAgICB0cmFuc2xhdGVBdHRyaWJ1dGVz + KG0udGFyZ2V0KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwoKICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwg + ewogICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsCiAg + ICAgIGF0dHJpYnV0ZXM6IHRydWUsCiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWy4uLmF0dHJzXSwKICAgIH0pOwogIH07CgogIGlm + IChkb2N1bWVudC5ib2R5KSBzdGFydCgpOwogIGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi + LCBzdGFydCwgeyBvbmNlOiB0cnVlIH0pOwp9Cg== + '@ + $clean = $b64 -replace "\s", "" + [IO.File]::WriteAllBytes("src/zh-cn.ts", [Convert]::FromBase64String($clean)) + + $main = Get-Content "src/main.tsx" -Raw -Encoding UTF8 + if ($main -notmatch 'installZhCN') { + $main = $main.Replace( + 'import App from "./App";', + "import App from `"./App`";`r`nimport { installZhCN } from `"./zh-cn`";" + ) + $main = $main + "`r`n`r`ninstallZhCN();`r`n" + Set-Content "src/main.tsx" $main -Encoding UTF8 + } + + $confPath = "src-tauri/tauri.conf.json" + $conf = Get-Content $confPath -Raw -Encoding UTF8 + $conf = $conf.Replace('"title": "ShardX Launcher"', '"title": "ShardX Launcher 中文版"') + Set-Content $confPath $conf -Encoding UTF8 + + - name: Build Chinese Windows version + run: npx tauri build --target x86_64-pc-windows-msvc + + - name: Prepare downloadable EXE + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path "artifact" | Out-Null + $release = "src-tauri/target/x86_64-pc-windows-msvc/release" + $source = Join-Path $release "ShardX Launcher.exe" + if (-not (Test-Path $source)) { + $source = Join-Path $release "shardx-launcher.exe" + } + if (-not (Test-Path $source)) { + $source = Get-ChildItem $release -Filter "*.exe" -File | + Where-Object { $_.Name -notmatch "build|setup" } | + Select-Object -First 1 -ExpandProperty FullName + } + if (-not $source -or -not (Test-Path $source)) { + throw "Could not find compiled ShardX Launcher EXE." + } + Copy-Item $source "artifact/ShardX-Launcher-中文版.exe" + + $msi = Get-ChildItem "$release/bundle" -Recurse -Filter "*.msi" -File -ErrorAction SilentlyContinue | + Select-Object -First 1 + if ($msi) { + Copy-Item $msi.FullName "artifact/ShardX-Launcher-中文版.msi" + } + + - name: Upload Chinese build + uses: actions/upload-artifact@v4 + with: + name: ShardX-Launcher-Chinese-Windows + path: artifact/* + if-no-files-found: error + retention-days: 30 From 94e8288b363cdf18410848886276d03f706fdf6f Mon Sep 17 00:00:00 2001 From: YAOYAO888999 <1yaoyao1234567890@gmail.com> Date: Sat, 8 Aug 2026 11:57:07 +0800 Subject: [PATCH 3/3] Update build-cn.yml --- .github/workflows/build-cn.yml | 63 ++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build-cn.yml b/.github/workflows/build-cn.yml index b53e69b..fafa0c1 100644 --- a/.github/workflows/build-cn.yml +++ b/.github/workflows/build-cn.yml @@ -31,13 +31,38 @@ jobs: - name: Add Simplified Chinese UI layer shell: pwsh run: | - $b64 = @' -Ly8gU2hhcmRYIOeugOS9k+S4reaWh+eVjOmdouWxggovLyDku4Xnv7vor5EgTGF1bmNoZXIg5Y+v6KeB55WM6Z2i77yM5LiN5L+u5pS5IFNoYXJkWCBDaHJvbWl1bSBlbmdpbmUg5oiW5Lia5Yqh5pWw5o2u44CCCgpjb25zdCBleGFjdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsKICAiV29ya3NwYWNlIjogIuW3peS9nOWMuiIsCiAgIkJyb3dzZXJzIjogIua1j+iniOWZqOeOr+WigyIsCiAgIkJyb3dzZXIiOiAi5rWP6KeI5ZmoIiwKICAiUHJveGllcyI6ICLku6PnkIYiLAogICJQcm94eSI6ICLku6PnkIYiLAogICJQcm94eVNoYXJkIjogIlByb3h5U2hhcmQiLAogICJMaWJyYXJ5IjogIui1hOa6kOW6kyIsCiAgIkZpbmdlcnByaW50cyI6ICLmjIfnurnmqKHmnb8iLAogICJGaW5nZXJwcmludCI6ICLmjIfnurkiLAogICJTeXN0ZW0iOiAi57O757ufIiwKICAiU2V0dGluZ3MiOiAi6K6+572uIiwKICAiUHJvZmlsZXMiOiAi546v5aKD5pWw6YePIiwKICAiUHJvZmlsZSI6ICLmtY/op4jlmajnjq/looMiLAogICJSdW5uaW5nIjogIui/kOihjOS4rSIsCiAgIlNlYXJjaC4uLiI6ICLmkJzntKIuLi4iLAogICJTZWFyY2giOiAi5pCc57SiIiwKICAiSW1wb3J0IjogIuWvvOWFpSIsCiAgIkV4cG9ydCI6ICLlr7zlh7oiLAogICJGcm9tIHRlbXBsYXRlIjogIuS7juaooeadv+WIm+W7uiIsCiAgIisgTmV3IHByb2ZpbGUiOiAiKyDmlrDlu7rnjq/looMiLAogICJOZXcgcHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJOZXcgUHJvZmlsZSI6ICLmlrDlu7rnjq/looMiLAogICJBbGwiOiAi5YWo6YOoIiwKICAiTmFtZSI6ICLlkI3np7AiLAogICJTdGF0dXMiOiAi54q25oCBIiwKICAiTm90ZXMiOiAi5aSH5rOoIiwKICAiVGltZSI6ICLml7bpl7QiLAogICJObyBwcm9maWxlcyB5ZXQiOiAi6L+Y5rKh5pyJ5rWP6KeI5Zmo546v5aKDIiwKICAiUGljayBhIGZpbmdlcnByaW50IHRlbXBsYXRlIHRvIHN0YXJ0IGEgY3VyYXRlZCByZWFsLUNocm9tZSBzbmFwc2hvdCwgb3IgYnVpbGQgb25lIGZyb20gc2NyYXRjaC4iOiAi6YCJ5oup5LiA5Liq5oyH57q55qih5p2/5b+r6YCf5Yib5bu6546v5aKD77yM5oiW5LuO6Zu25byA5aeL6YWN572u44CCIiwKICAiTGlnaHQiOiAi5rWF6ImyIiwKICAiRGFyayI6ICLmt7HoibIiLAogICJ1cCB0byBkYXRlIjogIuW3suaYr+acgOaWsOeJiOacrCIsCiAgIkRvd25sb2FkIE1DUCI6ICLkuIvovb0gTUNQIiwKICAiRG9jdW1lbnRhdGlvbiI6ICLkvb/nlKjmlofmoaMiLAogICJBVVRPTUFUSU9OIEFQSSI6ICLoh6rliqjljJYgQVBJIiwKICAiQXV0b21hdGlvbiBBUEkiOiAi6Ieq5Yqo5YyWIEFQSSIsCiAgIkNhbmNlbCI6ICLlj5bmtogiLAogICJEZWxldGUiOiAi5Yig6ZmkIiwKICAiT0siOiAi56Gu5a6aIiwKICAiQ29uZmlybSI6ICLnoa7orqQiLAogICJDbG9zZSI6ICLlhbPpl60iLAogICJTYXZlIjogIuS/neWtmCIsCiAgIkNyZWF0ZSI6ICLliJvlu7oiLAogICJBZGQiOiAi5re75YqgIiwKICAiRWRpdCI6ICLnvJbovpEiLAogICJDbG9uZSI6ICLlhYvpmoYiLAogICJEdXBsaWNhdGUiOiAi5aSN5Yi2546v5aKDIiwKICAiU3RhcnQiOiAi5ZCv5YqoIiwKICAiU3RvcCI6ICLlgZzmraIiLAogICJMYXVuY2giOiAi5ZCv5YqoIiwKICAiT3BlbiI6ICLmiZPlvIAiLAogICJSZWZyZXNoIjogIuWIt+aWsCIsCiAgIkNvcHkiOiAi5aSN5Yi2IiwKICAiUGFzdGUiOiAi57KY6LS0IiwKICAiUmVtb3ZlIjogIuenu+mZpCIsCiAgIlRlc3QiOiAi5rWL6K+VIiwKICAiVGVzdGluZy4uLiI6ICLmtYvor5XkuK0uLi4iLAogICJTdWNjZXNzIjogIuaIkOWKnyIsCiAgIkZhaWxlZCI6ICLlpLHotKUiLAogICJFcnJvciI6ICLplJnor68iLAogICJFbmFibGVkIjogIuW3suWQr+eUqCIsCiAgIkRpc2FibGVkIjogIuW3suemgeeUqCIsCiAgIk5vbmUiOiAi5pegIiwKICAiRGVmYXVsdCI6ICLpu5jorqQiLAogICJBdXRvIjogIuiHquWKqCIsCiAgIk1hbnVhbCI6ICLmiYvliqgiLAogICJDdXN0b20iOiAi6Ieq5a6a5LmJIiwKICAiR2VuZXJhbCI6ICLluLjop4QiLAogICJBZHZhbmNlZCI6ICLpq5jnuqciLAogICJOZXR3b3JrIjogIue9kee7nCIsCiAgIkxvY2FsZSI6ICLor63oqIDkuI7lnLDljLoiLAogICJMYW5ndWFnZSI6ICLor63oqIAiLAogICJUaW1lem9uZSI6ICLml7bljLoiLAogICJHZW9sb2NhdGlvbiI6ICLlnLDnkIbkvY3nva4iLAogICJDb3VudHJ5IjogIuWbveWuti/lnLDljLoiLAogICJDaXR5IjogIuWfjuW4giIsCiAgIkxhdGl0dWRlIjogIue6rOW6piIsCiAgIkxvbmdpdHVkZSI6ICLnu4/luqYiLAogICJVc2VybmFtZSI6ICLnlKjmiLflkI0iLAogICJQYXNzd29yZCI6ICLlr4bnoIEiLAogICJIb3N0IjogIuS4u+acuiIsCiAgIlBvcnQiOiAi56uv5Y+jIiwKICAiVHlwZSI6ICLnsbvlnosiLAogICJQcm90b2NvbCI6ICLljY/orq4iLAogICJGb2xkZXIiOiAi5paH5Lu25aS5IiwKICAiVGFncyI6ICLmoIfnrb4iLAogICJQaW5uZWQiOiAi572u6aG2IiwKICAiUGluIjogIue9rumhtiIsCiAgIlVucGluIjogIuWPlua2iOe9rumhtiIsCiAgIkNvb2tpZXMiOiAiQ29va2llIiwKICAiQ29va2llIjogIkNvb2tpZSIsCiAgIkV4dGVuc2lvbnMiOiAi5omp5bGV56iL5bqPIiwKICAiU2NyZWVuIjogIuWxj+W5lSIsCiAgIlJlc29sdXRpb24iOiAi5YiG6L6o546HIiwKICAiUGxhdGZvcm0iOiAi5bmz5Y+wIiwKICAiT3BlcmF0aW5nIHN5c3RlbSI6ICLmk43kvZzns7vnu58iLAogICJEZXZpY2UiOiAi6K6+5aSHIiwKICAiQ1BVIjogIuWkhOeQhuWZqCIsCiAgIkNQVSBjb3JlcyI6ICJDUFUg5qC45b+D5pWwIiwKICAiTWVtb3J5IjogIuWGheWtmCIsCiAgIk1lbW9yeSAoR0IpIjogIuWGheWtmCAoR0IpIiwKICAiRm9udHMiOiAi5a2X5L2TIiwKICAiQXVkaW8iOiAi6Z+z6aKRIiwKICAiQ2FudmFzIjogIkNhbnZhcyIsCiAgIkNsaWVudCByZWN0cyI6ICLlrqLmiLfnq6/nn6nlvaIiLAogICJTZW5zb3JzIjogIuS8oOaEn+WZqCIsCiAgIlBvcnRzIHRvIGJsb2NrIjogIumcgOimgeWxj+iUveeahOerr+WPoyIsCiAgImFkZCBwb3J0Li4uIjogIua3u+WKoOerr+WPoy4uLiIsCiAgIldlYkdMIjogIldlYkdMIiwKICAiV2ViR1BVIjogIldlYkdQVSIsCiAgIldlYlJUQyI6ICJXZWJSVEMiLAogICJEbyBOb3QgVHJhY2siOiAi56aB5q2i6Lef6LiqIiwKICAiVXNlciBhZ2VudCI6ICLnlKjmiLfku6PnkIYiLAogICJVc2VyLUFnZW50IjogIueUqOaIt+S7o+eQhiIsCiAgIlVzZXIgQWdlbnQiOiAi55So5oi35Luj55CGIiwKICAiRGV2aWNlIGlkZW50aXR5IjogIuiuvuWkh+i6q+S7vSIsCiAgIklERU5USVRZIjogIui6q+S7vSIsCiAgIk5PSVNFIjogIuWZquWjsOmYsuaKpCIsCiAgIlBSSVZBQ1kiOiAi6ZqQ56eBIiwKICAiTUVESUEgREVWSUNFUyI6ICLlqpLkvZPorr7lpIciLAogICJNaWMgaW4iOiAi6bqm5YWL6aOO6L6T5YWlIiwKICAiU3BlYWtlcnMiOiAi5oms5aOw5ZmoIiwKICAiV2ViY2FtIjogIuaRhOWDj+WktCIsCiAgIlJlYWwiOiAi55yf5a6eIiwKICAiQXV0byBub2lzZSI6ICLoh6rliqjlmarlo7AiLAogICJOb2lzZSI6ICLlmarlo7AiLAogICJBdXRvIChmcm9tIHByb3h5IGdlbykiOiAi6Ieq5Yqo77yI5qC55o2u5Luj55CG5Zyw5Yy677yJIiwKICAiQXV0byAoZnJvbSBwcm94eSkiOiAi6Ieq5Yqo77yI5qC55o2u5Luj55CG77yJIiwKICAiTWFudWFsIGNvb3JkcyI6ICLmiYvliqjlnZDmoIciLAogICLigJQgZGlyZWN0IGNvbm5lY3Rpb24g4oCUIjogIuKAlCDnm7TmjqXov57mjqUg4oCUIiwKICAiZGlyZWN0IjogIuebtOi/niIsCiAgIklkbGUiOiAi56m66ZeyIiwKICAiTm8gcHJveHkiOiAi5LiN5L2/55So5Luj55CGIiwKICAiTm8gUHJveHkiOiAi5LiN5L2/55So5Luj55CGIiwKICAiQWRkIHByb3h5IjogIua3u+WKoOS7o+eQhiIsCiAgIk5ldyBwcm94eSI6ICLmlrDlu7rku6PnkIYiLAogICJQcm94eSBtYW5hZ2VyIjogIuS7o+eQhueuoeeQhiIsCiAgIlByb3h5IE1hbmFnZXIiOiAi5Luj55CG566h55CGIiwKICAiSW1wb3J0IHByb3hpZXMiOiAi5a+85YWl5Luj55CGIiwKICAiQnVsayBpbXBvcnQiOiAi5om56YeP5a+85YWlIiwKICAiQ2hlY2sgcHJveHkiOiAi5qOA5rWL5Luj55CGIiwKICAiQ2hlY2siOiAi5qOA5rWLIiwKICAiT25saW5lIjogIuWcqOe6vyIsCiAgIk9mZmxpbmUiOiAi56a757q/IiwKICAiVW5rbm93biI6ICLmnKrnn6UiLAogICJOZXZlciI6ICLku47mnKoiLAogICJMYXN0IGxhdW5jaGVkIjogIuS4iuasoeWQr+WKqCIsCiAgIkNyZWF0ZWQiOiAi5Yib5bu65pe26Ze0IiwKICAiQ3JlYXRlZCBhdCI6ICLliJvlu7rml7bpl7QiLAogICJSdW50aW1lIjogIui/kOihjOaXtumVvyIsCiAgIkFjdGlvbnMiOiAi5pON5L2cIiwKICAiQXBwbHkiOiAi5bqU55SoIiwKICAiUmVzZXQiOiAi6YeN572uIiwKICAiUmFuZG9taXplIjogIumaj+acuueUn+aIkCIsCiAgIkdlbmVyYXRlIjogIueUn+aIkCIsCiAgIlRlbXBsYXRlIjogIuaooeadvyIsCiAgIlRlbXBsYXRlcyI6ICLmqKHmnb8iLAogICJTZWxlY3QiOiAi6YCJ5oupIiwKICAiU2VsZWN0IGFsbCI6ICLlhajpgIkiLAogICJDbGVhciI6ICLmuIXpmaQiLAogICJCYWNrIjogIui/lOWbniIsCiAgIk5leHQiOiAi5LiL5LiA5q2lIiwKICAiRG9uZSI6ICLlrozmiJAiLAogICJDb250aW51ZSI6ICLnu6fnu60iLAogICJMb2FkaW5nLi4uIjogIuato+WcqOWKoOi9vS4uLiIsCiAgIkRvd25sb2FkaW5nLi4uIjogIuato+WcqOS4i+i9vS4uLiIsCiAgIkluc3RhbGxpbmcuLi4iOiAi5q2j5Zyo5a6J6KOFLi4uIiwKICAiU2F2aW5nLi4uIjogIuato+WcqOS/neWtmC4uLiIsCiAgIkNvcGllZCI6ICLlt7LlpI3liLYiLAogICJDb3BpZWQhIjogIuW3suWkjeWItu+8gSIsCiAgIlJlYWR5IjogIuWwsee7qiIsCiAgIkFjdGl2ZSI6ICLmtLvliqgiLAogICJJbmFjdGl2ZSI6ICLmnKrmtLvliqgiLAogICJSdW5uaW5nLi4uIjogIuato+WcqOi/kOihjC4uLiIsCiAgIlN0b3BwaW5nLi4uIjogIuato+WcqOWBnOatoi4uLiIsCiAgIk1heWJlIGxhdGVyIjogIuS7peWQjuWGjeivtCIsCiAgIlN0YXIgb24gR2l0SHViIjogIuWcqCBHaXRIdWIg54K5IFN0YXIiLAogICJFbmpveWluZyBTaGFyZFg/IjogIuinieW+lyBTaGFyZFgg5aW955So5ZCX77yfIiwKICAiT3BlbiBkYXNoYm9hcmQiOiAi5omT5byA5o6n5Yi25Y+wIiwKICAiRGFzaGJvYXJkIjogIuaOp+WItuWPsCIsCiAgIkFjY291bnQiOiAi6LSm5oi3IiwKICAiQVBJIGtleSI6ICJBUEkg5a+G6ZKlIiwKICAiQVBJIEtleSI6ICJBUEkg5a+G6ZKlIiwKICAiVGhlbWUiOiAi5Li76aKYIiwKICAiQnJvd3NlciBwYXRoIjogIua1j+iniOWZqOi3r+W+hCIsCiAgIkJyb3dzZXIgUGF0aCI6ICLmtY/op4jlmajot6/lvoQiLAogICJVc2Ugc3lzdGVtIjogIui3n+maj+ezu+e7nyIsCiAgIlZlcnNpb24iOiAi54mI5pysIiwKICAiVXBkYXRlIjogIuabtOaWsCIsCiAgIkNoZWNrIGZvciB1cGRhdGVzIjogIuajgOafpeabtOaWsCIsCiAgIkFib3V0IjogIuWFs+S6jiIsCiAgIk5vIHByb3hpZXMgeWV0IjogIui/mOayoeacieS7o+eQhiIsCiAgIk5vIGZpbmdlcnByaW50cyB5ZXQiOiAi6L+Y5rKh5pyJ5oyH57q55qih5p2/IiwKICAiQ2hvb3NlIGEgcHJvZmlsZSI6ICLpgInmi6nmtY/op4jlmajnjq/looMiLAogICJDcmVhdGUgcHJvZmlsZSI6ICLliJvlu7rnjq/looMiLAogICJFZGl0IHByb2ZpbGUiOiAi57yW6L6R546v5aKDIiwKICAiRGVsZXRlIHByb2ZpbGUiOiAi5Yig6Zmk546v5aKDIiwKICAiQ2xvbmUgcHJvZmlsZSI6ICLlhYvpmobnjq/looMiLAogICJTdGFydCBwcm9maWxlIjogIuWQr+WKqOeOr+WigyIsCiAgIlN0b3AgcHJvZmlsZSI6ICLlgZzmraLnjq/looMiLAogICJQcm9maWxlIG5hbWUiOiAi546v5aKD5ZCN56ewIiwKICAiUHJvZmlsZSBub3RlcyI6ICLnjq/looPlpIfms6giLAogICJGaW5nZXJwcmludCB0ZW1wbGF0ZSI6ICLmjIfnurnmqKHmnb8iLAogICJDaG9vc2UgZmluZ2VycHJpbnQiOiAi6YCJ5oup5oyH57q5IiwKICAiUHJveHkgc2V0dGluZ3MiOiAi5Luj55CG6K6+572uIiwKICAiRmluZ2VycHJpbnQgc2V0dGluZ3MiOiAi5oyH57q56K6+572uIiwKICAiQnJvd3NlciBzZXR0aW5ncyI6ICLmtY/op4jlmajorr7nva4iLAogICJDb25uZWN0aW9uIjogIui/nuaOpSIsCiAgIkF1dGhlbnRpY2F0aW9uIjogIui6q+S7vemqjOivgSIsCiAgIk5vIG5vdGVzIjogIuaXoOWkh+azqCIsCiAgIk5vIHByb3h5IGFzc2lnbmVkIjogIuacque7keWumuS7o+eQhiIsCiAgIk5vIHByb3h5IHNlbGVjdGVkIjogIuacqumAieaLqeS7o+eQhiIsCiAgIlVzZSBwcm94eSI6ICLkvb/nlKjku6PnkIYiLAogICJVc2UgdGhpcyB0ZW1wbGF0ZSI6ICLkvb/nlKjmraTmqKHmnb8iLAogICJDcmVhdGUgZnJvbSB0ZW1wbGF0ZSI6ICLku47mqKHmnb/liJvlu7oiLAogICJGcm9tIHNjcmF0Y2giOiAi5LuO6Zu25Yib5bu6IiwKICAiSW1wb3J0IHByb2ZpbGUiOiAi5a+85YWl546v5aKDIiwKICAiRXhwb3J0IHByb2ZpbGUiOiAi5a+85Ye6546v5aKDIiwKICAiSW1wb3J0IGNvb2tpZXMiOiAi5a+85YWlIENvb2tpZSIsCiAgIkV4cG9ydCBjb29raWVzIjogIuWvvOWHuiBDb29raWUiLAogICJQcm9maWxlIGNyZWF0ZWQiOiAi546v5aKD5bey5Yib5bu6IiwKICAiUHJvZmlsZSBkZWxldGVkIjogIueOr+Wig+W3suWIoOmZpCIsCiAgIlByb2ZpbGUgc2F2ZWQiOiAi546v5aKD5bey5L+d5a2YIiwKICAiUHJveHkgc2F2ZWQiOiAi5Luj55CG5bey5L+d5a2YIiwKICAiUHJveHkgZGVsZXRlZCI6ICLku6PnkIblt7LliKDpmaQiLAogICJGaW5nZXJwcmludCBzYXZlZCI6ICLmjIfnurnlt7Lkv53lrZgiCn07Cgpjb25zdCBhdHRycyA9IFsicGxhY2Vob2xkZXIiLCAidGl0bGUiLCAiYXJpYS1sYWJlbCJdIGFzIGNvbnN0OwoKZnVuY3Rpb24gcHJlc2VydmVXaGl0ZXNwYWNlKG9yaWdpbmFsOiBzdHJpbmcsIHRyYW5zbGF0ZWQ6IHN0cmluZykgewogIGNvbnN0IGxlYWQgPSBvcmlnaW5hbC5tYXRjaCgvXlxzKi8pPy5bMF0gPz8gIiI7CiAgY29uc3QgdGFpbCA9IG9yaWdpbmFsLm1hdGNoKC9ccyokLyk/LlswXSA/PyAiIjsKICByZXR1cm4gbGVhZCArIHRyYW5zbGF0ZWQgKyB0YWlsOwp9CgpmdW5jdGlvbiB0cmFuc2xhdGVUZXh0Tm9kZShub2RlOiBUZXh0KSB7CiAgY29uc3QgcmF3ID0gbm9kZS5ub2RlVmFsdWUgPz8gIiI7CiAgY29uc3Qga2V5ID0gcmF3LnRyaW0oKTsKICBpZiAoIWtleSkgcmV0dXJuOwogIGNvbnN0IGhpdCA9IGV4YWN0W2tleV07CiAgaWYgKGhpdCkgewogICAgbm9kZS5ub2RlVmFsdWUgPSBwcmVzZXJ2ZVdoaXRlc3BhY2UocmF3LCBoaXQpOwogICAgcmV0dXJuOwogIH0KCiAgY29uc3QgcGF0dGVybnM6IEFycmF5PFtSZWdFeHAsIHN0cmluZ10+ID0gWwogICAgWy9eKFxkKylccytwcm9maWxlcz8kL2ksICIkMSDkuKrnjq/looMiXSwKICAgIFsvXihcZCspXHMrcnVubmluZyQvaSwgIiQxIOS4qui/kOihjOS4rSJdLAogICAgWy9eRGVsZXRlXHMrIiguKykiXD8kL2ksICfliKDpmaTigJwkMeKAne+8nyddLAogICAgWy9eU3RhcnRccysiKC4rKSIkL2ksICflkK/liqjigJwkMeKAnSddLAogICAgWy9eU3RvcFxzKyIoLispIiQvaSwgJ+WBnOatouKAnCQx4oCdJ10sCiAgICBbL15Qcm9maWxlXHMrIiguKykiXHMrY3JlYXRlZCQvaSwgJ+eOr+Wig+KAnCQx4oCd5bey5Yib5bu6J10sCiAgXTsKICBmb3IgKGNvbnN0IFtyZSwgcmVwbGFjZW1lbnRdIG9mIHBhdHRlcm5zKSB7CiAgICBpZiAocmUudGVzdChrZXkpKSB7CiAgICAgIG5vZGUubm9kZVZhbHVlID0gcHJlc2VydmVXaGl0ZXNwYWNlKHJhdywga2V5LnJlcGxhY2UocmUsIHJlcGxhY2VtZW50KSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHRyYW5zbGF0ZUF0dHJpYnV0ZXMoZWw6IEVsZW1lbnQpIHsKICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHsKICAgIGNvbnN0IHZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKGF0dHIpOwogICAgaWYgKCF2YWx1ZSkgY29udGludWU7CiAgICBjb25zdCBoaXQgPSBleGFjdFt2YWx1ZS50cmltKCldOwogICAgaWYgKGhpdCkgZWwuc2V0QXR0cmlidXRlKGF0dHIsIGhpdCk7CiAgfQp9CgpmdW5jdGlvbiB3YWxrKHJvb3Q6IE5vZGUpIHsKICBpZiAocm9vdC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgIHRyYW5zbGF0ZVRleHROb2RlKHJvb3QgYXMgVGV4dCk7CiAgICByZXR1cm47CiAgfQogIGlmIChyb290Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiByb290Lm5vZGVUeXBlICE9PSBOb2RlLkRPQ1VNRU5UX05PREUgJiYgcm9vdC5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7CiAgICByZXR1cm47CiAgfQoKICBpZiAocm9vdC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKICAgIGNvbnN0IGVsID0gcm9vdCBhcyBFbGVtZW50OwogICAgaWYgKGVsLm1hdGNoZXMoInNjcmlwdCxzdHlsZSxjb2RlLHByZSxpbnB1dCx0ZXh0YXJlYSIpKSB7CiAgICAgIHRyYW5zbGF0ZUF0dHJpYnV0ZXMoZWwpOwogICAgICByZXR1cm47CiAgICB9CiAgICB0cmFuc2xhdGVBdHRyaWJ1dGVzKGVsKTsKICB9CgogIHJvb3QuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspOwp9CgpleHBvcnQgZnVuY3Rpb24gaW5zdGFsbFpoQ04oKSB7CiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSAiemgtQ04iOwoKICBjb25zdCBzdGFydCA9ICgpID0+IHsKICAgIHdhbGsoZG9jdW1lbnQuYm9keSk7CgogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7CiAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRhdGlvbnMpIHsKICAgICAgICBpZiAobS50eXBlID09PSAiY2hhcmFjdGVyRGF0YSIpIHRyYW5zbGF0ZVRleHROb2RlKG0udGFyZ2V0IGFzIFRleHQpOwogICAgICAgIGZvciAoY29uc3QgbiBvZiBBcnJheS5mcm9tKG0uYWRkZWROb2RlcykpIHdhbGsobik7CiAgICAgICAgaWYgKG0udHlwZSA9PT0gImF0dHJpYnV0ZXMiICYmIG0udGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkgdHJhbnNsYXRlQXR0cmlidXRlcyhtLnRhcmdldCk7CiAgICAgIH0KICAgIH0pOwoKICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgewogICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsCiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsCiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWy4uLmF0dHJzXSwKICAgIH0pOwogIH07CgogIGlmIChkb2N1bWVudC5ib2R5KSBzdGFydCgpOwogIGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBzdGFydCwgeyBvbmNlOiB0cnVlIH0pOwp9Cg== -'@ - [IO.File]::WriteAllBytes( - "src/zh-cn.ts", - [Convert]::FromBase64String(($b64 -replace "\s","")) - ) + $zh = @' + const M: Record = { + "Workspace":"工作区","Browsers":"浏览器环境","Browser":"浏览器","Proxies":"代理","Proxy":"代理", + "Library":"资源库","Fingerprints":"指纹模板","Fingerprint":"指纹","System":"系统","Settings":"设置", + "Profiles":"环境数量","Profile":"浏览器环境","Running":"运行中","Idle":"空闲","Search...":"搜索...", + "Import":"导入","Export":"导出","From template":"从模板创建","+ New profile":"+ 新建环境","New profile":"新建环境", + "All":"全部","Name":"名称","Status":"状态","Notes":"备注","Time":"时间","No profiles yet":"还没有浏览器环境", + "Light":"浅色","Dark":"深色","up to date":"已是最新版本","Download MCP":"下载 MCP","Documentation":"使用文档", + "Cancel":"取消","Delete":"删除","Save":"保存","Create":"创建","Edit":"编辑","Start":"启动","Stop":"停止", + "Locale":"语言与地区","Language":"语言","Timezone":"时区","Geolocation":"地理位置","Operating system":"操作系统", + "CPU cores":"CPU 核心数","Memory (GB)":"内存 (GB)","Canvas":"Canvas","WebGL":"WebGL","Audio":"音频", + "Client rects":"客户端矩形","Sensors":"传感器","Fonts":"字体","Ports to block":"需要屏蔽的端口", + "Do Not Track":"禁止跟踪","IDENTITY":"身份","NOISE":"噪声防护","PRIVACY":"隐私","MEDIA DEVICES":"媒体设备", + "Mic in":"麦克风输入","Speakers":"扬声器","Webcam":"摄像头","Real":"真实","Auto noise":"自动噪声", + "Auto (from proxy geo)":"自动(根据代理地区)","Manual coords":"手动坐标","— direct connection —":"— 直接连接 —", + "AUTOMATION API":"自动化 API","No proxy":"不使用代理","Add proxy":"添加代理","New proxy":"新建代理", + "Proxy manager":"代理管理","Import proxies":"导入代理","Bulk import":"批量导入","Check proxy":"检测代理" + }; + const A = ["placeholder","title","aria-label"] as const; + function tx(n: Text) { const r=n.nodeValue??"", k=r.trim(), v=M[k]; if(v) n.nodeValue=r.replace(k,v); } + function ta(e: Element) { for(const a of A){ const v=e.getAttribute(a); if(v&&M[v.trim()]) e.setAttribute(a,M[v.trim()]); } } + function walk(n: Node) { if(n.nodeType===Node.TEXT_NODE){tx(n as Text);return;} if(n.nodeType===Node.ELEMENT_NODE)ta(n as Element); n.childNodes.forEach(walk); } + export function installZhCN(){ + document.documentElement.lang="zh-CN"; + const start=()=>{ + walk(document.body); + new MutationObserver(ms=>ms.forEach(m=>{if(m.type==="characterData")tx(m.target as Text);m.addedNodes.forEach(walk);})).observe(document.body,{subtree:true,childList:true,characterData:true}); + }; + document.body?start():window.addEventListener("DOMContentLoaded",start,{once:true}); + } + '@ + Set-Content -Path "src/zh-cn.ts" -Value $zh -Encoding UTF8 $main = Get-Content "src/main.tsx" -Raw -Encoding UTF8 if ($main -notmatch 'installZhCN') { @@ -51,10 +76,7 @@ Ly8gU2hhcmRYIOeugOS9k+S4reaWh+eVjOmdouWxggovLyDku4Xnv7vor5EgTGF1bmNoZXIg5Y+v6KeB $confPath = "src-tauri/tauri.conf.json" $conf = Get-Content $confPath -Raw -Encoding UTF8 - $conf = $conf.Replace( - '"title": "ShardX Launcher"', - '"title": "ShardX Launcher 中文版"' - ) + $conf = $conf.Replace('"title": "ShardX Launcher"', '"title": "ShardX Launcher 中文版"') Set-Content $confPath $conf -Encoding UTF8 - name: Build Chinese Windows version @@ -64,30 +86,19 @@ Ly8gU2hhcmRYIOeugOS9k+S4reaWh+eVjOmdouWxggovLyDku4Xnv7vor5EgTGF1bmNoZXIg5Y+v6KeB shell: pwsh run: | New-Item -ItemType Directory -Force -Path "artifact" | Out-Null - $release = "src-tauri/target/x86_64-pc-windows-msvc/release" $source = Join-Path $release "ShardX Launcher.exe" - if (-not (Test-Path $source)) { - $source = Join-Path $release "shardx-launcher.exe" - } + if (-not (Test-Path $source)) { $source = Join-Path $release "shardx-launcher.exe" } if (-not (Test-Path $source)) { $source = Get-ChildItem $release -Filter "*.exe" -File | Where-Object { $_.Name -notmatch "build|setup" } | Select-Object -First 1 -ExpandProperty FullName } - if (-not $source -or -not (Test-Path $source)) { - throw "Could not find compiled ShardX Launcher EXE." - } - + if (-not $source -or -not (Test-Path $source)) { throw "Could not find compiled ShardX Launcher EXE." } Copy-Item $source "artifact/ShardX-Launcher-中文版.exe" - $msi = Get-ChildItem "$release/bundle" -Recurse -Filter "*.msi" -File -ErrorAction SilentlyContinue | - Select-Object -First 1 - if ($msi) { - Copy-Item $msi.FullName "artifact/ShardX-Launcher-中文版.msi" - } - - Get-ChildItem artifact + $msi = Get-ChildItem "$release/bundle" -Recurse -Filter "*.msi" -File -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($msi) { Copy-Item $msi.FullName "artifact/ShardX-Launcher-中文版.msi" } - name: Upload Chinese build uses: actions/upload-artifact@v4