@@ -257,11 +257,11 @@ def _on_language_selected(self, view, selection):
257257 # Mark language step as completed
258258 self .completed_steps .add ("language" )
259259
260- if lang_code := getattr (selection , "code" , None ):
260+ if lang_code_full := getattr (selection , "code" , None ):
261261 if step := next ((s for s in self .steps if s ["name" ] == "language" ), None ):
262262 if img := step .get ("img" ):
263263 candidate = os .path .join (
264- ASSETS_DIR , f"headerbar-locale-{ lang_code } .svg"
264+ ASSETS_DIR , f"headerbar-locale-{ lang_code_full } .svg"
265265 )
266266 path = (
267267 candidate
@@ -273,6 +273,11 @@ def _on_language_selected(self, view, selection):
273273
274274 keyboard_layout = params .get ("keyboard" , "us" )
275275
276+ # If a non-English language is chosen with a 'us' keyboard,
277+ # default to the 'us(intl)' variant to support accented characters.
278+ if keyboard_layout == "us" and lang_code != "en" :
279+ keyboard_layout = "us(intl)"
280+
276281 # LAZY LOADING: Ensure keyboard view exists before updating or showing it
277282 self ._ensure_view ("keyboard" , keyboard_layout )
278283
@@ -282,7 +287,12 @@ def _on_language_selected(self, view, selection):
282287 if keyboard_layout not in ["us" , "latam" ]:
283288 self .stack .set_visible_child_name ("keyboard" )
284289 else :
285- self ._on_keyboard_selected (None , keyboard_layout )
290+ # Also skip for us(intl) if the user doesn't need to see the choice
291+ if keyboard_layout == "us(intl)" :
292+ self ._on_keyboard_selected (None , keyboard_layout )
293+ else :
294+ self ._on_keyboard_selected (None , keyboard_layout )
295+
286296
287297 def _add_keyboard_view (self , primary_layout ):
288298 view = KeyboardView (primary_layout = primary_layout )
0 commit comments