mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-15 16:44:43 +01:00
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cultivation",
|
"name": "cultivation",
|
||||||
"version": "1.0.23",
|
"version": "1.0.24",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "^1.0.0-rc.5",
|
"@tauri-apps/api": "^1.0.0-rc.5",
|
||||||
|
|||||||
89
src-tauri/lang/pt-br.json
Normal file
89
src-tauri/lang/pt-br.json
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"lang_name": "Português Brasileiro",
|
||||||
|
"main": {
|
||||||
|
"title": "Cultivation: Edição Thorny",
|
||||||
|
"launch_button": "Iniciar",
|
||||||
|
"gc_enable": "Conectar ao Grasscutter",
|
||||||
|
"https_enable": "Usar HTTPS",
|
||||||
|
"ip_placeholder": "Endereço do Servidor...",
|
||||||
|
"port_placeholder": "Porta...",
|
||||||
|
"files_downloading": "Baixando Arquivos: ",
|
||||||
|
"files_extracting": "Extraindo Arquivos: "
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"enabled": "Habilitado",
|
||||||
|
"disabled": "Desabilitado",
|
||||||
|
"game_path": "Definir o Local de Instalação do Jogo",
|
||||||
|
"game_command": "Comando de Iniciação do Jogo",
|
||||||
|
"game_executable": "Definir o Executavel do Jogo",
|
||||||
|
"recover_rsa": "Exclusão de Emergencia de RSA",
|
||||||
|
"grasscutter_jar": "Definir o arquivo JAR do Grasscutter",
|
||||||
|
"toggle_encryption": "Ativar/Desativar Criptografia",
|
||||||
|
"install_certificate": "Instalar o Certificado de Proxy",
|
||||||
|
"java_path": "Definir um Local Customizado do Java",
|
||||||
|
"grasscutter_with_game": "Iniciar automaticamente o Grasscutter com o Jogo",
|
||||||
|
"language": "Selecionar Idioma",
|
||||||
|
"background": "Definir Fundo Customizado (link ou arquivo de imagem)",
|
||||||
|
"theme": "Definir Tema",
|
||||||
|
"patch_rsa": "Automaticamente Corrigir RSA",
|
||||||
|
"use_proxy": "Usar Proxy Interno",
|
||||||
|
"wipe_login": "Limpar Cache de Login",
|
||||||
|
"horny_mode": "Modo com tesão",
|
||||||
|
"auto_mongodb": "Iniciar MongoDB Automaticamente"
|
||||||
|
},
|
||||||
|
"downloads": {
|
||||||
|
"grasscutter_fullbuild": "Baixar o Grasscutter Tudo-em-Um",
|
||||||
|
"grasscutter_stable_data": "Baixar os Dados do Grasscutter Estável",
|
||||||
|
"grasscutter_latest_data": "Baixar os Dados do Grasscutter Mais Recente",
|
||||||
|
"grasscutter_stable_data_update": "Atualizar os Dados do Grasscutter Estável",
|
||||||
|
"grasscutter_latest_data_update": "Atualizar os Dados do Grasscutter Mais Recente",
|
||||||
|
"grasscutter_stable": "Baixar o Grasscutter Estável",
|
||||||
|
"grasscutter_latest": "Baixar o Grasscutter Mais Recente",
|
||||||
|
"grasscutter_stable_update": "Atualizar o Grasscutter Estável",
|
||||||
|
"grasscutter_latest_update": "Atualizar o Grasscutter Mais Recente",
|
||||||
|
"resources": "Baixar os Recursos do Grasscutter ",
|
||||||
|
"game": "Baixar o Jogo",
|
||||||
|
"aio_header": "Downloads Tudo-em-Um:",
|
||||||
|
"individual_header": "Downloads Individuais:"
|
||||||
|
},
|
||||||
|
"download_status": {
|
||||||
|
"downloading": "Baixando",
|
||||||
|
"extracting": "Extraindo",
|
||||||
|
"error": "Erro",
|
||||||
|
"finished": "Finalizado",
|
||||||
|
"stopped": "Parado"
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"select_file": "Selecione o arquivo ou pasta...",
|
||||||
|
"select_folder": "Selecione a pasta...",
|
||||||
|
"download": "Baixar",
|
||||||
|
"delete": "Deletar",
|
||||||
|
"install": "Instalar"
|
||||||
|
},
|
||||||
|
"news": {
|
||||||
|
"latest_commits": "Commits Recentes",
|
||||||
|
"latest_version": "Versão mais Recente"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"port_help_text": "Certifique-se de que esta é a porta do servidor dispatch, não a porta do jogo. Ela é quase sempre '443'.",
|
||||||
|
"game_help_text": "Você não precisa de uma cópia do jogo separada para jogar com o Grasscutter. Isso é para, ou desatualizar para a 2.6, ou se você não tiver o jogo instalado.",
|
||||||
|
"gc_stable_jar": "Baixar a versão atual do Grasscutter estável, que inclui o arquivo jar e os arquivos de dados.",
|
||||||
|
"gc_fullbuild": "Baixar uma versão completa do Grasscutter, incluindo a repo, jar e recursos. Ela está totalmente configurada e não requer nenhum outro download deste menu.",
|
||||||
|
"gc_dev_jar": "Baixar a versão de desenvolvimento mais recente do Grasscutter, que inclui o arquivo jar e os arquivos de dados.",
|
||||||
|
"gc_stable_data": "Baixar os arquivos de dados da versão atual do Grasscutter estável, que não inclui o arquivo jar. Isso é útil para atualizações.",
|
||||||
|
"gc_dev_data": "Baixar os arquivos de dados da versão de desenvolvimento mais recente do Grasscutter, que não vem com um arquivo jar. Isso é útil para atualizações.",
|
||||||
|
"encryption": "Isso normalmente deve estar desativado.",
|
||||||
|
"resources": "Esses também são necessários para usar o Grasscutter. Esse botão ficará cinza caso você já tenha uma pasta resources com coisas dentro.",
|
||||||
|
"emergency_rsa": "Caso algo dê errado, força a exclusão da correção RSA.",
|
||||||
|
"use_proxy": "Usa o proxy interno do Cultivation. Isso deveria estar habilitado a não ser que você utilize algo como o Fiddler.",
|
||||||
|
"patch_rsa": "Corrigir e 'descorrigir' o RSA do seu jogo automaticamente. Isso deve estar habilitado a não ser que você esteja jogando com versões antigas (3.0 ou mais antigas) ou não oficiais."
|
||||||
|
},
|
||||||
|
"swag": {
|
||||||
|
"akebi_name": "Akebi",
|
||||||
|
"migoto_name": "Migoto",
|
||||||
|
"reshade_name": "Reshade",
|
||||||
|
"akebi": "Definir o Executavel do Akebi/Acrepi",
|
||||||
|
"migoto": "Definir o Executavel do 3DMigoto",
|
||||||
|
"reshade": "Definir o Executavel do Reshade Injector"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -86,7 +86,13 @@ impl HttpHandler for ProxyHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn should_intercept(&mut self, _ctx: &HttpContext, _req: &Request<Body>) -> bool {
|
async fn should_intercept(&mut self, _ctx: &HttpContext, _req: &Request<Body>) -> bool {
|
||||||
true
|
let uri = _req.uri().to_string();
|
||||||
|
|
||||||
|
if uri.contains("hoyoverse.com") || uri.contains("mihoyo.com") || uri.contains("yuanshen.com") {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ pub fn install_location() -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn set_migoto_target(migoto_path: String) -> bool {
|
pub fn set_migoto_target(window: tauri::Window, migoto_path: String) -> bool {
|
||||||
let mut migoto_pathbuf = PathBuf::from(migoto_path);
|
let mut migoto_pathbuf = PathBuf::from(migoto_path);
|
||||||
|
|
||||||
migoto_pathbuf.pop();
|
migoto_pathbuf.pop();
|
||||||
@@ -114,6 +114,8 @@ pub fn set_migoto_target(migoto_path: String) -> bool {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window.emit("migoto_set", &()).unwrap();
|
||||||
|
|
||||||
// Set options
|
// Set options
|
||||||
conf
|
conf
|
||||||
.with_section(Some("Loader"))
|
.with_section(Some("Loader"))
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "Cultivation",
|
"productName": "Cultivation",
|
||||||
"version": "1.0.23"
|
"version": "1.0.24"
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"allowlist": {
|
"allowlist": {
|
||||||
|
|||||||
@@ -78,6 +78,14 @@ export class Main extends React.Component<IProps, IState> {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
listen('migoto_set', async () => {
|
||||||
|
this.setState({
|
||||||
|
migotoSet: !!(await getConfigOption('migoto_path')),
|
||||||
|
})
|
||||||
|
|
||||||
|
window.location.reload()
|
||||||
|
})
|
||||||
|
|
||||||
// Emitted for automatic processes
|
// Emitted for automatic processes
|
||||||
listen('grasscutter_closed', async () => {
|
listen('grasscutter_closed', async () => {
|
||||||
const autoService = await getConfigOption('auto_mongodb')
|
const autoService = await getConfigOption('auto_mongodb')
|
||||||
|
|||||||
@@ -60,51 +60,51 @@ export default class NewsSection extends React.Component<IProps, IState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async showLatestCommits() {
|
async showLatestCommits() {
|
||||||
// Just use official API
|
// Just use official API
|
||||||
|
const response: string = await invoke('req_get', {
|
||||||
|
url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
|
||||||
|
})
|
||||||
|
let grasscutterApiResponse: GrasscutterAPIResponse | null = null
|
||||||
|
|
||||||
|
try {
|
||||||
|
grasscutterApiResponse = JSON.parse(response)
|
||||||
|
} catch (e) {
|
||||||
|
grasscutterApiResponse = null
|
||||||
|
}
|
||||||
|
|
||||||
|
let commits: CommitResponse[]
|
||||||
|
if (grasscutterApiResponse?.commits == null) {
|
||||||
|
// If it didn't work, try again anyways
|
||||||
const response: string = await invoke('req_get', {
|
const response: string = await invoke('req_get', {
|
||||||
url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
|
url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
|
||||||
})
|
})
|
||||||
let grasscutterApiResponse: GrasscutterAPIResponse | null = null
|
commits = JSON.parse(response)
|
||||||
|
} else {
|
||||||
|
commits = grasscutterApiResponse.commits.gc_stable
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
// Probably rate-limited
|
||||||
grasscutterApiResponse = JSON.parse(response)
|
if (!Array.isArray(commits)) return
|
||||||
} catch (e) {
|
|
||||||
grasscutterApiResponse = null
|
|
||||||
}
|
|
||||||
|
|
||||||
let commits: CommitResponse[]
|
// Get only first 5
|
||||||
if (grasscutterApiResponse?.commits == null) {
|
const commitsList = commits.slice(0, 10)
|
||||||
// If it didn't work, try again anyways
|
const commitsListHtml = commitsList.map((commitResponse: CommitResponse) => {
|
||||||
const response: string = await invoke('req_get', {
|
return (
|
||||||
url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits',
|
<tr className="Commit" id="newsCommitsTable" key={commitResponse.sha}>
|
||||||
})
|
<td className="CommitAuthor">
|
||||||
commits = JSON.parse(response)
|
<span>{commitResponse.commit.author.name}</span>
|
||||||
} else {
|
</td>
|
||||||
commits = grasscutterApiResponse.commits.gc_stable
|
<td className="CommitMessage">
|
||||||
}
|
<span>{commitResponse.commit.message}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
// Probably rate-limited
|
this.setState({
|
||||||
if (!Array.isArray(commits)) return
|
commitList: commitsListHtml,
|
||||||
|
news: <>{commitsListHtml}</>,
|
||||||
// Get only first 5
|
})
|
||||||
const commitsList = commits.slice(0, 10)
|
|
||||||
const commitsListHtml = commitsList.map((commitResponse: CommitResponse) => {
|
|
||||||
return (
|
|
||||||
<tr className="Commit" id="newsCommitsTable" key={commitResponse.sha}>
|
|
||||||
<td className="CommitAuthor">
|
|
||||||
<span>{commitResponse.commit.author.name}</span>
|
|
||||||
</td>
|
|
||||||
<td className="CommitMessage">
|
|
||||||
<span>{commitResponse.commit.message}</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
commitList: commitsListHtml,
|
|
||||||
news: <>{commitsListHtml}</>,
|
|
||||||
})
|
|
||||||
|
|
||||||
return this.state.commitList
|
return this.state.commitList
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user