24 Commits

Author SHA1 Message Date
TheWhiteDog9487 de98440dbd 新的二进制文件 2024-10-12 11:05:06 +00:00
TheWhiteDog9487 2c958e24ba 修复Workflow 2024-10-12 19:03:43 +08:00
TheWhiteDog9487 98c10f105b 更新代码,适配新版本Ubuntu 2024-10-12 18:28:56 +08:00
TheWhiteDog9487 7b8f2668ee 更新Workflow配置 2024-10-12 18:28:23 +08:00
TheWhiteDog9487 1c308fcf28 添加全自动化Workflow 2024-10-12 04:16:59 +00:00
TheWhiteDog9487 354d030e4b Update README.md 2023-05-09 07:43:33 +08:00
TheWhiteDog9487 541a5cdf5b 啊,忘记更新x86架构的可执行文件了 2023-05-08 02:08:35 +00:00
TheWhiteDog9487 c6cff413fe 新增加aarch64架构支持 2023-05-08 01:55:20 +00:00
TheWhiteDog9487 641f1a82a7 Update README.md 2023-05-07 10:50:14 +08:00
TheWhiteDog9487 2756f382a8 Update README.md 2023-04-24 17:30:26 +08:00
TheWhiteDog9487 d4eb067f79 Create LICENSE 2023-04-24 14:43:35 +08:00
TheWhiteDog9487 422ea6bc5e 修正支持列表 2023-04-23 17:28:28 +08:00
TheWhiteDog9487 d4ed959762 超大号更新,Debian现已加入豪华套餐 2023-04-23 17:22:49 +08:00
TheWhiteDog9487 03b382ce27 超大号更新,Debian现已加入豪华套餐 2023-04-23 17:09:08 +08:00
TheWhiteDog9487 fbabe987b8 Update README.md 2023-04-20 08:24:44 +08:00
TheWhiteDog9487 8ad6c731ff debian软件包名都不一样怎么能用呢? 2023-01-17 12:09:06 +08:00
TheWhiteDog9487 76c5a2712f 搞定 2023-01-17 12:04:58 +08:00
TheWhiteDog9487 c771f6a63f 搞定 2023-01-17 12:03:30 +08:00
TheWhiteDog9487 94aa2f68b9 继续修复Bug,换个新方法 2023-01-17 11:55:19 +08:00
TheWhiteDog9487 749efe4f69 修复22.04不工作的问题 2022-09-22 09:48:41 +08:00
TheWhiteDog9487 f8b56f1d0d 在Ubuntu 20.04 LTS上采用静态编译 2022-03-19 19:09:47 +08:00
TheWhiteDog9487 7d9a834453 淘汰shell版本,cpp版本增加确定机制 2022-03-06 11:34:18 +08:00
TheWhiteDog9487 d1765d2689 再次修改README 2022-01-24 15:12:00 +08:00
TheWhiteDog9487 c3e642bac5 更新README说明和CPP源文件,缺少一个空格我不能接受 2022-01-24 15:09:44 +08:00
8 changed files with 217 additions and 42 deletions
+51
View File
@@ -0,0 +1,51 @@
name: 更新二进制可执行文件
on:
workflow_dispatch:
push:
paths:
- language.cpp
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 安装GCC对ARM交叉编译工具链
run: sudo apt install g++-aarch64-linux-gnu
- name: 编译源代码
run: |
g++ -o language --static -std=c++20 language.cpp
aarch64-linux-gnu-g++ -o language_arm --static -std=c++20 language.cpp
- uses: actions/upload-artifact@v4
with:
name: 可执行二进制文件
path: |
language_arm
language
push:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 可执行二进制文件
- name: 提交
run: |
git config --global user.email "gaojian520one@outlook.com"
git config --global user.name "TheWhiteDog9487"
git add .
git commit -m "新的二进制文件"
git push
- name: 推送
uses: ad-m/github-push-action@master
+6
View File
@@ -0,0 +1,6 @@
################################################################################
# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
################################################################################
/.vs
/.vscode
+11
View File
@@ -0,0 +1,11 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
+23 -29
View File
@@ -1,34 +1,28 @@
# 一键切换Ubuntu系统到简体中文
## 两个版本
1.C++
2.纯Shell
## 不同版本区别
这两个版本的唯一区别就是运行方式不一样,功能和结构没有任何区别
不信你可以去看源代码,C++版本我只是用了system函数执行shell语句,效果不能说天差地别吧,至少也能说是一模一样
***
# 一键切换Ubuntu(和Debian)系统到简体中文
## 测试通过的系统
### **x86_64**
|系统名称|版本|
|-|-|
|Debian|11.6.0|
|Ubuntu|24.10 24.04.1 LTS 22.04 LTS 20.04 LTS|
### **aarch64**
|系统名称|版本|
|-|-|
|Debian|11.5|
## 使用方法
# **注意!程序运行完之后会自动重启目标电脑/服务器,请确保没有未保存的工作!否则后果自负!**
确保已经安装wget或者有其他方法可以传输文件
### **x86_64**
```shell
apt update && apt install -y wget
```
***
下面两个版本选一个就行
***
下载程序(Shell)
```shell
wget https://raw.githubusercontent.com/TheWhiteDog9487/ubuntu-language-onekey-zh_cn/main/language.sh
```
下载程序(C++)
```shell
wget https://raw.githubusercontent.com/TheWhiteDog9487/ubuntu-language-onekey-zh_cn/main/language
```
运行程序(Shell)
```shell
sudo bash language.sh
```
运行程序(C++)
```shell
sudo chmod o+x language
sudo chmod u+x language
sudo ./language
```
```
### **aarch64**
```shell
apt update && apt install -y wget
wget https://raw.githubusercontent.com/TheWhiteDog9487/ubuntu-language-onekey-zh_cn/main/language_arm
sudo chmod u+x language_arm
sudo ./language_arm
```
BIN
View File
Binary file not shown.
+126 -6
View File
@@ -1,9 +1,129 @@
#include<cstdlib>
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <filesystem>
using namespace std;
int main(){
auto LOCALE = R"(
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8
)"s;
string get_linux_distro_name() {
// ChatGPT
string distro_name = "";
ifstream release_file("/etc/os-release");
if (release_file.is_open()) {
string line = "";
while (getline(release_file, line)) {
if (line.find("PRETTY_NAME=") != string::npos) {
distro_name = line.substr(line.find("=") + 1);
distro_name.erase(0, 1); // remove opening quote
distro_name.erase(distro_name.size() - 1); // remove closing quote
break;}}
release_file.close();}
return distro_name;}
auto check() {
cout << "请输入您的选项(输入y或者yes继续)";
string userin = "";
cin >> userin;
if (userin == "y" or userin == "yes")
return;
else{
cout << "输入不正确欸,如果想停止本程序的话请按下Ctrl+C" << endl;
check();}}
auto Ubuntu(){
cout << "提示:本程序需要root权限,如果您不是以root运行的本程序,请Ctrl+C终止并重新提权运行" << endl;
cout << "如果确认权限没有问题,请输入y或者yes";
check();
cout << "即将开始安装并配置简体中文语言包,请输入y或者yes继续,或者按Ctrl+C终止本程序";
check();
system("apt install -y language-pack-zh-hans");
system("locale-gen zh_CN.UTF-8");
system("mv /etc/default/locale /etc/default/locale.backup");
system("touch /etc/default/locale");
system("echo LANG=\"zh_CN.UTF-8\" > /etc/default/locale");
system("reboot");}
if ( filesystem::exists("/etc/locale.conf") ){
filesystem::copy_file("/etc/locale.conf", "/etc/locale.conf.backup", filesystem::copy_options::update_existing);
fstream locale_conf("/etc/locale.conf", ios::out | ios::trunc);
locale_conf << LOCALE << endl;
locale_conf.close();
filesystem::permissions("/etc/locale.conf", filesystem::perms::owner_read | filesystem::perms::owner_write | filesystem::perms::group_read | filesystem::perms::others_read);
cout << "原/etc/locale.conf已经备份为/etc/locale.conf.backup" << endl;}
else if ( filesystem::exists("/etc/default/locale") ){
filesystem::copy_file("/etc/default/locale", "/etc/default/locale.backup", filesystem::copy_options::update_existing);
fstream locale("/etc/default/locale", ios::out | ios::trunc);
locale << LOCALE << endl;
locale.close();
filesystem::permissions("/etc/default/locale", filesystem::perms::owner_read | filesystem::perms::owner_write | filesystem::perms::group_read | filesystem::perms::others_read);
cout << "原/etc/default/locale已经备份为/etc/default/locale.backup" << endl;}
cout << "即将重启以应用语言设置,请保存您未完成的工作以防数据丢失" << endl;
cout << "输入y或者yes重启或者按Ctrl+C终止本程序" << endl;
check();
system("reboot");}
auto Debian(){
cout << "提示:本程序需要root权限,如果您不是以root运行的本程序,请Ctrl+C终止并重新提权运行" << endl;
cout << "如果确认权限没有问题,请输入y或者yes";
check();
filesystem::copy_file("/etc/locale.gen", "/etc/locale.gen.backup", filesystem::copy_options::update_existing);
fstream locale_gen("/etc/locale.gen", ios::out | ios::trunc);
locale_gen << "zh_CN.UTF-8 UTF-8" << endl;
locale_gen.close();
system("locale-gen");
filesystem::permissions("/etc/locale.gen", filesystem::perms::owner_read | filesystem::perms::owner_write | filesystem::perms::group_read | filesystem::perms::others_read);
if ( filesystem::exists("/etc/default/locale") ){
filesystem::copy_file("/etc/default/locale", "/etc/default/locale.backup", filesystem::copy_options::update_existing);
fstream locale("/etc/default/locale", ios::out | ios::trunc);
locale << LOCALE << endl;
locale.close();
filesystem::permissions("/etc/default/locale", filesystem::perms::owner_read | filesystem::perms::owner_write | filesystem::perms::group_read | filesystem::perms::others_read);
cout << "原/etc/default/locale已经备份为/etc/default/locale.backup" << endl;}
cout << "原/etc/locale.gen已经备份为/etc/locale.gen.backup" << endl;
cout << "即将重启以应用语言设置,请保存您未完成的工作以防数据丢失" << endl;
cout << "输入y或者yes重启或者按Ctrl+C终止本程序" << endl;
check();
system("reboot");}
int main() {
auto OS = [](){
#pragma warning(suppress : 4996)
if (getenv("OS") != nullptr){
return "Windows";}
#pragma warning(suppress : 4996)
else if (getenv("HOME") != nullptr){
return "Linux";}
else{
return "未知";}}();
if (OS == "Windows"){
cout << "Windows请在“设置”应用中调整语言(❁´◡`❁)。" << endl;
exit(-1);}
else if (OS == "Linux") {
if (get_linux_distro_name().find("Ubuntu") != string::npos){
cout << "检测到您使用的系统为:" << get_linux_distro_name() << endl;
Ubuntu();}
if (get_linux_distro_name().find("Debian") != string::npos){
cout << "检测到您使用的系统为:" << get_linux_distro_name() << endl;
Debian();}
if (get_linux_distro_name().find("Armbian") != string::npos){
cout << "检测到您使用的系统为:" << get_linux_distro_name() << endl;
Debian();}
else { exit(-1); }}
else if (OS == "未知"){
cout << "未知操作系统,为确保数据安全将会强制退出。"
<< endl
<< "如果是误报,请联系作者修复问题。"
<< endl;
exit(-1);}
}
-7
View File
@@ -1,7 +0,0 @@
apt update
apt install -y language-pack-zh-hans
locale-gen zh_CN.UTF-8
mv /etc/default/locale /etc/default/locale.backup
touch /etc/default/locale
echo LANG="zh_CN.UTF-8" > /etc/default/locale
reboot
BIN
View File
Binary file not shown.