5621: start an alternative tool for translation stuff

svn: r19067
This commit is contained in:
Jérôme Rapinat 2012-03-15 17:11:31 +00:00
parent f2ad220878
commit c094b007e0
2 changed files with 933 additions and 27 deletions

647
po/gramps Normal file
View File

@ -0,0 +1,647 @@
./../src/Assistant.py
./../src/Bookmarks.py
./../src/config.py
./../src/const.py
./../src/DateEdit.py
./../src/DisplayState.py
./../src/ExportAssistant.py
./../src/ExportOptions.py
./../src/gramps.py
./../src/LdsUtils.py
./../src/PlaceUtils.py
./../src/QuestionDialog.py
./../src/QuickReports.py
./../src/Relationship.py
./../src/Reorder.py
./../src/ScratchPad.py
./../src/Spell.py
./../src/TipOfDay.py
./../src/ToolTips.py
./../src/TransUtils.py
./../src/Utils.py
./../src/UndoHistory.py
./../src/cli/arghandler.py
./../src/cli/argparser.py
./../src/cli/clidbman.py
./../src/cli/grampscli.py
./../src/cli/plug/__init__.py
./../src/gen/db/base.py
./../src/gen/db/exceptions.py
./../src/gen/db/undoredo.py
./../src/gen/display/name.py
./../src/gen/lib/attrtype.py
./../src/gen/lib/childreftype.py
./../src/gen/lib/date.py
./../src/gen/lib/eventroletype.py
./../src/gen/lib/eventtype.py
./../src/gen/lib/familyreltype.py
./../src/gen/lib/grampstype.py
./../src/gen/lib/ldsord.py
./../src/gen/lib/markertype.py
./../src/gen/lib/nametype.py
./../src/gen/lib/nameorigintype.py
./../src/gen/lib/notetype.py
./../src/gen/lib/person.py
./../src/gen/lib/repotype.py
./../src/gen/lib/srcmediatype.py
./../src/gen/lib/surnamebase.py
./../src/gen/lib/urltype.py
./../src/gen/mime/_gnomemime.py
./../src/gen/mime/_pythonmime.py
./../src/gen/plug/_gramplet.py
./../src/gen/plug/_manager.py
./../src/gen/plug/_pluginreg.py
./../src/gen/plug/docbackend/docbackend.py
./../src/gen/plug/utils.py
./../src/gen/plug/docgen/graphdoc.py
./../src/gen/plug/report/_constants.py
./../src/gen/plug/report/_paper.py
./../src/gen/plug/report/endnotes.py
./../src/gen/plug/report/utils.py
./../src/gen/proxy/private.py
./../src/gui/aboutdialog.py
./../src/gui/columnorder.py
./../src/gui/configure.py
./../src/gui/dbloader.py
./../src/gui/dbman.py
./../src/gui/filtereditor.py
./../src/gui/grampsbar.py
./../src/gui/grampsgui.py
./../src/gui/makefilter.py
./../src/gui/utils.py
./../src/gui/viewmanager.py
./../src/gui/editors/addmedia.py
./../src/gui/editors/objectentries.py
./../src/gui/editors/editaddress.py
./../src/gui/editors/editattribute.py
./../src/gui/editors/editchildref.py
./../src/gui/editors/editcitation.py
./../src/gui/editors/editevent.py
./../src/gui/editors/editeventref.py
./../src/gui/editors/editfamily.py
./../src/gui/editors/editldsord.py
./../src/gui/editors/editlocation.py
./../src/gui/editors/editlink.py
./../src/gui/editors/editmedia.py
./../src/gui/editors/editmediaref.py
./../src/gui/editors/editname.py
./../src/gui/editors/editnote.py
./../src/gui/editors/editperson.py
./../src/gui/editors/editpersonref.py
./../src/gui/editors/editplace.py
./../src/gui/editors/editprimary.py
./../src/gui/editors/editreporef.py
./../src/gui/editors/editrepository.py
./../src/gui/editors/editsource.py
./../src/gui/editors/editurl.py
./../src/gui/editors/displaytabs/addrembedlist.py
./../src/gui/editors/displaytabs/attrembedlist.py
./../src/gui/editors/displaytabs/backreflist.py
./../src/gui/editors/displaytabs/backrefmodel.py
./../src/gui/editors/displaytabs/buttontab.py
./../src/gui/editors/displaytabs/citationembedlist.py
./../src/gui/editors/displaytabs/dataembedlist.py
./../src/gui/editors/displaytabs/embeddedlist.py
./../src/gui/editors/displaytabs/eventembedlist.py
./../src/gui/editors/displaytabs/eventrefmodel.py
./../src/gui/editors/displaytabs/familyldsembedlist.py
./../src/gui/editors/displaytabs/gallerytab.py
./../src/gui/editors/displaytabs/ldsembedlist.py
./../src/gui/editors/displaytabs/locationembedlist.py
./../src/gui/editors/displaytabs/nameembedlist.py
./../src/gui/editors/displaytabs/namemodel.py
./../src/gui/editors/displaytabs/notetab.py
./../src/gui/editors/displaytabs/personeventembedlist.py
./../src/gui/editors/displaytabs/personrefembedlist.py
./../src/gui/editors/displaytabs/repoembedlist.py
./../src/gui/editors/displaytabs/surnametab.py
./../src/gui/editors/displaytabs/webembedlist.py
./../src/gui/plug/_dialogs.py
./../src/gui/plug/_guioptions.py
./../src/gui/plug/_windows.py
./../src/gui/plug/report/_docreportdialog.py
./../src/gui/plug/report/_graphvizreportdialog.py
./../src/gui/plug/report/_papermenu.py
./../src/gui/plug/report/_reportdialog.py
./../src/gui/plug/report/_stylecombobox.py
./../src/gui/plug/report/_styleeditor.py
./../src/gui/plug/tool.py
./../src/gui/selectors/selectcitation.py
./../src/gui/selectors/selectevent.py
./../src/gui/selectors/selectfamily.py
./../src/gui/selectors/selectnote.py
./../src/gui/selectors/selectobject.py
./../src/gui/selectors/selectperson.py
./../src/gui/selectors/selectplace.py
./../src/gui/selectors/selectrepository.py
./../src/gui/selectors/selectsource.py
./../src/gui/views/listview.py
./../src/gui/views/navigationview.py
./../src/gui/views/pageview.py
./../src/gui/views/tags.py
./../src/gui/views/treemodels/citationtreemodel.py
./../src/gui/views/treemodels/mediamodel.py
./../src/gui/views/treemodels/peoplemodel.py
./../src/gui/views/treemodels/placemodel.py
./../src/gui/views/treemodels/treebasemodel.py
./../src/gui/widgets/buttons.py
./../src/gui/widgets/expandcollapsearrow.py
./../src/gui/widgets/grampletpane.py
./../src/gui/widgets/labels.py
./../src/gui/widgets/monitoredwidgets.py
./../src/gui/widgets/photo.py
./../src/gui/widgets/progressdialog.py
./../src/gui/widgets/styledtexteditor.py
./../src/gui/widgets/tageditor.py
./../src/gui/widgets/undoableentry.py
./../src/gui/widgets/validatedmaskedentry.py
./../src/Simple/_SimpleTable.py
./../src/Merge/mergecitation.py
./../src/Merge/mergeevent.py
./../src/Merge/mergefamily.py
./../src/Merge/mergemedia.py
./../src/Merge/mergenote.py
./../src/Merge/mergeperson.py
./../src/Merge/mergeplace.py
./../src/Merge/mergerepository.py
./../src/Merge/mergesource.py
./../src/docgen/ODSTab.py
./../src/docgen/TextBufDoc.py
./../src/GrampsLogger/_ErrorReportAssistant.py
./../src/GrampsLogger/_ErrorView.py
./../src/plugins/BookReport.py
./../src/plugins/bookreport.gpr.py
./../src/plugins/records.gpr.py
./../src/plugins/Records.py
./../src/plugins/docgen/AsciiDoc.py
./../src/plugins/docgen/docgen.gpr.py
./../src/plugins/docgen/GtkPrint.py
./../src/plugins/docgen/HtmlDoc.py
./../src/plugins/docgen/LaTeXDoc.py
./../src/plugins/docgen/ODFDoc.py
./../src/plugins/docgen/PSDrawDoc.py
./../src/plugins/docgen/RTFDoc.py
./../src/plugins/docgen/SvgDrawDoc.py
./../src/plugins/drawreport/AncestorTree.py
./../src/plugins/drawreport/Calendar.py
./../src/plugins/drawreport/DescendTree.py
./../src/plugins/drawreport/drawplugins.gpr.py
./../src/plugins/drawreport/FanChart.py
./../src/plugins/drawreport/StatisticsChart.py
./../src/plugins/drawreport/TimeLine.py
./../src/plugins/export/export.gpr.py
./../src/plugins/export/ExportCsv.py
./../src/plugins/export/ExportFtree.py
./../src/plugins/export/ExportGedcom.py
./../src/plugins/export/ExportGeneWeb.py
./../src/plugins/export/ExportPkg.py
./../src/plugins/export/ExportVCalendar.py
./../src/plugins/export/ExportVCard.py
./../src/plugins/export/ExportXml.py
./../src/plugins/gramplet/AgeOnDateGramplet.py
./../src/plugins/gramplet/AgeStats.py
./../src/plugins/gramplet/Attributes.py
./../src/plugins/gramplet/AttributesGramplet.py
./../src/plugins/gramplet/Backlinks.py
./../src/plugins/gramplet/bottombar.gpr.py
./../src/plugins/gramplet/CalendarGramplet.py
./../src/plugins/gramplet/Children.py
./../src/plugins/gramplet/Citations.py
./../src/plugins/gramplet/DescendGramplet.py
./../src/plugins/gramplet/EditExifMetadata.py
./../src/plugins/gramplet/Events.py
./../src/plugins/gramplet/FanChartGramplet.py
./../src/plugins/gramplet/FaqGramplet.py
./../src/plugins/gramplet/GivenNameGramplet.py
./../src/plugins/gramplet/gramplet.gpr.py
./../src/plugins/gramplet/Notes.py
./../src/plugins/gramplet/PedigreeGramplet.py
./../src/plugins/gramplet/PersonDetails.py
./../src/plugins/gramplet/PersonResidence.py
./../src/plugins/gramplet/PlaceDetails.py
./../src/plugins/gramplet/QuickViewGramplet.py
./../src/plugins/gramplet/RelativeGramplet.py
./../src/plugins/gramplet/RepositoryDetails.py
./../src/plugins/gramplet/SessionLogGramplet.py
./../src/plugins/gramplet/StatsGramplet.py
./../src/plugins/gramplet/SurnameCloudGramplet.py
./../src/plugins/gramplet/ToDoGramplet.py
./../src/plugins/gramplet/TopSurnamesGramplet.py
./../src/plugins/gramplet/WelcomeGramplet.py
./../src/plugins/gramplet/WhatsNext.py
./../src/plugins/graph/graphplugins.gpr.py
./../src/plugins/graph/GVFamilyLines.py
./../src/plugins/graph/GVHourGlass.py
./../src/plugins/graph/GVRelGraph.py
./../src/plugins/import/import.gpr.py
./../src/plugins/import/ImportCsv.py
./../src/plugins/import/ImportGedcom.py
./../src/plugins/import/ImportGeneWeb.py
./../src/plugins/import/ImportGrdb.py
./../src/plugins/import/ImportProGen.py
./../src/plugins/import/ImportVCard.py
./../src/plugins/import/ImportGpkg.py
./../src/plugins/import/ImportXml.py
./../src/plugins/lib/libcairodoc.py
./../src/plugins/lib/libgedcom.py
./../src/plugins/lib/libgrdb.py
./../src/plugins/lib/libholiday.py
./../src/plugins/lib/libhtmlconst.py
./../src/plugins/lib/libmetadata.py
./../src/plugins/lib/libnarrate.py
./../src/plugins/lib/libpersonview.py
./../src/plugins/lib/libplaceview.py
./../src/plugins/lib/libplugins.gpr.py
./../src/plugins/lib/libtranslate.py
./../src/plugins/lib/libtreebase.py
./../src/plugins/lib/maps/constants.py
./../src/plugins/lib/maps/geography.py
./../src/plugins/lib/maps/grampsmaps.py
./../src/plugins/mapservices/eniroswedenmap.py
./../src/plugins/mapservices/googlemap.py
./../src/plugins/mapservices/mapservice.gpr.py
./../src/plugins/mapservices/openstreetmap.py
./../src/plugins/quickview/AgeOnDate.py
./../src/plugins/quickview/all_events.py
./../src/plugins/quickview/all_relations.py
./../src/plugins/quickview/AttributeMatch.py
./../src/plugins/quickview/FilterByName.py
./../src/plugins/quickview/lineage.py
./../src/plugins/quickview/OnThisDay.py
./../src/plugins/quickview/quickview.gpr.py
./../src/plugins/quickview/References.py
./../src/plugins/quickview/LinkReferences.py
./../src/plugins/quickview/Reporef.py
./../src/plugins/quickview/SameSurnames.py
./../src/plugins/quickview/siblings.py
./../src/plugins/rel/relplugins.gpr.py
./../src/plugins/sidebar/sidebar.gpr.py
./../src/plugins/textreport/AlphabeticalIndex.py
./../src/plugins/textreport/AncestorReport.py
./../src/plugins/textreport/BirthdayReport.py
./../src/plugins/textreport/CustomBookText.py
./../src/plugins/textreport/DescendReport.py
./../src/plugins/textreport/DetAncestralReport.py
./../src/plugins/textreport/DetDescendantReport.py
./../src/plugins/textreport/EndOfLineReport.py
./../src/plugins/textreport/FamilyGroup.py
./../src/plugins/textreport/IndivComplete.py
./../src/plugins/textreport/KinshipReport.py
./../src/plugins/textreport/NumberOfAncestorsReport.py
./../src/plugins/textreport/PlaceReport.py
./../src/plugins/textreport/SimpleBookTitle.py
./../src/plugins/textreport/Summary.py
./../src/plugins/textreport/TableOfContents.py
./../src/plugins/textreport/TagReport.py
./../src/plugins/textreport/textplugins.gpr.py
./../src/plugins/tool/ChangeNames.py
./../src/plugins/tool/ChangeTypes.py
./../src/plugins/tool/Check.py
./../src/plugins/tool/Desbrowser.py
./../src/plugins/tool/Eval.py
./../src/plugins/tool/EventCmp.py
./../src/plugins/tool/EventNames.py
./../src/plugins/tool/ExtractCity.py
./../src/plugins/tool/FindDupes.py
./../src/plugins/tool/Leak.py
./../src/plugins/tool/MediaManager.py
./../src/plugins/tool/MergeCitations.py
./../src/plugins/tool/NotRelated.py
./../src/plugins/tool/OwnerEditor.py
./../src/plugins/tool/PatchNames.py
./../src/plugins/tool/Rebuild.py
./../src/plugins/tool/RebuildRefMap.py
./../src/plugins/tool/RelCalc.py
./../src/plugins/tool/RemoveUnused.py
./../src/plugins/tool/ReorderIds.py
./../src/plugins/tool/SortEvents.py
./../src/plugins/tool/SoundGen.py
./../src/plugins/tool/tools.gpr.py
./../src/plugins/tool/Verify.py
./../src/plugins/view/citationtreeview.py
./../src/plugins/view/citationlistview.py
./../src/plugins/view/eventview.py
./../src/plugins/view/familyview.py
./../src/plugins/view/fanchartview.py
./../src/plugins/view/fanchartview.gpr.py
./../src/plugins/view/geography.gpr.py
./../src/plugins/view/geoevents.py
./../src/plugins/view/geofamily.py
./../src/plugins/view/geoperson.py
./../src/plugins/view/geoplaces.py
./../src/plugins/view/grampletview.py
./../src/plugins/view/htmlrenderer.py
./../src/plugins/view/htmlrenderer.gpr.py
./../src/plugins/view/mediaview.py
./../src/plugins/view/noteview.py
./../src/plugins/view/pedigreeview.py
./../src/plugins/view/personlistview.py
./../src/plugins/view/persontreeview.py
./../src/plugins/view/placelistview.py
./../src/plugins/view/placetreeview.gpr.py
./../src/plugins/view/placetreeview.py
./../src/plugins/view/relview.py
./../src/plugins/view/repoview.py
./../src/plugins/view/sourceview.py
./../src/plugins/view/view.gpr.py
./../src/plugins/webreport/NarrativeWeb.py
./../src/plugins/webreport/WebCal.py
./../src/plugins/webreport/webplugins.gpr.py
./../src/plugins/webstuff/webstuff.gpr.py
./../src/plugins/webstuff/webstuff.py
./../src/Simple/_SimpleAccess.py
./../src/Filters/_FilterParser.py
./../src/Filters/_FilterStore.py
./../src/Filters/_SearchBar.py
./../src/Filters/Rules/_Everything.py
./../src/Filters/Rules/_HasGrampsId.py
./../src/Filters/Rules/_HasTextMatchingSubstringOf.py
./../src/Filters/Rules/_IsPrivate.py
./../src/Filters/Rules/_Rule.py
./../src/Filters/Rules/Person/_ChangedSince.py
./../src/Filters/Rules/Person/_DeepRelationshipPathBetween.py
./../src/Filters/Rules/Person/_Disconnected.py
./../src/Filters/Rules/Person/_Everyone.py
./../src/Filters/Rules/Person/_FamilyWithIncompleteEvent.py
./../src/Filters/Rules/Person/_HasAddress.py
./../src/Filters/Rules/Person/_HasAlternateName.py
./../src/Filters/Rules/Person/_HasAssociation.py
./../src/Filters/Rules/Person/_HasAttribute.py
./../src/Filters/Rules/Person/_HasBirth.py
./../src/Filters/Rules/Person/_HasCitation.py
./../src/Filters/Rules/Person/_HasCommonAncestorWithFilterMatch.py
./../src/Filters/Rules/Person/_HasCommonAncestorWith.py
./../src/Filters/Rules/Person/_HasDeath.py
./../src/Filters/Rules/Person/_HasEvent.py
./../src/Filters/Rules/Person/_HasFamilyAttribute.py
./../src/Filters/Rules/Person/_HasFamilyEvent.py
./../src/Filters/Rules/Person/_HasGallery.py
./../src/Filters/Rules/Person/_HasIdOf.py
./../src/Filters/Rules/Person/_HasLDS.py
./../src/Filters/Rules/Person/_HasNameOf.py
./../src/Filters/Rules/Person/_HasNameOriginType.py
./../src/Filters/Rules/Person/_HasNameType.py
./../src/Filters/Rules/Person/_HasNickname.py
./../src/Filters/Rules/Person/_HasNote.py
./../src/Filters/Rules/Person/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Person/_HasNoteRegexp.py
./../src/Filters/Rules/Person/_HasRelationship.py
./../src/Filters/Rules/Person/_HasSourceCount.py
./../src/Filters/Rules/Person/_HasSourceOf.py
./../src/Filters/Rules/Person/_HasTag.py
./../src/Filters/Rules/Person/_HasTextMatchingSubstringOf.py
./../src/Filters/Rules/Person/_HasUnknownGender.py
./../src/Filters/Rules/Person/_HaveAltFamilies.py
./../src/Filters/Rules/Person/_HaveChildren.py
./../src/Filters/Rules/Person/_IncompleteNames.py
./../src/Filters/Rules/Person/_IsAncestorOfFilterMatch.py
./../src/Filters/Rules/Person/_IsAncestorOf.py
./../src/Filters/Rules/Person/_IsBookmarked.py
./../src/Filters/Rules/Person/_IsChildOfFilterMatch.py
./../src/Filters/Rules/Person/_IsDefaultPerson.py
./../src/Filters/Rules/Person/_IsDescendantFamilyOf.py
./../src/Filters/Rules/Person/_IsDescendantOfFilterMatch.py
./../src/Filters/Rules/Person/_IsDescendantOf.py
./../src/Filters/Rules/Person/_IsDuplicatedAncestorOf.py
./../src/Filters/Rules/Person/_IsFemale.py
./../src/Filters/Rules/Person/_IsLessThanNthGenerationAncestorOfBookmarked.py
./../src/Filters/Rules/Person/_IsLessThanNthGenerationAncestorOfDefaultPerson.py
./../src/Filters/Rules/Person/_IsLessThanNthGenerationAncestorOf.py
./../src/Filters/Rules/Person/_IsLessThanNthGenerationDescendantOf.py
./../src/Filters/Rules/Person/_IsMale.py
./../src/Filters/Rules/Person/_IsMoreThanNthGenerationAncestorOf.py
./../src/Filters/Rules/Person/_IsMoreThanNthGenerationDescendantOf.py
./../src/Filters/Rules/Person/_IsParentOfFilterMatch.py
./../src/Filters/Rules/Person/_PeoplePublic.py
./../src/Filters/Rules/Person/_IsRelatedWith.py
./../src/Filters/Rules/Person/_IsSiblingOfFilterMatch.py
./../src/Filters/Rules/Person/_IsSpouseOfFilterMatch.py
./../src/Filters/Rules/Person/_IsWitness.py
./../src/Filters/Rules/Person/_MatchesEventFilter.py
./../src/Filters/Rules/Person/_MatchesFilter.py
./../src/Filters/Rules/Person/_MatchesSourceConfidence.py
./../src/Filters/Rules/Person/_MatchIdOf.py
./../src/Filters/Rules/Person/_MissingParent.py
./../src/Filters/Rules/Person/_MultipleMarriages.py
./../src/Filters/Rules/Person/_NeverMarried.py
./../src/Filters/Rules/Person/_NoBirthdate.py
./../src/Filters/Rules/Person/_NoDeathdate.py
./../src/Filters/Rules/Person/_PeoplePrivate.py
./../src/Filters/Rules/Person/_PersonWithIncompleteEvent.py
./../src/Filters/Rules/Person/_ProbablyAlive.py
./../src/Filters/Rules/Person/_RegExpIdOf.py
./../src/Filters/Rules/Person/_RegExpName.py
./../src/Filters/Rules/Person/_RelationshipPathBetween.py
./../src/Filters/Rules/Person/_RelationshipPathBetweenBookmarks.py
./../src/Filters/Rules/Person/_SearchName.py
./../src/Filters/Rules/Family/_AllFamilies.py
./../src/Filters/Rules/Family/_ChangedSince.py
./../src/Filters/Rules/Family/_ChildHasIdOf.py
./../src/Filters/Rules/Family/_ChildHasNameOf.py
./../src/Filters/Rules/Family/_FamilyPrivate.py
./../src/Filters/Rules/Family/_FatherHasIdOf.py
./../src/Filters/Rules/Family/_FatherHasNameOf.py
./../src/Filters/Rules/Family/_HasAttribute.py
./../src/Filters/Rules/Family/_HasCitation.py
./../src/Filters/Rules/Family/_HasEvent.py
./../src/Filters/Rules/Family/_HasGallery.py
./../src/Filters/Rules/Family/_HasIdOf.py
./../src/Filters/Rules/Family/_HasLDS.py
./../src/Filters/Rules/Family/_HasNote.py
./../src/Filters/Rules/Family/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Family/_HasNoteRegexp.py
./../src/Filters/Rules/Family/_HasReferenceCountOf.py
./../src/Filters/Rules/Family/_HasRelType.py
./../src/Filters/Rules/Family/_HasSourceCount.py
./../src/Filters/Rules/Family/_HasTag.py
./../src/Filters/Rules/Family/_IsBookmarked.py
./../src/Filters/Rules/Family/_MatchesFilter.py
./../src/Filters/Rules/Family/_MatchesSourceConfidence.py
./../src/Filters/Rules/Family/_MotherHasIdOf.py
./../src/Filters/Rules/Family/_MotherHasNameOf.py
./../src/Filters/Rules/Family/_SearchFatherName.py
./../src/Filters/Rules/Family/_SearchChildName.py
./../src/Filters/Rules/Family/_SearchMotherName.py
./../src/Filters/Rules/Family/_RegExpFatherName.py
./../src/Filters/Rules/Family/_RegExpMotherName.py
./../src/Filters/Rules/Family/_RegExpChildName.py
./../src/Filters/Rules/Family/_RegExpIdOf.py
./../src/Filters/Rules/Event/_AllEvents.py
./../src/Filters/Rules/Event/_ChangedSince.py
./../src/Filters/Rules/Event/_EventPrivate.py
./../src/Filters/Rules/Event/_HasAttribute.py
./../src/Filters/Rules/Event/_HasCitation.py
./../src/Filters/Rules/Event/_HasData.py
./../src/Filters/Rules/Event/_HasGallery.py
./../src/Filters/Rules/Event/_HasIdOf.py
./../src/Filters/Rules/Event/_HasNote.py
./../src/Filters/Rules/Event/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Event/_HasNoteRegexp.py
./../src/Filters/Rules/Event/_HasReferenceCountOf.py
./../src/Filters/Rules/Event/_HasSourceCount.py
./../src/Filters/Rules/Event/_HasType.py
./../src/Filters/Rules/Event/_MatchesFilter.py
./../src/Filters/Rules/Event/_MatchesPersonFilter.py
./../src/Filters/Rules/Event/_MatchesSourceFilter.py
./../src/Filters/Rules/Event/_MatchesSourceConfidence.py
./../src/Filters/Rules/Event/_RegExpIdOf.py
./../src/Filters/Rules/Place/_AllPlaces.py
./../src/Filters/Rules/Place/_ChangedSince.py
./../src/Filters/Rules/Place/_HasGallery.py
./../src/Filters/Rules/Place/_HasIdOf.py
./../src/Filters/Rules/Place/_HasNoLatOrLon.py
./../src/Filters/Rules/Place/_HasNote.py
./../src/Filters/Rules/Place/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Place/_HasNoteRegexp.py
./../src/Filters/Rules/Place/_HasPlace.py
./../src/Filters/Rules/Place/_HasReferenceCountOf.py
./../src/Filters/Rules/Place/_InLatLonNeighborhood.py
./../src/Filters/Rules/Place/_MatchesFilter.py
./../src/Filters/Rules/Place/_MatchesEventFilter.py
./../src/Filters/Rules/Place/_PlacePrivate.py
./../src/Filters/Rules/Place/_RegExpIdOf.py
./../src/Filters/Rules/Source/_AllSources.py
./../src/Filters/Rules/Source/_ChangedSince.py
./../src/Filters/Rules/Source/_HasGallery.py
./../src/Filters/Rules/Source/_HasIdOf.py
./../src/Filters/Rules/Source/_HasNote.py
./../src/Filters/Rules/Source/_HasNoteRegexp.py
./../src/Filters/Rules/Source/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Source/_HasReferenceCountOf.py
./../src/Filters/Rules/Source/_HasRepository.py
./../src/Filters/Rules/Source/_HasRepositoryCallNumberRef.py
./../src/Filters/Rules/Source/_MatchesFilter.py
./../src/Filters/Rules/Source/_MatchesRepositoryFilter.py
./../src/Filters/Rules/Source/_MatchesTitleSubstringOf.py
./../src/Filters/Rules/Source/_SourcePrivate.py
./../src/Filters/Rules/Source/_RegExpIdOf.py
./../src/Filters/Rules/Citation/_AllCitations.py
./../src/Filters/Rules/Citation/_ChangedSince.py
./../src/Filters/Rules/Citation/_CitationPrivate.py
./../src/Filters/Rules/Citation/_HasGallery.py
./../src/Filters/Rules/Citation/_HasIdOf.py
./../src/Filters/Rules/Citation/_HasNote.py
./../src/Filters/Rules/Citation/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Citation/_HasNoteRegexp.py
./../src/Filters/Rules/Citation/_HasReferenceCountOf.py
./../src/Filters/Rules/Citation/_HasSource.py
./../src/Filters/Rules/Citation/_MatchesFilter.py
./../src/Filters/Rules/Citation/_MatchesPageSubstringOf.py
./../src/Filters/Rules/Citation/_RegExpIdOf.py
./../src/Filters/Rules/Citation/_MatchesRepositoryFilter.py
./../src/Filters/Rules/Citation/_MatchesSourceFilter.py
./../src/Filters/Rules/MediaObject/_AllMedia.py
./../src/Filters/Rules/MediaObject/_ChangedSince.py
./../src/Filters/Rules/MediaObject/_HasAttribute.py
./../src/Filters/Rules/MediaObject/_HasIdOf.py
./../src/Filters/Rules/MediaObject/_HasMedia.py
./../src/Filters/Rules/MediaObject/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/MediaObject/_HasNoteRegexp.py
./../src/Filters/Rules/MediaObject/_HasReferenceCountOf.py
./../src/Filters/Rules/MediaObject/_HasTag.py
./../src/Filters/Rules/MediaObject/_MatchesFilter.py
./../src/Filters/Rules/MediaObject/_MediaPrivate.py
./../src/Filters/Rules/MediaObject/_RegExpIdOf.py
./../src/Filters/Rules/Repository/_AllRepos.py
./../src/Filters/Rules/Repository/_ChangedSince.py
./../src/Filters/Rules/Repository/_HasIdOf.py
./../src/Filters/Rules/Repository/_HasNoteMatchingSubstringOf.py
./../src/Filters/Rules/Repository/_HasNoteRegexp.py
./../src/Filters/Rules/Repository/_HasReferenceCountOf.py
./../src/Filters/Rules/Repository/_HasRepo.py
./../src/Filters/Rules/Repository/_MatchesFilter.py
./../src/Filters/Rules/Repository/_MatchesNameSubstringOf.py
./../src/Filters/Rules/Repository/_RegExpIdOf.py
./../src/Filters/Rules/Repository/_RepoPrivate.py
./../src/Filters/Rules/Note/_AllNotes.py
./../src/Filters/Rules/Note/_ChangedSince.py
./../src/Filters/Rules/Note/_HasIdOf.py
./../src/Filters/Rules/Note/_MatchesSubstringOf.py
./../src/Filters/Rules/Note/_MatchesRegexpOf.py
./../src/Filters/Rules/Note/_HasNote.py
./../src/Filters/Rules/Note/_HasTag.py
./../src/Filters/Rules/Note/_HasReferenceCountOf.py
./../src/Filters/Rules/Note/_MatchesFilter.py
./../src/Filters/Rules/Note/_RegExpIdOf.py
./../src/Filters/Rules/Note/_NotePrivate.py
./../src/Filters/SideBar/_CitationSidebarFilter.py
./../src/Filters/SideBar/_EventSidebarFilter.py
./../src/Filters/SideBar/_FamilySidebarFilter.py
./../src/Filters/SideBar/_PersonSidebarFilter.py
./../src/Filters/SideBar/_SidebarFilter.py
./../src/Filters/SideBar/_SourceSidebarFilter.py
./../src/Filters/SideBar/_PlaceSidebarFilter.py
./../src/Filters/SideBar/_MediaSidebarFilter.py
./../src/Filters/SideBar/_RepoSidebarFilter.py
./../src/Filters/SideBar/_NoteSidebarFilter.py
../src/plugins/docgen/gtkprint.glade
../src/glade/editperson.glade
../src/glade/grampletpane.glade
../src/glade/baseselector.glade
../src/glade/reorder.glade
../src/glade/tipofday.glade
../src/glade/displaystate.glade
../src/glade/addmedia.glade
../src/glade/questiondialog.glade
../src/glade/configure.glade
../src/glade/dateedit.glade
../src/glade/editsource.glade
../src/glade/styleeditor.glade
../src/glade/dbman.glade
../src/glade/editcitation.glade
../src/glade/editurl.glade
../src/glade/editrepository.glade
../src/glade/editreporef.glade
../src/glade/editpersonref.glade
../src/glade/editlocation.glade
../src/glade/editlink.glade
../src/glade/editfamily.glade
../src/glade/editchildref.glade
../src/glade/editattribute.glade
../src/glade/editaddress.glade
../src/glade/editmedia.glade
../src/glade/editmediaref.glade
../src/glade/editeventref.glade
../src/glade/editldsord.glade
../src/glade/editnote.glade
../src/glade/editplace.glade
../src/glade/editsourceref.glade
../src/glade/editname.glade
../src/glade/editevent.glade
../src/glade/mergecitation.glade
../src/glade/mergedata.glade
../src/glade/mergeevent.glade
../src/glade/mergefamily.glade
../src/glade/mergemedia.glade
../src/glade/mergenote.glade
../src/glade/mergeperson.glade
../src/glade/mergeplace.glade
../src/glade/mergerepository.glade
../src/glade/mergesource.glade
../src/glade/plugins.glade
../src/glade/rule.glade
../src/glade/scratchpad.glade
../src/glade/papermenu.glade
../src/glade/updateaddons.glade
../src/plugins/tool/notrelated.glade
../src/plugins/bookreport.glade
../src/plugins/tool/changenames.glade
../src/plugins/tool/changetypes.glade
../src/plugins/tool/desbrowser.glade
../src/plugins/tool/eval.glade
../src/plugins/tool/eventcmp.glade
../src/plugins/tool/leak.glade
../src/plugins/tool/finddupes.glade
../src/plugins/tool/mergecitations.glade
../src/plugins/tool/ownereditor.glade
../src/plugins/tool/patchnames.glade
../src/plugins/tool/relcalc.glade
../src/plugins/tool/soundgen.glade
../src/plugins/tool/removeunused.glade
../src/plugins/tool/verify.glade
../src/plugins/import/importgedcom.glade
../src/plugins/lib/holidays.xml.in
../data/gramps.desktop.in
../data/gramps.keys.in
../data/gramps.xml.in
../src/data/tips.xml.in

