> > Fixed. > > > > I've found some modules raises error on importing because of lacking some > > modules. > > Can you elaborate on that ? Before ignoreing "bzrlib/doc", there are four import errors. Can't import 'bzrlib/doc_generate/builders/texinfo.py': No module named sphinx Can't import 'bzrlib/doc_generate/writers/texinfo.py': No module named docutils Can't import 'bzrlib/util/simplemapi.py': name 'windll' is not defined Can't import 'bzrlib/transport/ftp/_gssapi.py': Unable to import library "kerberos": No module named kerberos I think bzrlib/doc and bzrlib/doc_generate should be excluded so I added filter to Makefile. Both of bzrlib.util.simplemapi and bzrlib.transport.ftp._gssapi doesn't provide any commands. > > Modules providing commands should be able to import while exporting command > > helps. > > Otherwise, help messages of the commands are not translated. > > Right, this could be addressed by using the command registry probably. Okey, I'll try command registry based approach. > > I don't think this is a big problem because updating pot is as special as > > making > > package. Only few developers and buildbots do this task. > > Is this an acceptable limitation? > > Yes and no, it depends ;) > > More importantly, I think we need... tests ;) > > Especially for the case you're encountering right now but more > generally so we can clearly define which texts should be > translated and ensure that a test will fail if whatever code > modification happens to escape the collection stage. > How can I write tests for tools like bzrgettext? One idea I have is making "xx" language. This language is translated automatically from pot. For example, "Display status" translated to "xx{{Display status}}". With this language, test of command can be ensure that messages that should be translated is really exported and translated. > 22 + xgettext --package-name "Bazaar" \ > > Really ? Is it just some internal id or can it be referenced by > say, launchpad ? If the later is true, we probably want bzr no ? I don't know that this name affects anyware. Should I try to make test project for it and play with Rosetta? Or can someone in bzr-core team help me by making test branch including po/bzr.pot generated by my branch? BTW, there are no reason to rename it to 'bzr'. I'll do it. > 134 +def importpath(path): > > I think we have some better implementation for that in pyutils > (get_name_object ?), this may also be related to the import > errors you're encountering. > > I don't want to sound NIH-ish here, but... it seems to me we'll > do a better job (in terms of coverage and precision) by using > bzrlib and all its facilities no ? > > Getting all commands, their help and all exceptions while > excluding tests for example sounds like an uphill battle to fight > with find and grep... As I said above, I'll try command registry based approach. With this approach, there are no need to manualy importing like "importpath()". > Do you get a feeling about how close you're coming to get *all* > the needed strings and can you categorize them (my intuition > being that there are ways to get them all reliably and precisely > by leveraging some existing APIs... and if we can do that, > designing for tests for them should be straightforward). It is far from *all* because there are no N_() and gettext() now. I can't imagine how far. But I think message categories that is most important to users is: * help topics * command help * Error messages giving a important hint to user. (ex. NotWorkingTree) About help topics, I'll implement scanning of it to bzrgettext.py. But we need to decide how handle text files under bzrlib/help_topics/en/. About command help, I don't know how to prepare command registry that includes all bundled plugins but does not include 3rd party plugins. About error messages, looking on bzrlib.errors is enough.