You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免xgettext误将java.sql.ResultSet::getString的字符串识别为待翻译项?

如何避免xgettext误将java.sql.ResultSet::getString的字符串识别为待翻译项?

嗨,这个问题我之前也碰到过,确实挺闹心——本来只想提取自己定义的i18n翻译函数里的字符串,结果数据库列名也被混进来凑数了。别担心,有几个靠谱的办法能解决:

  • 直接排除getString函数
    xgettext支持用-k!函数名的参数来明确排除不需要提取的函数。你只需要在原来的命令里加上-k!getString,就能让它忽略所有名为getString的函数调用。修改后的命令如下:

    find src -iname "*.java" | xargs xgettext -ktrc -ktr -kmarktr -ktrn:1,2 -k!getString -o po/keys.pot --from-code=utf-8
    
  • 精确限定类与函数(避免误伤同名函数)
    如果你自己的代码里也有叫getString的函数,怕上面的方法误排除,那可以用类名::函数名的格式精准定位。明确只提取i18n类下的翻译函数,同时排除java.sql.ResultSet的getString:

    find src -iname "*.java" | xargs xgettext -k"i18n::trc" -k"i18n::tr" -k"i18n::marktr" -k"i18n::trn:1,2" -k!"java.sql.ResultSet::getString" -o po/keys.pot --from-code=utf-8
    
  • 代码注释标记(适合少量场景)
    要是只有个别getString调用需要排除,可以在对应代码行上方加注释// xgettext:no-extract,xgettext就会跳过这个函数的字符串提取。不过这个方法需要逐个修改代码,适合少量特殊场景,批量处理还是前两种命令行方式更高效。

你可以先试试第一种方法,要是有同名函数冲突再用第二种,基本就能解决问题啦~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:19:34