如何修改WebView中日期时间选择器按钮的语言文本?
问题描述
在Android WebView及Flutter in_appwebview 插件环境中,使用HTML的 <input type="time"> 或 <input type="date"> 输入控件时,系统弹出的日期时间选择器内的「设置」(set)和「清除」(clear)按钮无法正确加载葡萄牙语翻译,始终显示英文文本。
当前配置
使用的 InAppWebViewGroupOptions 配置如下:
final InAppWebViewGroupOptions _webViewOptions = InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions( useShouldOverrideUrlLoading: false, javaScriptEnabled: true, allowFileAccessFromFileURLs: true, allowUniversalAccessFromFileURLs: true, javaScriptCanOpenWindowsAutomatically: true, supportZoom: false, userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36', ), ios: IOSInAppWebViewOptions( allowsInlineMediaPlayback: true, ), android: AndroidInAppWebViewOptions( useHybridComposition: true, allowContentAccess: true, allowFileAccess: true, ), );
解决方案
1. 确保WebView的Locale配置正确
Android系统层面的Locale设置会影响WebView控件的系统UI翻译:
- 原生Android项目中,可在WebView初始化前强制设置Locale为葡萄牙语:
// 设置为巴西葡萄牙语,若为欧洲葡萄牙语则用 "pt", "PT" Locale.setDefault(new Locale("pt", "BR")); Configuration config = getResources().getConfiguration(); config.setLocale(Locale.getDefault()); getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - Flutter项目中,可通过修改AndroidManifest.xml添加全局Locale配置:
<application ... android:locale="pt-BR">
2. 替换为自定义JS日期时间选择器
放弃依赖系统原生控件,使用第三方JS日期时间选择器(如Flatpickr、Tempus Dominus),完全控制文本翻译:
- 示例:引入Flatpickr并配置葡萄牙语本地化
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css"> <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script> <script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/pt.js"></script> <input type="text" id="timeInput"> <script> flatpickr("#timeInput", { locale: "pt", enableTime: true, noCalendar: true, time_24hr: true }); </script>
3. 更新WebView版本与系统语言包
- 检查设备是否已安装葡萄牙语语言包,若未安装需引导用户在系统设置中添加
- 将设备的Chrome WebView更新至最新版本,旧版本WebView存在系统UI翻译缺失的已知bug,新版本已修复相关问题
内容的提问来源于stack exchange,提问作者Lucas santos
相关产品推荐
相关产品推荐

