小编jad*_*k94的帖子

如何同时使用多个.mo文件进行gettext转换?

总之,我可以同时在python中使用.mo同一种语言的python许多文件吗?

在我的python应用程序中,我需要使用gettextI18N.这个应用程序使用一种插件系统.这意味着你可以下载一个插件并将其放在适当的目录中,它就像任何其他python包一样运行.主应用程序存储.mo它使用的文件./locale/en/LC_MESSAGES/main.mo.插件nr 1 在同一目录中.mo调用了自己的文件plugin1.mo.

我会用它来加载main.moI18N消息:

gettext.install('main', './locale', unicode=False)
Run Code Online (Sandbox Code Playgroud)

如何安装其他插件,以便所有插件按照应有的方式进行翻译?

我想到的解决方案:

我应该gettext.install()在每个包的命名空间中吗?但是这会覆盖_()之前定义的并且混乱主应用程序的未来翻译.

有没有办法将两个.mo文件合二为一(例如安装新的插件时)?

在运行时,我可以将它们组合成一个GNUTranslation对象吗?或者覆盖_()添加到全局命名空间的默认方法?然后,我将如何选择该选项?而不是_('Hello World'),我会使用_('plugin1', 'Hello World in plug-in 1')

注意:应用程序不应该知道要安装的所有插件,因此它不能已经在其main.mo文件中翻译了所有消息.

python plugins gettext internationalization

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

reportlab不同的下一页

我正在尝试使用Python 2.7和ReportLab生成具有不同奇数/偶数页面布局的PDF文档(以允许用于绑定的不对称边框).为了进一步复杂化,我试图每页生成两列.

def WritePDF(files):

    story = []
    doc = BaseDocTemplate("Polar.pdf", pagesize=A4, title = "Polar Document 5th Edition")

    oddf1  = Frame(doc.leftMargin, doc.bottomMargin, doc.width/2-6, doc.height, id='oddcol1') 
    oddf2  = Frame(doc.leftMargin+doc.width/2+6, doc.bottomMargin, doc.width/2-6, doc.height, id='oddcol2')
    evenf1 = Frame(doc.leftMargin, doc.bottomMargin, doc.width/2-6, doc.height, id='evencol1') 
    evenf2 = Frame(doc.leftMargin+doc.width/2+6, doc.bottomMargin, doc.width/2-6, doc.height, id='evencol2')
    doc.addPageTemplates([PageTemplate(id='EvenTwoC',frames=[evenf1,evenf2],onPage=evenFooter),
                          PageTemplate(id='OddTwoC', frames=[oddf1, oddf2], onPage=oddFooter)])


    ...

    story.append(Paragraph(whatever, style))
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何使ReportLab在左右(或奇数和偶数)页面之间交替.有什么建议?

python reportlab

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

如何使用可拖动项目制作ListView?

我正在寻找一个ListPreference,用户可以在其中更改列表中的项目顺序.这些物品可以拖动,并且可以由用户重新订购.

我在我的自定义ROM中看到了这个(我几乎可以肯定我在Cyanogenmod中看到它)用于QuickPanel.这是一个截图,通过以下方式获得创意:

Sabotage ROM的QuickPanel设置中的

我知道如何制作自定义ListView项目并设置图标以指示项目是可拖动的,但我不知道如何使它们可拖动,并相应地更改顺序.至于在偏好中保存它们,我发现可以很容易地实现.

PS:我知道Cyanogenmod是开源的,但我找不到这个特殊事物的来源:(我能得到的最接近的是这个,它应该在另一个屏幕附近...

在此先感谢任何关于此的提示.

更新:我最终使用了接受的答案中的文件,添加和修改.我在这里列出它们以供进一步参考.

  • 使用自定义适配器(在我的情况下为ArrayAdapter)来实现此项可拖动的视觉反馈,这是TextView附近的ImageView.这是可选的.

  • 设置DragListener和RemoveListener以相应地更新列表.ListView不会自动执行此操作.这取决于您使用的适配器.

  • 有一行将View转换为ViewGroup,它产生了一些错误,所以我删除了没有任何问题的转换,不需要它.(在onInterceptTouchEvent方法中).

  • 改变mRemoveMode = 1;TouchInterceptor的构造函数,或者:FLING = 0; SLIDE = 1; TRASH = 2;.我认为TRASH,资源也应该可用.

我实际上不是从答案的链接中获取文件,而是从我已经拥有的Cyanogenmod中获取文件,但我猜这些文件是相同的.

这些是项目中的实际文件(在撰写本文时的r12):

我希望它可以帮助别人:)

android listview

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

处理Scrapy Div Class

我是Scrapy的新手,也是蟒蛇.我正在尝试编写一个刮刀,它将提取文章标题,链接和文章描述几乎像网页的RSS提要,以帮助我完成我的论文.我编写了下面的刮刀,当我运行它并将其导出为.txt时,它会变回空白.我相信我需要添加一个Item Loader,但我并不积极.

Items.py

from scrapy.item import Item, Field

class NorthAfricaItem(Item):
    title = Field()
    link = Field()
    desc = Field()
    pass
Run Code Online (Sandbox Code Playgroud)

蜘蛛

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from northafricatutorial.items import NorthAfricaItem

class NorthAfricaItem(BaseSpider):
   name = "northafrica"
   allowed_domains = ["http://www.north-africa.com/"]
   start_urls = [
       "http://www.north-africa.com/naj_news/news_na/index.1.html",
   ]

 def parse(self, response):
 hxs = HtmlXPathSelector(response)
 sites = hxs.select('//ul/li')
 items = []
 for site in sites:
     item = NorthAfricaItem()
     item['title'] = site.select('a/text()').extract()
     item['link'] = site.select('a/@href').extract()
     item['desc'] = site.select('text()').extract()
     items.append(item)
 return items
Run Code Online (Sandbox Code Playgroud)

UPDATE

感谢Talvalin的帮助,另外还有一些麻烦,我能够解决问题.我使用的是我在网上找到的股票脚本.然而,一旦我使用了外壳,我就能找到正确的标签来获得我需要的东西.我最终得到了:

from …
Run Code Online (Sandbox Code Playgroud)

python scrapy

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