Skip to content

i18n(abort): add Turkish, Korean, and Italian abort triggers#30102

Closed
AytuncYildizli wants to merge 6 commits intoopenclaw:mainfrom
AytuncYildizli:i18n/turkish-korean-italian-abort-triggers
Closed

i18n(abort): add Turkish, Korean, and Italian abort triggers#30102
AytuncYildizli wants to merge 6 commits intoopenclaw:mainfrom
AytuncYildizli:i18n/turkish-korean-italian-abort-triggers

Conversation

@AytuncYildizli
Copy link
Contributor

@AytuncYildizli AytuncYildizli commented Feb 28, 2026

Summary

Extends the ABORT_TRIGGERS set with three languages that were missing from the multilingual expansion in #25103:

Language Triggers added
Turkish (tr) dur, iptal
Korean (ko) 멈춰
Italian (it) fermati

Motivation

Turkish (~85M speakers), Korean (~80M), and Italian (~65M) are among the largest language communities without abort trigger coverage. A real-world case surfaced this gap: a user unfamiliar with /stop had no native-language fallback.

Design Decisions

Conservative scope by design. The existing pattern in #25103 is 1–2 entries per language (Arabic: 1, Hindi: 1, Chinese: 1, Portuguese: 1). This PR follows that convention — no phrase variants, no extended forms.

Turkish gets 2 entries because dur (imperative "stop") and iptal ("cancel") map to distinct user intents that both clearly signal abort. This mirrors how Spanish got both detén and deten (accented/unaccented variants), and French got arrête alongside the shared detente.

Not the long-term solution. The hardcoded set doesn't scale. Issue #26113 proposes a config-driven extraTriggers approach that would make per-language additions unnecessary. This PR is an explicit stopgap for the highest-impact missing languages until that ships.

Testing

Extended isAbortTrigger and isAbortRequestText test coverage for all three new locales. All 16 tests pass.

✓ src/auto-reply/reply/abort.test.ts (16 tests) 30ms

Related

Add missing language coverage to the ABORT_TRIGGERS set:
- Turkish (tr): 'dur', 'iptal'
- Korean (ko): '멈춰'
- Italian (it): 'fermati'

These languages were omitted from the multilingual expansion in openclaw#25103.
Follows the same conservative pattern: 1-2 entries per language, matching
the baseline established for Arabic (1), Hindi (1), Chinese (1),
and Portuguese (1).

Relates to openclaw#26113 (configurable abort triggers) — this is a stopgap
fix for the most-requested missing languages. A proper config-driven
solution is tracked in that issue.

Tests: extended isAbortTrigger and isAbortRequestText coverage for all
three new locales.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0ce471f30a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"pare",
// Turkish (tr)
"dur",
"iptal",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle Turkish dotted-I spelling for new iptal trigger

Adding only "iptal" misses a common Turkish uppercase form: İPTAL lowercases to i̇ptal (with a combining dot) under JavaScript’s default toLowerCase, so isAbortTrigger/isAbortRequestText will not recognize it even though this change advertises Turkish abort support. This affects users typing in uppercase or title case on Turkish keyboards, where İ is the expected capital letter.

Useful? React with 👍 / 👎.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 28, 2026

Greptile Summary

This PR extends ABORT_TRIGGERS in src/auto-reply/reply/abort.ts with four new entries covering Turkish ("dur", "iptal"), Korean ("멈춰"), and Italian ("fermati"), following the established pattern from #25103. Test coverage is added for all new triggers in both isAbortTrigger and isAbortRequestText. The PR also includes an unrelated import-ordering cleanup (moving import type declarations to the top of the file).

Key changes:

  • "iptal" (Turkish: cancel), "멈춰" (Korean: stop), and "fermati" (Italian: stop) are unambiguous and low-risk additions.
  • "dur" (Turkish imperative: stop) is a common standalone French adjective meaning "hard/tough." Since French is already explicitly supported in the trigger set, French-speaking users who send "dur" as a standalone chat reaction could accidentally trigger an abort. This is an exact-match check so the risk is bounded, but worth acknowledging.
  • The PR description contains a minor inaccuracy: it states "French got both arrête and detén" but detén is Spanish, not French.

Confidence Score: 4/5

  • Safe to merge; the only concern is a potential false-positive abort for French users who send "dur" as a standalone message.
  • All changes are additive (new entries in a Set plus matching tests), the matching logic is exact-match only so blast radius is narrow, and three of the four new entries are unambiguous. The "dur" entry carries a minor false-positive risk for an already-supported language (French), but this follows existing trade-offs already present in the codebase (e.g. "halt", "wait", "exit").
  • src/auto-reply/reply/abort.ts — specifically the "dur" entry and the unrelated import reorder.

Last reviewed commit: 0ce471f

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

'dur' means 'hard/tough' in French — keeping only 'iptal' for Turkish
as the unambiguous abort signal, per Greptile review feedback.
AytuncYildizli added a commit to AytuncYildizli/openclaw that referenced this pull request Feb 28, 2026
…hrases

Implements openclaw#26113: users can now extend the built-in ABORT_TRIGGERS set
with their own language-specific or workflow-specific stop phrases via
openclaw.json, without waiting for a release.

  {
    "session": {
      "abortTriggers": ["dur", "yeter", "그만", "custom-stop"]
    }
  }

Changes:
- abort.ts: isAbortTrigger() and isAbortRequestText() accept optional
  extraTriggers param; normalization pipeline (lowercase, trim,
  punctuation strip) applies to extra triggers consistently
- command-detection.ts: passes cfg.session?.abortTriggers through
  isControlCommandMessage for the main detection path
- get-reply-inline-actions.ts: passes cfg.session?.abortTriggers into
  isAbortRequestText for the inline abort path
- types.base.ts: SessionConfig gains optional abortTriggers field
- zod-schema.session.ts: SessionSchema gains optional abortTriggers
  string array
- schema.labels.ts + schema.help.ts: documentation for the new field

The built-in ABORT_TRIGGERS set is preserved as-is and remains the
baseline. extraTriggers augments it — no existing behaviour changes for
users who do not set the new config field.

Closes openclaw#26113
Related: openclaw#25103, openclaw#30102
@AytuncYildizli
Copy link
Contributor Author

AytuncYildizli commented Feb 28, 2026

Update: dropped "dur" from Turkish triggers — it's a common French adjective ("hard/tough") and could cause false-positive aborts for French speakers. "iptal" alone covers Turkish unambiguously.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4f8b35e4d9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"stopp",
"pare",
// Turkish (tr)
"iptal",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add missing Turkish dur abort trigger

The Turkish section currently adds only iptal, so dur is still treated as a non-abort input because matching is exact against ABORT_TRIGGERS (isAbortTrigger/isAbortRequestText only return true for listed phrases). In practice this leaves a very common Turkish "stop" command unsupported, so Turkish users can still fail to cancel an in-flight run even after this i18n expansion.

Useful? React with 👍 / 👎.

@thewilloftheshadow
Copy link
Member

See #3460

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants