Viewing File: /usr/lib/python2.7/site-packages/babel/messages/frontend.pyc


dic@sRdZddlmZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
Z
dd	lmZddlZddlZddlZdd
lmZddlZddlZddlmZddlmZmZdd
lmZddlmZddlm Z m!Z!m"Z"ddl#m$Z$ddl%m&Z&m'Z'ddl(m)Z)ddl*m+Z+m,Z,ddddddgZ-dZ.defdYZ/defdYZ0dZ1defdYZ2defdYZ3de4fd YZ5d!Z6e7d"Z8gd#Z9e:d$krNe6ndS(%s3Frontends for the message extraction functionality.i(tRawConfigParser(tdatetime(tlog(tCommand(tDistutilsOptionErrortDistutilsSetupError(tgetpreferredencodingN(tOptionParser(tStringIO(t__version__(tLocalet
localedata(tUnknownLocaleError(tCatalog(textract_from_dirtDEFAULT_KEYWORDStDEFAULT_MAPPING(twrite_mo(tread_potwrite_po(tPLURALS(todicttLOCALTZtCommandLineInterfacetcompile_catalogtextract_messagestinit_catalogtcheck_message_extractorstupdate_catalogsrestructuredtext enc	BsVeZdZdZddddddd gZddgZdZdZdZ	RS(!sCatalog compilation command for use in ``setup.py`` scripts.

    If correctly installed, this command is available to Setuptools-using
    setup scripts automatically. For projects using plain old ``distutils``,
    the command needs to be registered explicitly in ``setup.py``::

        from babel.messages.frontend import compile_catalog

        setup(
            ...
            cmdclass = {'compile_catalog': compile_catalog}
        )

    :since: version 0.9
    :see: `Integrating new distutils commands <http://docs.python.org/dist/node32.html>`_
    :see: `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
    s+compile message catalogs to binary MO filessdomain=tDs&domain of PO file (default 'messages')s
directory=tds.path to base directory containing the catalogssinput-file=tisname of the input filesoutput-file=tosQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')slocale=tls locale of the catalog to compiles	use-fuzzytfsalso include fuzzy translationst
statisticss#print statistics about translationscCsCd|_d|_d|_d|_d|_t|_t|_dS(Ntmessages(	tdomaintNonet	directoryt
input_filetoutput_filetlocaletFalset	use_fuzzyR#(tself((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pytinitialize_optionsVs						cCsJ|jr#|jr#tdn|jrF|jrFtdndS(Ns<you must specify either the input file or the base directory(R(R'RR)(R-((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pytfinalize_options_sc	Cs@g}g}|js!|jr|j|jtjj|j|jd|jdf|jtjj|j|jd|jdqxtj|jD]}tjj|j|d|jd}tjj	|r|j||f|jtjj|j|d|jdqqWnd|j|j|jf|j
rV|j|j
n/|jtjj|j|jd|jd|stdnxt|D]\}\}}||}t
|d}zt||}Wd|jX|jr~d}	x.t|dD]}
|
jr|	d7}	qqWd}t|r\|	dt|}ntjd	|	t|||n|jr|jrtjd
|qnxD|jD]6\}
}x'|D]}
tjd||
j|
qWqWtjd||t
|d
}zt||d|jWd|jXqWdS(NtLC_MESSAGESs.pos.mosno message catalogs foundtriiids)%d of %d messages (%d%%) translated in %rs'catalog %r is marked as fuzzy, skippingserror: %s:%d: %sscompiling catalog %r to %rtwbR,(R(R*tappendtostpathtjoinR'R%tlistdirtexistsR)Rt	enumeratetopenRtcloseR#tlisttstringtlenRtinfotfuzzyR,twarntcheckterrortlinenoR(R-tpo_filestmo_filesR*tpo_filetidxtmo_filetinfiletcatalogt
translatedtmessaget
percentageterrorsRCtoutfile((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pytrungsn			
			
(sdomain=Rs&domain of PO file (default 'messages')(s
directory=Rs.path to base directory containing the catalogs(sinput-file=Rsname of the input file(soutput-file=R sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')(slocale=R!s locale of the catalog to compile(s	use-fuzzyR"salso include fuzzy translationsN(s
statisticsNs#print statistics about translations(
t__name__t
__module__t__doc__tdescriptionR&tuser_optionstboolean_optionsR.R/RQ(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR/s(				cBseZdZdZd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gZddddddd#gZd'Zd(Zd)Z	d*Z
RS(<sjMessage extraction command for use in ``setup.py`` scripts.

    If correctly installed, this command is available to Setuptools-using
    setup scripts automatically. For projects using plain old ``distutils``,
    the command needs to be registered explicitly in ``setup.py``::

        from babel.messages.frontend import extract_messages

        setup(
            ...
            cmdclass = {'extract_messages': extract_messages}
        )

    :see: `Integrating new distutils commands <http://docs.python.org/dist/node32.html>`_
    :see: `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
    s1extract localizable strings from the project codescharset=s!charset to use in the output files	keywords=tksHspace-separated list of keywords to look for in addition to the defaultssno-default-keywordss#do not include the default keywordss
mapping-file=tFs&path to the mapping configuration filesno-locations>do not include location comments with filename and line numbersomit-headers'do not include msgid "" entry in headersoutput-file=R sname of the output fileswidth=tws"set output line width (default 76)sno-wrapsVdo not break long message lines, longer than the output line width, into several linesssort-outputs&generate sorted output (default False)ssort-by-files,sort output by file location (default False)smsgid-bugs-address=sset report address for msgidscopyright-holder=sset copyright holder in outputs
add-comments=tcsuplace comment block with TAG (or those preceding keyword lines) in output file. Seperate multiple TAGs with commas(,)sstrip-commentss)strip the comment TAGs from the comments.sinput-dirs=s/directories that should be scanned for messagescCsd|_d|_tj|_t|_d|_t|_	t|_
d|_d|_d|_
t|_t|_t|_d|_d|_d|_g|_t|_dS(Nsutf-8t(tcharsettkeywordsRtcopyt	_keywordsR+tno_default_keywordsR&tmapping_filetno_locationtomit_headerR)t
input_dirstwidthtno_wraptsort_outputtsort_by_filetmsgid_bugs_addresstcopyright_holdertadd_commentst
_add_commentststrip_comments(R-((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR.s$																c
Csr|jr"|jr"tdn|jr7i|_n|jrb|jjt|jjn|jsztdn|jr|j	rtdn|jr|j	rd|_	n$|j	dk	rt|j	|_	n|jr|j
rtdn|jsMtjg|jjD]}|jddd^qj|_n|jrn|jjd	|_ndS(
Ns=you must specify new keywords if you disable the default onessno output file specifieds0'--no-wrap' and '--width' are mutually exclusiveiLs;'--sort-output' and '--sort-by-file' are mutually exclusivet.iit,(RaR^RR`tupdatetparse_keywordstsplitR)RgRfR&tintRhRiRetdicttfromkeystdistributiontpackagestkeysRlRm(R-RX((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR/s*		"			;	c

s|j}t|jd}zYtd|jjd|jjd|jd|jd|j	}x|j
D]\\}}fd}t||d|jd	|j
d
|d|j}x]|D]U\}}	}
}tjjtjj|}|j|
d||	fgd|qWqpWtjd
|jt||d|jd|jd|jd|jd|jWd|jXdS(NRZtprojecttversionRjRkR]cs|dkrdStjjtjj|}d}|r|ddjg|jD]\}}d||f^qS}ntjd||dS(NtignoreR\s (%s)s, s%s="%s"sextracting messages from %s%s(R4R5tnormpathR6titemsRR?(tfilenametmethodtoptionstfilepathtoptstrRXtv(tdirname(s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pytcallback)s!3R^tcomment_tagsRtstrip_comment_tagst
auto_commentsswriting PO template file to %sRfRcRdRhRi(t
_get_mappingsR:R)R
Rwtget_nametget_versionRjRkR]R~RR`RmRnR4R5R}R6taddR&RR?RRfRcRdRhRiR;(
R-tmappingsRPRKt
method_maptoptions_mapRt	extractedRRDRMtcommentsR((Rs;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRQs4		
		!			cCsYi}|jrlt|jd}z:t|\}}x!|jD]}||f||<q@WWd|jXnt|jddr1|jj}x|j	D]\}}t
|trtt|\}}nJgi}}x:|D]2\}}	}
|j
||	f|
pi||<qW||f||<qWn$x!|jD]}tif||<q;W|S(NtUtmessage_extractors(RbR:t
parse_mappingReR;tgetattrRwR&RR~t
isinstancet
basestringRR3R(R-RtfileobjRRRRtmappingtpatternRR((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRGs*	
N(scharset=Ns!charset to use in the output file(s	keywords=RXsHspace-separated list of keywords to look for in addition to the defaults(sno-default-keywordsNs#do not include the default keywords(s
mapping-file=RYs&path to the mapping configuration file(sno-locationNs>do not include location comments with filename and line number(somit-headerNs'do not include msgid "" entry in header(soutput-file=R sname of the output file(swidth=RZs"set output line width (default 76)(sno-wrapNsVdo not break long message lines, longer than the output line width, into several lines(ssort-outputNs&generate sorted output (default False)(ssort-by-fileNs,sort output by file location (default False)(smsgid-bugs-address=Nsset report address for msgid(scopyright-holder=Nsset copyright holder in output(s
add-comments=R[suplace comment block with TAG (or those preceding keyword lines) in output file. Seperate multiple TAGs with commas(,)(sstrip-commentsNs)strip the comment TAGs from the comments.(sinput-dirs=Ns/directories that should be scanned for messages(RRRSRTRUR&RVRWR.R/RQR(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRsP				)cCs4|dkstt|ts0tdndS(sValidate the ``message_extractors`` keyword argument to ``setup()``.

    :param dist: the distutils/setuptools ``Distribution`` object
    :param name: the name of the keyword argument (should always be
                 "message_extractors")
    :param value: the value of the keyword argument
    :raise `DistutilsSetupError`: if the value is not valid
    :see: `Adding setup() arguments
           <http://peak.telecommunity.com/DevCenter/setuptools#adding-setup-arguments>`_
    RsDthe value of the "message_extractors" parameter must be a dictionaryN(tAssertionErrorRRuR(tdisttnametvalue((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRfscBsDeZdZdZdddddgZdZdZdZRS(sfNew catalog initialization command for use in ``setup.py`` scripts.

    If correctly installed, this command is available to Setuptools-using
    setup scripts automatically. For projects using plain old ``distutils``,
    the command needs to be registered explicitly in ``setup.py``::

        from babel.messages.frontend import init_catalog

        setup(
            ...
            cmdclass = {'init_catalog': init_catalog}
        )

    :see: `Integrating new distutils commands <http://docs.python.org/dist/node32.html>`_
    :see: `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
    s(create a new catalog based on a POT filesdomain=Rs&domain of PO file (default 'messages')sinput-file=Rsname of the input filesoutput-dir=Rspath to output directorysoutput-file=R sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')slocale=R!s$locale for the new localized catalogcCs1d|_d|_d|_d|_d|_dS(NR$(R&t
output_dirR)R(R*R%(R-((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR.s
				cCs	|jstdn|js0tdnytj|j|_Wntk
rj}t|nX|jr|jrtdn|jst	j
j|j|jd|jd|_nt	j
j
t	j
j|jst	jt	j
j|jndS(Nsyou must specify the input files-you must provide a locale for the new catalogs%you must specify the output directoryR0s.po(R(RR*R
tparset_localeRR)RR4R5R6R%R8Rtmakedirs(R-te((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR/s			!cCstjd|j|jt|jd}zt|d|j}Wd|jX|j|_t	|_
t|jd}zt||Wd|jXdS(Nscreating catalog %r based on %rR1R*RZ(RR?R)R(R:RR*R;RR+R@R(R-RJRKRP((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRQs
	(sdomain=Rs&domain of PO file (default 'messages')(sinput-file=Rsname of the input file(soutput-dir=Rspath to output directory(soutput-file=R sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')(slocale=R!s$locale for the new localized catalog(RRRSRTRURVR.R/RQ(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRws			c
Bs\eZdZdZdddd d!d#d$d%gZdddgZdZdZdZ	RS(&syCatalog merging command for use in ``setup.py`` scripts.

    If correctly installed, this command is available to Setuptools-using
    setup scripts automatically. For projects using plain old ``distutils``,
    the command needs to be registered explicitly in ``setup.py``::

        from babel.messages.frontend import update_catalog

        setup(
            ...
            cmdclass = {'update_catalog': update_catalog}
        )

    :since: version 0.9
    :see: `Integrating new distutils commands <http://docs.python.org/dist/node32.html>`_
    :see: `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
    s'update message catalogs from a POT filesdomain=Rs&domain of PO file (default 'messages')sinput-file=Rsname of the input filesoutput-dir=Rs.path to base directory containing the catalogssoutput-file=R sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')slocale=R!s locale of the catalog to compilesignore-obsolete=s1whether to omit obsolete messages from the outputsno-fuzzy-matchingtNsdo not use fuzzy matchingtpreviouss+keep previous msgids of translated messagestignore_obsoletetno_fuzzy_matchingcCsLd|_d|_d|_d|_d|_t|_t|_t|_	dS(NR$(
R%R&R(RR)R*R+RRR(R-((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR.s							cCs|jstdn|jr;|jr;tdn|jr]|jr]tdn|jr{|jr{t|_ndS(Nsyou must specify the input files-you must specify the output file or directorysyou must specify the locale(R(RR)RR*RRR+(R-((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyR/s	cCsg}|js|jrS|j|jtjj|j|jd|jdfqxtj|jD]S}tjj|j|d|jd}tjj	|rf|j||fqfqfWn|j|j|jf|j}|stjj
tjj|jd}nt
|jd}zt|}Wd|jX|sUtdnx]|D]U\}}tjd||jt
|d}zt|d|d|}Wd|jX|j||jtjjtjj|tjtjj|}	t
|	d	}
y5z#t|
|d
|jd|jWd|
jXWntj|	nXytj|	|Wq\tk
rtj|tj|	|tj|	q\Xq\WdS(NR0s.poiRsno message catalogs foundsupdating catalog %r based on %rR*R%RZRtinclude_previous( R)R*R3R4R5R6RR%R7R8tsplitexttbasenameR(R:RR;RRR?RqRRttempfilet
gettempprefixRRRtremovetrenametOSErrortshutilR_(R-RER*RGR%RJttemplateRRKttmpnamettmpfile((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRQsd			(
		


(sdomain=Rs&domain of PO file (default 'messages')(sinput-file=Rsname of the input file(soutput-dir=Rs.path to base directory containing the catalogs(soutput-file=R sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')(slocale=R!s locale of the catalog to compileN(signore-obsolete=Ns1whether to omit obsolete messages from the output(sno-fuzzy-matchingRsdo not use fuzzy matching(spreviousNs+keep previous msgids of translated messages(
RRRSRTRUR&RVRWR.R/RQ(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs,		
	cBseZdZdZdeZidd6dd6dd6d	d
6ZejdZ	dZ
d
ZdZdZ
dZdZRS(sCommand-line interface.

    This class provides a simple command-line interface to the message
    extraction and PO file generation functionality.
    s%%prog %s [options] %ss	%%prog %ss$compile message catalogs to MO filestcompiles:extract messages from source files and generate a POT filetextracts+create new message catalogs from a POT filetinits0update existing message catalogs from a POT fileRqcCstd|jdd|j|_|jj|j|j_|jjddddd	d
d|jjdd
dddddtj	d
d|jjdddddddtj
d
d|jjdtdtj
|jj|d\}}|j|j|jrtj}tg|D]}t|^q#}|jd|d}xV|D]N}tj|}|||jf}	|	jtjjptpddGHq]WdS|s|jjdn|d}
|
|j kr|jjd|
nt!||
|dS(s{Main entry point of the command-line interface.

        :param argv: list of arguments passed on the command-line
        tusagetcommands[args]R{s--list-localestdesttlist_localestactiont
store_truethelps print all known locales and exits-vs	--verbosetstore_consttlogleveltconstsprint as much as possibles-qs--quietsprint as little as possibleiu
%%-%ds %%stasciitreplaceisQno valid command or option passed. Try the -h/--help option for more information.sunknown command "%s"(scommands[args]("RRR{tparsertdisable_interspersed_argst_helpt
print_helpt
add_optiontloggingtDEBUGtERRORtset_defaultsR+tINFOt
parse_argst_configure_loggingRRRR<tmaxR>tsortR
Rtenglish_nametencodetsyststdouttencodingRRCtcommandsR(R-targvRtargstidentifierst
identifiertlongesttformatR*toutputtcmdname((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRQ^sD
	%

	
cCstjd|_|jj||jjrA|jjd}ntj}|jj||j|tjd}|j|dS(Ntbabelis%(message)s(	Rt	getLoggerRtsetLevelthandlerst
StreamHandlert
addHandlert	FormattertsetFormatter(R-Rthandlert	formatter((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs
cCs|jjGHdGHtg|jD]}t|^q }dtd|d}|jj}|jx#|D]\}}|||fGHqrWdS(Ns	commands:s  %%-%ds %%sii(Rtformat_helpRRR>R~R(R-RRRRRRU((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs(
c	Cstd|jd9d|jd}|jddddd	d
|jdddd
ddd	d|jddddddd	d|jddddddd	d|jddddddd	d|jdd dd!d"d#d	d$|jd%dd&d"d#d	d'|jdd(d!td)td&t|j|\}}g}g}|jsy|jsm|j	d*n|j
r|j|j
tj
j|j|j
d+|jd,f|jtj
j|j|j
d+|jd-qxtj|jD]}tj
j|j|d+|jd,}tj
j|r|j||f|jtj
j|j|d+|jd-qqWn}|j|j
|jf|jr|j|jnH|js|j	d*n|jtj
j|j|j
d+|jd-|s|j	d.nxt|D]\}	\}}||	}
t|d/}zt||}Wd0|jX|jrd1}
x.t|d2D]}|jr|
d27}
qqWd1}t|r|
d3t|}n|jjd4|
t|||n|jr|jr|jjd5|qnxG|j D]9\}}x*|D]"}|jj	d6||j!|q?Wq,W|jjd7||
t|
d8}zt"||d!|jWd0|jXqWd0S(:sSubcommand for compiling a message catalog to a MO file.

        :param argv: the command arguments
        :since: version 0.9
        RRR\RUs--domains-DRR%Rs.domain of MO and PO files (default '%default')s--directorys-dR'tmetavartDIRsbase directory of catalog filess--locales-lR*tLOCALEslocale of the catalogs--input-files-iR(tFILEsname of the input files
--output-files-oR)sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.mo')s--use-fuzzys-fR,RRs2also include fuzzy translations (default %default)s--statisticsR#s#print statistics about translationsR$tcompile_alls<you must specify either the input file or the base directoryR0s.pos.mosno message catalogs foundR1Niiids)%d of %d messages (%d%%) translated in %rs'catalog %r is marked as fuzzy, skippingserror: %s:%d: %sscompiling catalog %r to %rR2(scompileR\(#RRRRRR+RR(R'RCR*R3R4R5R6R%R7R8R)R9R:RR;R#R<R=R>RR?R@R,RARBRDR(R-RRRRRERFR*RGRHRIRJRKRLRMRNRORCRP((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs


						
		
csctdjdWdjd}|jddddd	|jd
dddd
ddd|jdddd
ddd|jdddddd|jdddd
ddd|jdddd
ddd|jdddd dd!|jd"d#dd$d%d&dd'|jd(dd)d
ddd*|jd+dd,d
ddd-|jd.dd/d
ddd0|jd1dd2d3d4dd5|jd6dd7dd8|jd9dd:dd;|jd<dd=dd>|jd?d@ddAd3dBd
dddC|jdDdEddFd
dddG|jddHdgdtdtdtd$dNd)td,td/tdAgdFt|j|\}}|s|jdIn|j	dXkrt
|j	dK}n	tj}t
j}|jr|js|jdLni}n|jr#|jt|jn|jret
|jdM}zt|\}}	WdN|jXnt}i}	|jr|jr|jdOn |jr|jrdP|_n|jr|jr|jdQnzptd:|jd=|jd2|jd7|jd|j }
x|D]t!j"j#sA|jdRnfdS}t$||	||j%dT|dF|j&}x]|D]U\}
}}}t!j"j't!j"j(|
}|
j)|dN||fgdU|qWqW|j	dYkr
j*j+dV|j	nt,||
d$|jd|j-d|j.d,|jd/|jWdN|j	r^|jnXdNS(ZsSubcommand for extracting messages from source files and generating
        a POT file.

        :param argv: the command arguments
        RRsdir1 <dir2> ...RUs	--charsetRR]Rs1charset to use in the output (default "%default")s-ks	--keywordR^RR3shkeywords to look for in addition to the defaults. You can specify multiple -k flags on the command line.s--no-default-keywordsRaRs#do not include the default keywordss	--mappings-FRbs#path to the extraction mapping files
--no-locationRcs>do not include location comments with filename and line numbers
--omit-headerRds'do not include msgid "" entry in headers-os--outputRspath to the output POT files-ws--widthRfttypeRts"set output line width (default 76)s	--no-wrapRgsVdo not break long message lines, longer than the output line width, into several liness
--sort-outputRhs&generate sorted output (default False)s--sort-by-fileRis,sort output by file location (default False)s--msgid-bugs-addressRjRs
EMAIL@ADDRESSsset report address for msgids--copyright-holderRksset copyright holder in outputs	--projectRzsset project name in outputs	--versionR{sset project version in outputs--add-commentss-cRtTAGsiplace comment block with TAG (or those preceding keyword lines) in output file. One TAG per argument calls--strip-comment-tagss-sRs)Strip the comment tags from the comments.sutf-8sincorrect number of argumentst-RZs=you must specify new keywords if you disable the default onesRNs1'--no-wrap' and '--width' are mutually exclusive.iLs;'--sort-output' and '--sort-by-file' are mutually exclusives%r is not a directorycs|dkrdStjjtjj|}d}|r|ddjg|jD]\}}d||f^qS}njjd||dS(NR|R\s (%s)s, s%s="%s"sextracting messages from %s%s(R4R5R}R6R~RR?(RRRRRRXR(RR-(s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs!3RRswriting PO template file to %s(sextractsdir1 <dir2> ...(NR(NR(/RRRRRR+R&RRCRR:RRRR_RaR^RqRrRbRR;RRfRgRhRiR
RzR{RjRkR]R4R5tisdirRRRR}R6RRR?RRcRd(R-RRRRRPR^RRRRKRRRRDRMRR((RR-s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRs
									
!				c
	Cstd|jd)d|jd}|jddddd	d
|jdddd
ddd	d|jddddddd	d|jddddddd	d|jddddddd	d|jdd|j|\}}|js|jd nytj	|j}Wn t
k
r=}|j|nX|jsW|jd!n|jr{|j
r{|jd"n|jstjj|j
|jd#|jd$|_ntjjtjj|jstjtjj|jnt|jd%}zt|d|j}Wd&|jX||_tjt|_|jjd'|j|jt|jd(}	zt|	|Wd&|	jXd&S(*srSubcommand for creating new message catalogs from a template.

        :param argv: the command arguments
        RRR\RUs--domains-DRR%Rs&domain of PO file (default '%default')s--input-files-iR(RRsname of the input files--output-dirs-dRRspath to output directorys
--output-files-oR)sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')s--locales-lR*Rs$locale for the new localized catalogR$s-you must provide a locale for the new catalogsyou must specify the input files-you must specify the output file or directoryR0s.poR1Nscreating catalog %r based on %rRZ(sinitR\(RRRRRRR*RCR
RRR(R)RR4R5R6R%R8RRR:RR;RtnowRt
revision_dateRR?R(
R-RRRRR*RRJRKRP((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRsV

				!	
cCstd|jd8d|jd}|jddddd	d
|jdddd
ddd	d|jddddddd	d|jddddddd	d|jddddddd	d|jddd d!d"d	d#|jd$d%dd&d!d"d	d'|jd(dd)d!d"d	d*|jdd+d td&td)t|j|\}}|jsw|jd,n|j	r|j
r|jd-n|j	r|jr|jd.n|jr|j
rt|_
ng}|j	s|jr/|j|jtjj|j
|jd/|jd0fqxtj|j
D]S}tjj|j
|d/|jd0}tjj|rB|j||fqBqBWn|j|j|j	f|j}|stjjtjj|jd1}nt|jd2}	zt|	}
Wd3|	jX|s2|jd4nx`|D]X\}}|jjd5||jt|d2}	zt|	d|d|}Wd3|	jX|j|
|jtjjtjj|tjtjj|}
t|
d6}y5z#t ||d |j!d7|j
Wd3|jXWntj"|
nXytj#|
|Wq9t$k
rtj"|t%j&|
|tj"|
q9Xq9Wd3S(9sSubcommand for updating existing message catalogs from a template.

        :param argv: the command arguments
        :since: version 0.9
        RRqR\RUs--domains-DRR%Rs&domain of PO file (default '%default')s--input-files-iR(RRsname of the input files--output-dirs-dRRspath to output directorys
--output-files-oR)sQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po')s--locales-lR*Rs"locale of the translations catalogs--ignore-obsoleteRRRsAdo not include obsolete messages in the output (default %default)s--no-fuzzy-matchings-NRs,do not use fuzzy matching (default %default)s
--previousRs>keep previous msgids of translated messages (default %default)R$syou must specify the input files-you must specify the output file or directorysyou must specify the localeR0s.poiRNsno message catalogs foundsupdating catalog %r based on %rRZR(supdateR\('RRRRRR+RR(RCR)RR*RRR3R4R5R6R%R7R8RRR:RR;RR?RqRRRRRRRRRR_(R-RRRRRER*RGR%RJRRRKRR((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRqs


					(
		


(RRRSRTRtVERSIONR{RRRRQRRRRRRq(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRNs

.		
	k		@cCstjtjS(N(RRQRR(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pytmainQscCs4i}g}i}t}t|j|_|j||x|jD]}|dkrtt|j|}qJg|jddD]}|j^q\}}	|j	|	|ft|j|||	<qJW|r*xLt
