我在Django中创建了一些Badge类,每个类都包含一些字符串变量中的描述:
"You get this badge because you've runned %d meters in %d minutes"
"You get this badge because you've killed %d monsters of the type %s"
Run Code Online (Sandbox Code Playgroud)
这些类也有一个函数get_description(badge_level_requirements),因此在模板中它将与列表一起调用以组合特定用户的字符串:
class RunnerBadge(Badge):
des=ugettext_lazy("You get this badge because you've runned %d meters in %d minutes")
def get_description(cls,badge_level_requirements):
return cls.des%badge_level_requirements
Run Code Online (Sandbox Code Playgroud)
并且我已经将需求列表存储在数据库中而没有任何参数名称:(如示例所示,不同的类具有不同数量的值来填充字符串,值也意味着不同的东西.所以我不能真的命名参数.
但是,如果我想将这些字符串国际化,那么就会出现错误:'msgid' format string with unnamed arguments cannot be properly localized并且无法为此事项生成语言文件.
有没有办法绕过这个错误?
更新
我遇到过这种绕过错误而不改变数据库的方法.在数据库中,级别要求以dict格式存储在文本字段中:
#Requirment of Runner's badge
"{'gold':(100,10),'silver':(50,5),'bronze':(25,2)}"
Run Code Online (Sandbox Code Playgroud)
在类定义中,手动将参数名称添加为'arg_0','arg_1'...到描述中.在用于填充描述字符串之前,将get_description方法更改为预处理数据.
class RunnersBadge(Badge):
requirements=#get the previous dict from database
description="You get this …Run Code Online (Sandbox Code Playgroud) 我使用MinGW作为编译器,使用CodeBlocks作为IDE.当出现运行时错误时,程序只是停止工作而没有任何错误消息.是否有可能获得传统的错误消息,如错误类型和发生的位置?
在处理中如果要注册鼠标事件监听器,只需要定义一个名为"mousepressed","mousereleased"等的函数,它们"神奇地"成为事件监听器.这也发生在我正在使用的controlP5库中,其中以控制小部件命名的所有函数"神奇地"成为其事件处理程序.我想知道Java如何处理这种魔法?我在哪里可以看到有关此模式的一些源代码或主题.我想知道它的机制,因为我无法在主applet中定义监听器.
我想写一个调用类方法的帮助函数:
foo.h中
class cls{
public:
void fun();
void fun1();
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp中
void cls::fun(){
helperFun();
}
void helperFun(){
fun1();//how to call fun1() here?
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做,或者最好的方法是什么?
c++ ×2
codeblocks ×1
control-p5 ×1
django ×1
java ×1
localization ×1
mingw ×1
processing ×1
python ×1