From 7ffd9c1859ac53a9c351acfbb0ed16ef996f03f6 Mon Sep 17 00:00:00 2001 From: Kyosuke Takayama Date: Sun, 1 Jun 2025 18:52:38 +0900 Subject: [PATCH 1/3] feat: add commit language option for commit message localization --- aider/args.py | 6 ++++++ aider/coders/base_coder.py | 3 +++ aider/main.py | 1 + aider/repo.py | 4 +++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/aider/args.py b/aider/args.py index 08c9bde76..f14a8acec 100644 --- a/aider/args.py +++ b/aider/args.py @@ -731,6 +731,12 @@ def get_parser(default_config_files, git_root): default=None, help="Specify the language to use in the chat (default: None, uses system settings)", ) + group.add_argument( + "--commit-language", + metavar="COMMIT_LANGUAGE", + default=None, + help="Specify the language to use in the commit message (default: None, user language)", + ) group.add_argument( "--yes-always", action="store_true", diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 5dbe03cf9..10ad76efe 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -118,6 +118,7 @@ class Coder: detect_urls = True ignore_mentions = None chat_language = None + commit_language = None file_watcher = None @classmethod @@ -328,6 +329,7 @@ class Coder: num_cache_warming_pings=0, suggest_shell_commands=True, chat_language=None, + commit_language=None, detect_urls=True, ignore_mentions=None, total_tokens_sent=0, @@ -341,6 +343,7 @@ class Coder: self.event = self.analytics.event self.chat_language = chat_language + self.commit_language = commit_language self.commit_before_message = [] self.aider_commit_hashes = set() self.rejected_urls = set() diff --git a/aider/main.py b/aider/main.py index ea344f0ba..ec843c189 100644 --- a/aider/main.py +++ b/aider/main.py @@ -993,6 +993,7 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F num_cache_warming_pings=args.cache_keepalive_pings, suggest_shell_commands=args.suggest_shell_commands, chat_language=args.chat_language, + commit_language=args.commit_language, detect_urls=args.detect_urls, auto_copy_context=args.copy_paste, auto_accept_architect=args.auto_accept_architect, diff --git a/aider/repo.py b/aider/repo.py index 01652b15f..83d9e202a 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -210,7 +210,9 @@ class GitRepo: else: user_language = None if coder: - user_language = coder.get_user_language() + user_language = coder.commit_language + if not user_language: + user_language = coder.get_user_language() commit_message = self.get_commit_message(diffs, context, user_language) # Retrieve attribute settings, prioritizing coder.args if available From 91f34e37f72cc18b45a007cfa7a610335c2bd1f2 Mon Sep 17 00:00:00 2001 From: Kyosuke Takayama Date: Sun, 1 Jun 2025 19:09:39 +0900 Subject: [PATCH 2/3] docs: add commit-language option to config and documentation files --- aider/website/assets/sample.aider.conf.yml | 3 +++ aider/website/docs/config/aider_conf.md | 3 +++ aider/website/docs/config/options.md | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/aider/website/assets/sample.aider.conf.yml b/aider/website/assets/sample.aider.conf.yml index c8e72e3db..60fcbd46a 100644 --- a/aider/website/assets/sample.aider.conf.yml +++ b/aider/website/assets/sample.aider.conf.yml @@ -386,6 +386,9 @@ ## Specify the language to use in the chat (default: None, uses system settings) #chat-language: xxx +## Specify the language to use in the commit message (default: None, user language) +#commit-language: xxx + ## Always say yes to every confirmation #yes-always: false diff --git a/aider/website/docs/config/aider_conf.md b/aider/website/docs/config/aider_conf.md index a77d70301..b85ab8f88 100644 --- a/aider/website/docs/config/aider_conf.md +++ b/aider/website/docs/config/aider_conf.md @@ -440,6 +440,9 @@ cog.outl("```") ## Specify the language to use in the chat (default: None, uses system settings) #chat-language: xxx +## Specify the language to use in the commit message (default: None, user language) +#commit-language: xxx + ## Always say yes to every confirmation #yes-always: false diff --git a/aider/website/docs/config/options.md b/aider/website/docs/config/options.md index 368c4ec7e..fb36b0f21 100644 --- a/aider/website/docs/config/options.md +++ b/aider/website/docs/config/options.md @@ -74,7 +74,7 @@ usage: aider [-h] [--model] [--openai-api-key] [--anthropic-api-key] [--apply-clipboard-edits] [--exit] [--show-repo-map] [--show-prompts] [--voice-format] [--voice-language] [--voice-input-device] [--disable-playwright] [--file] - [--read] [--vim] [--chat-language] [--yes-always] [-v] + [--read] [--vim] [--chat-language] [--commit-language] [--yes-always] [-v] [--load] [--encoding] [--line-endings] [-c] [--env-file] [--suggest-shell-commands | --no-suggest-shell-commands] @@ -683,6 +683,10 @@ Environment variable: `AIDER_VIM` Specify the language to use in the chat (default: None, uses system settings) Environment variable: `AIDER_CHAT_LANGUAGE` +### `--commit-language COMMIT_LANGUAGE` +Specify the language to use in the commit message (default: None, user language) +Environment variable: `AIDER_COMMIT_LANGUAGE` + ### `--yes-always` Always say yes to every confirmation Environment variable: `AIDER_YES_ALWAYS` From 6eaf75f760000c5b010b334d7f7c32fa8380ced0 Mon Sep 17 00:00:00 2001 From: Kyosuke Takayama Date: Sun, 1 Jun 2025 19:29:17 +0900 Subject: [PATCH 3/3] test: add test for commit-language option --- tests/basic/test_main.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index ebdc4d450..1725360ad 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -1035,6 +1035,16 @@ class TestMain(TestCase): system_info = coder.get_platform_info() self.assertIn("Spanish", system_info) + def test_commit_language_japanese(self): + with GitTemporaryDirectory(): + coder = main( + ["--commit-language", "japanese", "--exit", "--yes"], + input=DummyInput(), + output=DummyOutput(), + return_coder=True, + ) + self.assertIn("japanese", coder.commit_language) + @patch("git.Repo.init") def test_main_exit_with_git_command_not_found(self, mock_git_init): mock_git_init.side_effect = git.exc.GitCommandNotFound("git", "Command 'git' not found")