--- ../../../multilang.cvs/moin/MoinMoin/multilang.py	Mon Dec  2 08:15:09 2002
+++ multilang.py	Tue Dec 10 13:43:15 2002
@@ -52,7 +52,13 @@
     return total_hits
 
 def set_translation_automatically(page_name):
-    """ ??? """
+    """ If page doesn't have translations, set to other page with same Name,
+        if this can be found unambigously. translation groups are treated
+        as one translation.
+    """
+
+    if get_translations(page_name) != []: return
+    
     pages = []
     for lang in config.languages.keys():
         if os.path.exists(get_interwiki_filename(lang + ':' + page_name)):
@@ -189,6 +195,9 @@
     """ ??? """
     lang_file = get_language_file(pagename)
     if translationfilename:
+        if not os.path.exists(os.path.dirname(lang_file)):
+            from MoinMoin.util import filesys
+            filesys.makeDirs(os.path.dirname(lang_file))
         f = open(lang_file, 'w')
         f.write(translationfilename)
         f.close()
@@ -250,8 +259,9 @@
             os.remove(translationfile)
 
 def new_translation_file(page_name):
-    """ ??? """
-    translationfile = os.path.join(config.multilingual_dir, page_name)
+    """ returns unique aund quoted filename """
+    translationfile = os.path.join(config.multilingual_dir,
+                                   wikiutil.quoteFilename(page_name))
     newtranslationfile = translationfile
     i = 0
     while os.path.exists(newtranslationfile):
@@ -279,13 +289,15 @@
     interwiki = interwikilink.split(':', 1)
     if len(interwiki) == 2:
         if config.languages.has_key(interwiki[0]):
-            return os.path.join(config.languages[interwiki[0]], 'lang',
-                                wikiutil.quoteFilename(interwiki[1]))
+            return os.path.join(config.languages[interwiki[0]], 'pages',
+                                wikiutil.quoteFilename(interwiki[1]),
+                                'i18n.lnk')
         else:
             return None
     else:
-        return os.path.join(config.data_dir, 'lang',
-                            wikiutil.quoteFilename(interwiki[0]))
+        return os.path.join(config.data_dir, 'pages',
+                            wikiutil.quoteFilename(interwiki[0]),
+                            'i18n.lnk')
                                                 
 
 # HTML
--- ../../../multilang.cvs/moin/MoinMoin/Page.py	Mon Dec  2 14:39:36 2002
+++ Page.py	Wed Dec 11 14:39:56 2002
@@ -157,6 +157,7 @@
             result = wikiutil.link_tag(url, text, 'nonexistent', formatter=fmt, **kw)
 
         if config.multilingual_dir:
+            # Show translations behind link
             from MoinMoin import multilang
             flags = ""
             translations = multilang.get_translations(self.page_name)
@@ -164,8 +165,17 @@
                 for translation in translations:
                     if Page(translation).exists():
                         flags = flags + ' ' + multilang.language_link(translation, 0)
+            # if none found show similar pages
             else:
                 pass
+                other_languages = config.languages.keys()
+                other_languages.remove(config.interwikilink)
+                translations = multilang.title_search(self.page_name,
+                                                      other_languages,
+                                                      extended=None)
+                for translation in translations:
+                    if Page(translation).exists():
+                        flags = flags + ' ' + multilang.language_link(translation, 0)
             if flags != "":
                 result = result + ' (' + flags + ' )'
         return result
@@ -468,11 +478,37 @@
             'add a page with a name ending in Template.'))
         print self.formatter.paragraph(0)
 
+        # list similar pages that already exist
+        start, end, matches = LikePages.findMatches(self.page_name, request)
+        if matches and not isinstance(matches, type('')):
+            print self.formatter.rule()
+            print _('<p>The following pages with similar names already exist...</p>')
+            LikePages.showMatches(self.page_name, request, start, end, matches)
+
         # Translations as templates
         if config.multilingual_dir:
             page_name = self.page_name
             from MoinMoin import multilang
             import re
+
+            pages = multilang.get_translations(page_name)
+            if len(pages) > 0:
+                print self.formatter.heading(2, _('Translations of this page'))
+                print self.formatter.bullet_list(1)
+                for p in pages:
+                    tag, interwiki, tail = wikiutil.resolve_wiki(p)
+                    print self.formatter.listitem(1)
+                    print multilang.language_link(p)
+                    print " ( "
+                    print wikiutil.link_tag("%s?action=edit&template=%s" % (
+                        wikiutil.quoteWikiname(self.page_name),
+                        tag + ":" + wikiutil.quoteWikiname(tail)),
+                                            _("Use as template"))
+                    print " ) "
+                    print self.formatter.listitem(0)
+                print self.formatter.bullet_list(0)
+            
+            # Similar Pages in other languages as templates 
             splitname = re.split('([%s][%s]+)' % \
                                   (config.upperletters, config.lowerletters),
                                   self.page_name)
@@ -481,8 +517,6 @@
                 if len(part) > 3:
 		    search = search + part + '|'
             search = search[:-1]
-            # print `splitname`
-            # print search
             pages = multilang.title_search(search, None, 1)
             i = 0
             langlength = len(config.interwikiname)
@@ -494,26 +528,21 @@
             pages.sort()
             # print " " + `len(pages)`
             if len(pages) > 0:
