242 lines
9.1 KiB
Rust
242 lines
9.1 KiB
Rust
use crate::config::Language;
|
|
|
|
pub struct Translator {
|
|
language: Language,
|
|
keep_types_english: bool,
|
|
keep_changelog_types_english: bool,
|
|
}
|
|
|
|
impl Translator {
|
|
pub fn new(
|
|
language: Language,
|
|
keep_types_english: bool,
|
|
keep_changelog_types_english: bool,
|
|
) -> Self {
|
|
Self {
|
|
language,
|
|
keep_types_english,
|
|
keep_changelog_types_english,
|
|
}
|
|
}
|
|
|
|
pub fn translate_commit_type(&self, commit_type: &str) -> String {
|
|
if self.keep_types_english {
|
|
return commit_type.to_string();
|
|
}
|
|
|
|
match self.language {
|
|
Language::English => commit_type.to_string(),
|
|
Language::Chinese => self.translate_commit_type_zh(commit_type),
|
|
Language::Japanese => self.translate_commit_type_ja(commit_type),
|
|
Language::Korean => self.translate_commit_type_ko(commit_type),
|
|
Language::Spanish => self.translate_commit_type_es(commit_type),
|
|
Language::French => self.translate_commit_type_fr(commit_type),
|
|
Language::German => self.translate_commit_type_de(commit_type),
|
|
}
|
|
}
|
|
|
|
pub fn translate_changelog_category(&self, category: &str) -> String {
|
|
if self.keep_changelog_types_english {
|
|
return category.to_string();
|
|
}
|
|
|
|
match self.language {
|
|
Language::English => category.to_string(),
|
|
Language::Chinese => self.translate_changelog_category_zh(category),
|
|
Language::Japanese => self.translate_changelog_category_ja(category),
|
|
Language::Korean => self.translate_changelog_category_ko(category),
|
|
Language::Spanish => self.translate_changelog_category_es(category),
|
|
Language::French => self.translate_changelog_category_fr(category),
|
|
Language::German => self.translate_changelog_category_de(category),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_zh(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "新功能".to_string(),
|
|
"fix" => "修复".to_string(),
|
|
"docs" => "文档".to_string(),
|
|
"style" => "样式".to_string(),
|
|
"refactor" => "重构".to_string(),
|
|
"perf" => "性能".to_string(),
|
|
"test" => "测试".to_string(),
|
|
"build" => "构建".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "杂项".to_string(),
|
|
"revert" => "回滚".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_ja(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "機能".to_string(),
|
|
"fix" => "修正".to_string(),
|
|
"docs" => "ドキュメント".to_string(),
|
|
"style" => "スタイル".to_string(),
|
|
"refactor" => "リファクタリング".to_string(),
|
|
"perf" => "パフォーマンス".to_string(),
|
|
"test" => "テスト".to_string(),
|
|
"build" => "ビルド".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "雑務".to_string(),
|
|
"revert" => "取り消し".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_ko(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "기능".to_string(),
|
|
"fix" => "버그 수정".to_string(),
|
|
"docs" => "문서".to_string(),
|
|
"style" => "스타일".to_string(),
|
|
"refactor" => "리팩토링".to_string(),
|
|
"perf" => "성능".to_string(),
|
|
"test" => "테스트".to_string(),
|
|
"build" => "빌드".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "기타".to_string(),
|
|
"revert" => "되돌리기".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_es(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "nueva función".to_string(),
|
|
"fix" => "corrección".to_string(),
|
|
"docs" => "documentación".to_string(),
|
|
"style" => "estilo".to_string(),
|
|
"refactor" => "refactorización".to_string(),
|
|
"perf" => "rendimiento".to_string(),
|
|
"test" => "pruebas".to_string(),
|
|
"build" => "construcción".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "tareas".to_string(),
|
|
"revert" => "revertir".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_fr(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "nouvelle fonctionnalité".to_string(),
|
|
"fix" => "correction".to_string(),
|
|
"docs" => "documentation".to_string(),
|
|
"style" => "style".to_string(),
|
|
"refactor" => "refactorisation".to_string(),
|
|
"perf" => "performance".to_string(),
|
|
"test" => "tests".to_string(),
|
|
"build" => "construction".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "tâches".to_string(),
|
|
"revert" => "rétablir".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_commit_type_de(&self, commit_type: &str) -> String {
|
|
match commit_type {
|
|
"feat" => "Neue Funktion".to_string(),
|
|
"fix" => "Korrektur".to_string(),
|
|
"docs" => "Dokumentation".to_string(),
|
|
"style" => "Stil".to_string(),
|
|
"refactor" => "Refactoring".to_string(),
|
|
"perf" => "Leistung".to_string(),
|
|
"test" => "Tests".to_string(),
|
|
"build" => "Build".to_string(),
|
|
"ci" => "CI".to_string(),
|
|
"chore" => "Wartung".to_string(),
|
|
"revert" => "Zurücksetzen".to_string(),
|
|
_ => commit_type.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_zh(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "新增".to_string(),
|
|
"changed" => "更改".to_string(),
|
|
"deprecated" => "弃用".to_string(),
|
|
"removed" => "移除".to_string(),
|
|
"fixed" => "修复".to_string(),
|
|
"security" => "安全".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_ja(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "追加".to_string(),
|
|
"changed" => "変更".to_string(),
|
|
"deprecated" => "非推奨".to_string(),
|
|
"removed" => "削除".to_string(),
|
|
"fixed" => "修正".to_string(),
|
|
"security" => "セキュリティ".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_ko(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "추가됨".to_string(),
|
|
"changed" => "변경됨".to_string(),
|
|
"deprecated" => "사용 중단".to_string(),
|
|
"removed" => "제거됨".to_string(),
|
|
"fixed" => "수정됨".to_string(),
|
|
"security" => "보안".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_es(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "Agregado".to_string(),
|
|
"changed" => "Cambiado".to_string(),
|
|
"deprecated" => "Obsoleto".to_string(),
|
|
"removed" => "Eliminado".to_string(),
|
|
"fixed" => "Corregido".to_string(),
|
|
"security" => "Seguridad".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_fr(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "Ajouté".to_string(),
|
|
"changed" => "Modifié".to_string(),
|
|
"deprecated" => "Obsolète".to_string(),
|
|
"removed" => "Supprimé".to_string(),
|
|
"fixed" => "Corrigé".to_string(),
|
|
"security" => "Sécurité".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
|
|
fn translate_changelog_category_de(&self, category: &str) -> String {
|
|
match category.to_lowercase().as_str() {
|
|
"added" => "Hinzugefügt".to_string(),
|
|
"changed" => "Geändert".to_string(),
|
|
"deprecated" => "Veraltet".to_string(),
|
|
"removed" => "Entfernt".to_string(),
|
|
"fixed" => "Behoben".to_string(),
|
|
"security" => "Sicherheit".to_string(),
|
|
_ => category.to_string(),
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn translate_commit_type(commit_type: &str, language: Language, keep_english: bool) -> String {
|
|
let translator = Translator::new(language, keep_english, true);
|
|
translator.translate_commit_type(commit_type)
|
|
}
|
|
|
|
pub fn translate_changelog_category(
|
|
category: &str,
|
|
language: Language,
|
|
keep_english: bool,
|
|
) -> String {
|
|
let translator = Translator::new(language, true, keep_english);
|
|
translator.translate_changelog_category(category)
|
|
}
|