总之,我可以同时在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 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在左右(或奇数和偶数)页面之间交替.有什么建议?
我正在寻找一个ListPreference,用户可以在其中更改列表中的项目顺序.这些物品可以拖动,并且可以由用户重新订购.
我在我的自定义ROM中看到了这个(我几乎可以肯定我在Cyanogenmod中看到它)用于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):
我希望它可以帮助别人:)
我是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)