|D];\}
\}	}||kr||}n|	|f||
<qWn||fS(s]Parse an extraction method mapping from a file-like object.

    >>> buf = StringIO('''
    ... [extractors]
    ... custom = mypackage.module:myfunc
    ... 
    ... # Python source files
    ... [python: **.py]
    ...
    ... # Genshi templates
    ... [genshi: **/templates/**.html]
    ... include_attrs =
    ... [genshi: **/templates/**.txt]
    ... template_class = genshi.template:TextTemplate
    ... encoding = latin-1
    ... 
    ... # Some custom extractor
    ... [custom: **/custom/*.*]
    ... ''')

    >>> method_map, options_map = parse_mapping(buf)
    >>> len(method_map)
    4

    >>> method_map[0]
    ('**.py', 'python')
    >>> options_map['**.py']
    {}
    >>> method_map[1]
    ('**/templates/**.html', 'genshi')
    >>> options_map['**/templates/**.html']['include_attrs']
    ''
    >>> method_map[2]
    ('**/templates/**.txt', 'genshi')
    >>> options_map['**/templates/**.txt']['template_class']
    'genshi.template:TextTemplate'
    >>> options_map['**/templates/**.txt']['encoding']
    'latin-1'

    >>> method_map[3]
    ('**/custom/*.*', 'mypackage.module:myfunc')
    >>> options_map['**/custom/*.*']
    {}

    :param fileobj: a readable file-like object containing the configuration
                    text to parse
    :return: a `(method_map, options_map)` tuple
    :rtype: `tuple`
    :see: `extract_from_directory`
    t
extractorst:i(RRt	_sectionstreadfptsectionsRuR~RststripR3R9(RRRRRRtsectiontpartRRRH((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRTs$3	1
cCsi}x|D]}d|kr7|jd\}}n
|d}}||kr
|rtg|jdD]}t|^qi}n|||<q
q
W|S(s)Parse keywords specifications from the given list of strings.

    >>> kw = parse_keywords(['_', 'dgettext:2', 'dngettext:2,3']).items()
    >>> kw.sort()
    >>> for keyword, indices in kw:
    ...     print (keyword, indices)
    ('_', None)
    ('dgettext', (2,))
    ('dngettext', (2, 3))
    RRpN(RsR&ttupleRt(tstringsR^R=tfuncnametindicestx((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyRrs

1t__main__(;RTtConfigParserRRt	distutilsRt
distutils.cmdRtdistutils.errorsRRR*RRtoptparseRR4treRRRRRR	RR
Rt
babel.coreRtbabel.messages.catalogR
tbabel.messages.extractRRRtbabel.messages.mofileRtbabel.messages.pofileRRtbabel.messages.pluralsRt
babel.utilRRt__all__t
__docformat__RRRRRtobjectRRR&RRrRR(((s;/usr/lib/python2.7/site-packages/babel/messages/frontend.pyt<module>sN		S	J
Back to Directory File Manager