我在这个问题上有三种变化,难度越来越大。所有问题都假设gettext提示寻找单个字母的响应。我目前正在使用perl编写,但C中的答案是可以接受的,并且可以编写XS模块。您可以假设没有输入法问题,并且区域设置变量设置正确。
所以,我们说我有一个程序要求gettext("are you sure you want to do that (Yes/No)?")
并且它已被翻译成西班牙语(... (Si/No)?"
),法语和valspeak(... (No problemo/Stop right there)?"
怎么能我告诉我从输入中收到的信是否意味着是?
我们假设我们正在显示一个包含gettext("Which install procedure do you want?")
之类问题的菜单,其中包含gettext("(N)ovice")
,gettext("(I)ntermediate")
,gettext("(E)xpert")
和{{1}等选项}。用英语我会接受gettext("(A)utomated")
。如果用户说俄语,我会接受什么?还是中国人?还是斯瓦希里语?
我的实际项目涉及将引导菜单从一般格式转换为适用于多个引导加载程序的格式。鉴于对于每个菜单条目,我有一组键值对(菜单文本,热键和其他操作),我看到了三种可能的方式,用我不会说的语言生成菜单。
什么是最佳解决方案?
答案 0 :(得分:0)
经过多次阅读,我相信我找到了答案:gettext
调用的上下文变体如pgettext
。
echo gettext("Which install procedure do you want?");
echo pgettext("Which install procedure do you want?", "Novice");
echo pgettext("Which install procedure do you want?", "Intermediate");
echo pgettext("Which install procedure do you want?", "Expert");
echo pgettext("Which install procedure do you want?", "Automated");
ans=getc();
if(ans == pgettext("Which install procedure do you want?|Novice","N") ){
do novice;
}elseif(ans == pgettext("Which install procedure do you want?|Intermediate","I") ){
. . .