-                print '<h2>Similar Pages in other languages</h2>'
-                print '<ul>'
+                print self.formatter.heading(2,'Similar Pages in other languages')
+                print self.formatter.bullet_list(1)
                 for p in pages:
                     tag, interwiki, tail = wikiutil.resolve_wiki(p)
-                    print '<li>' + multilang.language_link(p)
-                    print (' ( <a href="%(page_name)s?' +
-                           'action=edit&template=%(tag)s:%(tail)s">' +
-                           'Use as Template</a> ) </li>\n' ) % \
-                           { 'page_name' : self.page_name, 'tag' : tag,
-                             'interwiki' : interwiki, 'tail' : tail}
-                print '</ul>\n'
-
-        # list similar pages that already exist
-        start, end, matches = LikePages.findMatches(self.page_name, request)
-        if matches and not isinstance(matches, type('')):
-            print self.formatter.rule()
-            print _('<p>The following pages with similar names already exist...</p>')
-            LikePages.showMatches(self.page_name, request, start, end, matches)
-
-
+                    print self.formatter.listitem(1)
+                    print multilang.language_link(p)
+                    print " ( "
+                    print wikiutil.link_tag("%s?action=edit&template=%s" % (
+                        wikiutil.quoteWikiname(self.page_name),
+                        tag + ":" + wikiutil.quoteWikiname(tail)),
+                                            _("Use as template"))
+                    print " ) "
+                    print self.formatter.listitem(0)
+                print self.formatter.bullet_list(0)
+                
     def getPageLinks(self, request):
         """Get a list of the links on this page"""
         if not self.exists(): return []
@@ -572,25 +601,36 @@
         sys.stdout.write(doc_leader)
 
         wikiutil.send_title(page_name)
-        from MoinMoin.multilang import *
         from MoinMoin import multilang        
-        translations = get_translations(page_name)
+        translations = multilang.get_translations(page_name)
         if len(translations) > 0:
-            print '<h2>Translations of %s</h2>\n\n<ul>' % page_name
+            print self.formatter.heading(2, 'Translations of %s' % page_name)
+            print self.formatter.bullet_list(1)
             for translation in translations:
                 tag, interwiki, tail = wikiutil.resolve_wiki(translation)
+                print self.formatter.listitem(1)
                 # Link
-                print '<li>' + language_link(translation)
+                print multilang.language_link(translation)
                 # Link for removing
-                print (' ( <a href="%(page_name)s?' +
-                       'action=TranslationMenu&do=unset&page=%(tag)s:%(tail)s">' +
-                       'remove from group</a> ) </li>\n' ) % vars()
-            print '</ul>\n'
-            # Link for removing this page 
-            print ('<p><a href="%(page_name)s?action=TranslationMenu&' +
-                   'do=unset&page=%(page_name)s">' +
-                   'Remove this page from Group</a></p>\n' ) % vars()
+#                print (' ( <a href="%(page_name)s?' +
+#                       'action=TranslationMenu&do=unset&page=%(tag)s:%(tail)s">' +
+#                       'remove from group</a> ) </li>\n' ) % vars()
 
+                print " ( " 
+                print wikiutil.link_tag("%s?action=TranslationMenu&do=unset&page=%s" % (
+                    wikiutil.quoteWikiname(self.page_name),
+                    tag + ":" + wikiutil.quoteWikiname(tail)),
+                                        _("remove from group"))
+                print " ) "
+                print self.formatter.listitem(0)
+            print self.formatter.bullet_list(0)
+            # Link for removing this page 
+            print self.formatter.paragraph(1)
+            print wikiutil.link_tag("%s?action=TranslationMenu&do=unset&page=%s" % (
+                wikiutil.quoteWikiname(self.page_name),
+                wikiutil.quoteWikiname(self.page_name)),
+                                    _("Remove this page from group"))
+            print self.formatter.paragraph(0)
         # Show similar Pages
         if request.form.has_key("text_title"):
             searchtext = request.form["text_title"].value
@@ -604,15 +644,23 @@
             pages.remove(self.inter_wiki_link())
         pages.sort()
         if len(pages) > 0:
-            print '<h2>Similar Pages</h2>'
-            print '<ul>'
+            print self.formatter.heading(2,'Similar Pages')
+            print self.formatter.bullet_list(1)
             for p in pages:
                 tag, interwiki, tail = wikiutil.resolve_wiki(p)
-                print '<li>' + language_link(p)
-                print (' ( <a href="%(page_name)s?' +
-                       'action=TranslationMenu&do=set&page=%(tag)s:%(tail)s">' +
-                       'Add</a> ) </li>\n' ) % vars()
-            print '</ul>\n'
+                print self.formatter.listitem(1)
+                print multilang.language_link(p)
+                print " ( "
+                print wikiutil.link_tag("%s?action=TranslationMenu&do=set&page=%s" % (
+                wikiutil.quoteWikiname(self.page_name),
+                tag + ":" + wikiutil.quoteWikiname(tail)),
+                _("Add"))
+                print " ) "
+#                print (' ( <a href="%(page_name)s?' +
+#                       'action=TranslationMenu&do=set&page=%(tag)s:%(tail)s">' +
+#                       'Add</a> ) </li>\n' ) % vars()
+                print self.formatter.listitem(0)
+            print self.formatter.bullet_list(0)
 
             print """Search 
 <form method="POST" action="%s">
