#!/usr/bin/env python

"""
    MoinMoin - query_translations script to get po strings from existing master pages

    @copyright: 2009 MoinMoin:ReimarBauer

    @license: GNU GPL, see COPYING for details.
"""

import sys, os

# a) Configuration of Python's code search path
#    If you already have set up the PYTHONPATH environment variable for the
#    stuff you see below, you don't need to do a1) and a2).

# a1) Path of the directory where the MoinMoin code package is located.
#     Needed if you installed with --prefix=PREFIX or you didn't use setup.py.
#sys.path.insert(0, 'PREFIX/lib/python2.4/site-packages')

# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
moinpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
sys.path.insert(0, moinpath)
os.chdir(moinpath)

from MoinMoin.web.contexts import ScriptContext
request = ScriptContext()

from MoinMoin.i18n import strings
from MoinMoin.Page import Page

def lang_select():
    """ Create language selection. """
    from MoinMoin import i18n
    return i18n.wikiLanguages().keys()

def underlay_pages(request, language='en'):
    underlay_page_list = []
    for name in request.rootpage.getPageList(exists=1):
        page = Page(request, name)
        if page.getPageStatus()[0] and page.pi['language'] == language:
            # is an underlay page in the wanted language
            underlay_page_list.append(name)
    return underlay_page_list

for language in lang_select():
    if language == 'en':
        continue
    lang_dependent = underlay_pages(request, language=language)
    result = []
    for name in lang_dependent:
        if name == "MoinI18n/%s" % language:
            continue
        page = Page(request, name)
        meta = page.get_meta()
        for l, value in meta:
            if value.startswith('master-page:'):
                master_page = value.replace('master-page:', "").strip()
                m_exists = Page(request, master_page).exists()
                app_text = ""
                if not m_exists:
                    app_text = "# check typo this master page does not exists"
                result.append("""msgid "%s" %s
msgstr "%s"
""" % (master_page, app_text, name))
                break
    if result:
        result = '\n'.join(result)
        file('%s_po.txt' % language, 'w').write(result.encode('utf-8'))


