小编Xun*_*ang的帖子

使用未命名的字符串参数进行Django本地化

我在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)

python django localization internationalization

2
推荐指数
1
解决办法
1855
查看次数

如何调试c ++运行时错误

我使用MinGW作为编译器,使用CodeBlocks作为IDE.当出现运行时错误时,程序只是停止工作而没有任何错误消息.是否有可能获得传统的错误消息,如错误类型和发生的位置?

c++ runtime-error mingw codeblocks

1
推荐指数
1
解决办法
4690
查看次数

处理:"魔术"功能如何工作

在处理中如果要注册鼠标事件监听器,只需要定义一个名为"mousepressed","mousereleased"等的函数,它们"神奇地"成为事件监听器.这也发生在我正在使用的controlP5库中,其中以控制小部件命名的所有函数"神奇地"成为其事件处理程序.我想知道Java如何处理这种魔法?我在哪里可以看到有关此模式的一些源代码或主题.我想知道它的机制,因为我无法在主applet中定义监听器.

java processing event-handling control-p5

1
推荐指数
1
解决办法
106
查看次数

C++:从非类函数调用类方法

我想写一个调用类方法的帮助函数:

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++

0
推荐指数
1
解决办法
1370
查看次数