我在这里看一些C源代码,我发现了这个:
fprintf(stderr, _("Try `%s --help' for more information.\n"), command);
Run Code Online (Sandbox Code Playgroud)
当我看到wxWidget时,我已经看到了下划线,我读到它用于国际化.我发现它真的很可怕(有史以来最不直观的名字),但我认为它只是另一种奇怪的wxWidget惯例.
现在我在一些Alsa源中再次找到它.有谁知道它来自哪里?
我终于让自己看了一些linux代码.我现在正在寻找"ls.c".
在底部的函数"usage()"中,我发现了很多这些语句:
fputs (_("\
List information about the FILEs (the current directory by default).\n\
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n\
\n\
"), stdout);
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它是L"string"或_T"string"还是全新的东西?我还必须承认我不知道用什么词来搜索这样的东西.
希望您能够帮助我.
printf/puts等_("hello,world \n")参数的作用是什么?我经常在阅读GNU源代码时发现它.
我们正在经历将产品代码库从Java 8升级到Java 12的过程。发现的一个问题是,我们的代码在很多情况下都使用下划线字符(_)作为变量名,不再允许使用(显然是从Java 9开始)。这是遗留代码,所以我真的不知道为什么要这样写。在绝大多数情况下,似乎已经定义了一种方法(名为_)来按名称检索资源字符串。例如,这种方法的一个实例如下所示:
private static String _(String key)
{
return PTR.getResources ().getStringProperty (key);
}
Run Code Online (Sandbox Code Playgroud)
该方法的用法如下:
JFileChooser chooser = m_directory.getFileChooser ();
chooser.setDialogTitle (_("chooser.title"));
chooser.setFileFilter (ExtensionsFileFilter.withFullDescription (_("chooser.shp"), ".shp"));
chooser.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES);
addProperty (_("labels.dir"), m_directory);
Run Code Online (Sandbox Code Playgroud)
我们正在重命名_方法。但是,我很好奇为什么在我们的代码中使用了这种模式。这是某个时候流行的模式吗?使用某种技术(Swing)时它受欢迎吗?到目前为止,我所有的Google都只因为变量不能再被命名为_而大获成功,但是却没有解释为什么首先要这样做。原来的开发人员已经不在了,所以我不能问他们。
有人有什么想法吗?
我认为这不是所建议问题的重复。该问题标记为“ c”,而我的标记为“ java”。同样,该问题的可接受答案表示_函数是gettext提供的预定义函数。这不适用于我,因为我要询问的_函数实际上是在我们的Java代码库中定义的。话虽如此,建议的问题和此处发布的一些信息的上下文似乎表明存在关联。听起来_函数/方法通常可以理解为在检索可本地化的字符串资源时使用。