View File

@ -1,6 +1,6 @@
#! /usr/bin/env python
#
# update_po - a gramps tool to update a po file
# update_po - a gramps tool to update translations
#
# Copyright (C) 2006-2006 Kees Bakker
# Copyright (C) 2006 Brian Matherly
@ -27,42 +27,301 @@ import sys
from optparse import OptionParser
if sys.platform == 'win32':
# GetText Win 32 obtained from http://gnuwin32.sourceforge.net/packages/gettext.htm
# ....\gettext\bin\msgmerge.exe needs to be on the path
msgmergeCmd = 'msgmerge.exe'
msgfmtCmd = 'msgfmt.exe'
pythonCmd = 'python.exe'
elif sys.platform == 'linux2':
msgmergeCmd = 'msgmerge'
msgfmtCmd = 'msgfmt'
pythonCmd = 'python'
def tests():
"""
Testing installed programs.
We made tests (-t flag) by displaying versions of tools if properly
installed. Cannot run all commands without 'gettext' and 'python'.
"""
try:
print("====='msgmerge'=(merge our translation)=================")
os.system('''%(program)s -V''' % {'program': msgmergeCmd})
except:
print('Please, install %(program)s for updating your translation' % {'program': msgmergeCmd})
try:
print("===='msgfmt'=(format our translation for installation)==")
os.system('''%(program)s -V''' % {'program': msgfmtCmd})
except:
print('Please, install %(program)s for checking your translation' % {'program': msgfmtCmd})
try:
print("=================='python'============================")
os.system('''%(program)s -V''' % {'program': pythonCmd})
except:
print('Please, install python')
def XMLParse(filename, mark):
"""
Experimental alternative to 'intltool-extract' for XML based files.
"""
# in progress ...
from xml.etree import ElementTree
tree = ElementTree.parse(filename)
root = tree.getroot()
tips = names = []
for key in root:
if key.tag == mark:
tips.append((key.attrib, ElementTree.tostring(key, encoding="UTF-8")))
if mark == '_tip':
for tip in tips:
print(tip)
if mark == '_name':
print(names)
def main():
"""
The utility for handling translation stuff.
What is need by Gramps, nothing more.
"""
parser = OptionParser(
description='This program updates the PO file(s) for Gramps,'
' by generating a new file for translator',
usage='%prog [options] lang.po'
description='This program generates a new template and '
'also provide some common features.',
usage='%prog [options]'
)
parser.add_option("-a", "--all",
action="store_true", dest="all", default=False,
help="update all translations (not active)")
parser.add_option("-t", "--test",
action="store_true", dest="test", default=False,
help="test if 'python' and 'gettext' are properly installed")
parser.add_option("-x", "--xml",
action="store_true", dest="xml", default=False,
help="extract messages from xml based file formats")
parser.add_option("-g", "--glade",
action="store_true", dest="glade", default=False,
help="extract messages from glade file format only")
parser.add_option("-c", "--clean",
action="store_true", dest="clean", default=False,
help="remove created files")
parser.add_option("-p", "--pot",
action="store_true", dest="catalog", default=False,
help="create a new catalog")
# need at least one argument (sv.po, de.po, etc ...)
parser.add_option("-m", "--merge",
action="store_true", dest="merge", default=False,
help="merge lang.po files with last catalog")
parser.add_option("-k", "--check",
action="store_true", dest="check", default=False,
help="check lang.po files")
(options, args) = parser.parse_args()
if options.all:
print('Not implemented yet')
if sys.platform == 'win32':
# GetText Win 32 obtained from http://gnuwin32.sourceforge.net/packages/gettext.htm
# ....\gettext\bin\msgmerge.exe needs to be on the path
msgfmtCmd = 'msgmerge.exe'
elif sys.platform == 'linux2':
msgfmtCmd = 'msgmerge'
try:
os.system('''intltool-update -g gramps -o gramps.pot -p''')
print('New template')
except:
pass
for po in args:
print('Merge %(lang)s with last template' % {'lang': po})
os.system('''%s --no-wrap %s gramps.pot -o %s_updated''' % (msgfmtCmd, po, po))
print('Updated file: %(lang)s_updated' % {'lang': po})
if options.test:
tests()
if options.xml:
extract_xml()
if options.glade:
extract_glade()
if options.catalog:
retrieve()
if options.clean:
clean()
if options.merge:
merge(args)
if options.check:
check(args)
def listing(name, extension):
"""
List files according to extensions.
Parsing from a textual file (gramps) is faster and easy for maintenance.
Like POTFILES.in and POTFILES.skip
"""
f = open('gramps')
files = [file.strip() for file in f]
f.close()
temp = open(name, 'w')
for entry in files:
(module, ext) = os.path.splitext(entry)
if ext == extension:
temp.write(entry)
temp.write('\n')
temp.close()
def headers():
"""
Look at existing C file format headers.
Generated by 'intltool-extract' but want to get rid of this
dependency (perl, just a set of tools).
"""
headers = []
# in.h; extract_xml
if os.path.isfile('''../src/data/tips.xml.in.h'''):
headers.append('''../src/data/tips.xml.in.h''')
if os.path.isfile('''../src/plugins/lib/holidays.xml.in.h'''):
headers.append('''../src/plugins/lib/holidays.xml.in.h''')
# cosmetic
if os.path.isfile('''../data/gramps.xml.in.h'''):
headers.append('''../data/gramps.xml.in.h''')
if os.path.isfile('''../data/gramps.desktop.in.h'''):
headers.append('''../data/gramps.desktop.in.h''')
if os.path.isfile('''../data/gramps.keys.in.h'''):
headers.append('''../data/gramps.keys.in.h''')
return headers
def extract_xml():
"""
Extract translation strings from XML based, keys, mime and desktop
files. Still performed by 'intltool-update'.
Need to look at own XML files parsing and custom translation marks.
"""
os.system('''intltool-extract --type=gettext/xml ../src/data/tips.xml.in''')
#XMLParse('../src/data/tips.xml.in', '_tip')
os.system('''intltool-extract --type=gettext/xml ../src/plugins/lib/holidays.xml.in''')
#XMLParse('../src/data/tips.xml.in', '_name')
# cosmetic
# could be simple copies without .in extension
os.system('''intltool-extract --type=gettext/xml ../data/gramps.xml.in''')
os.system('''intltool-extract --type=gettext/ini ../data/gramps.desktop.in''')
os.system('''intltool-extract --type=gettext/keys ../data/gramps.keys.in''')
def create_template():
"""
Create a new file for template, if it does not exist.
"""
template = open('gramps.pot', 'w')
template.close()
def extract_glade():
"""
Extract messages from a temp file with all .glade
"""
if not os.path.isfile('gramps.pot'):
create_template()
listing('glade.txt', '.glade')
os.system('''xgettext --add-comments -j -L Glade '''
'''--from-code=UTF-8 -o gramps.pot --files-from=glade.txt'''
)
def retrieve():
"""
Extract messages from all files used by Gramps (python, glade, xml)
"""
extract_xml()
if not os.path.isfile('gramps.pot'):
create_template()
listing('python.txt', '.py')
os.system('''xgettext --add-comments -j --directory=. -d gramps '''
'''-L Python -o gramps.pot --files-from=python.txt '''
'''--keyword=_ --keyword=ngettext '''
'''--keyword=sgettext --from-code=UTF-8'''
)
extract_glade()
# C format header (.h extension)
for h in headers():
print('xgettext for %s') % h
os.system('''xgettext --add-comments -j -o gramps.pot '''
'''--keyword=N_ --from-code=UTF-8 %(head)s''' % {'head': h}
)
clean()
def clean():
"""
Remove created files (C format headers, temp listings)
"""
for h in headers():
if os.path.isfile(h):
os.system('''rm %s''' % h)
print('Remove %(head)s' % {'head': h})
if os.path.isfile('python.txt'):
os.system('''rm python.txt''')
print("Remove 'python.txt'")
if os.path.isfile('glade.txt'):
os.system('''rm glade.txt''')
print("Remove 'glade.txt'")
def merge(args):
"""
Merge messages with 'gramps.pot'
"""
if not args:
print('Please, add at least one argument (sv.po, de.po).')
for arg in args:
if arg[-3:] == '.po':
print('Merge %(lang)s with current template' % {'lang': arg})
os.system('''%(msgmerge)s --no-wrap %(lang)s gramps.pot -o updated_%(lang)s''' \
% {'msgmerge': msgmergeCmd, 'lang': arg})
print("Updated file: 'updated_%(lang)s'." % {'lang': arg})
else:
print("Please, try to set an argument with .po extension like '%(arg)s.po'." % {'arg': arg})
def check(args):
"""
Check the translation file
"""
if not args:
print('Please, add at least one argument (sv.po, de.po).')
for arg in args:
if arg[-3:] == '.po':
print("Checked file: '%(lang.po)s'. See '%(txt)s.txt'." \
% {'lang.po': arg, 'txt': arg[:2]})
os.system('''%(python)s ./check_po ./%(lang.po)s > %(lang)s.txt''' \
% {'python': pythonCmd, 'lang.po': arg, 'lang': arg[:2]})
os.system('''%(msgfmt)s -c -v %(lang.po)s''' % {'msgfmt': msgfmtCmd, 'lang.po': arg})
else:
print("Please, try to set an argument with .po extension like '%(arg)s.po'." % {'arg': arg})
if __name__ == "__main__":
main()