<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">--- ../../../../../festifn/moin/moin/MoinMoin/Page.py	Wed Oct 23 20:43:58 2002
+++ Page.py	Thu Nov 14 18:06:56 2002
@@ -64,7 +64,11 @@
         if self.prev_date:
             return os.path.join(config.backup_dir, wikiutil.quoteFilename(self.page_name) + "." + self.prev_date)
         else:
-            return os.path.join(config.text_dir, wikiutil.quoteFilename(self.page_name))
+            if config.multilingual_dir:
+                from MoinMoin import multilang
+                return multilang.get_interwiki_filename(self.page_name)
+            else:
+                return os.path.join(config.text_dir, wikiutil.quoteFilename(self.page_name))
 
 
     def _tmp_filename(self):
@@ -147,11 +151,25 @@
         if self.exists():
             return wikiutil.link_tag(url, text, formatter=fmt, **kw)
         elif user.current.show_nonexist_qm:
-            return wikiutil.link_tag(url,
+            result =  wikiutil.link_tag(url,
                 '?', 'nonexistent', formatter=fmt, **kw) + text
         else:
-            return wikiutil.link_tag(url, text, 'nonexistent', formatter=fmt, **kw)
+            result = wikiutil.link_tag(url, text, 'nonexistent', formatter=fmt, **kw)
 
+        if config.multilingual_dir:
+            from MoinMoin import multilang
+            flags = ""
+            translations = multilang.get_translations(self.page_name)
+            if translations:
+                for translation in translations:
+                    if Page(translation).exists():
+                        flags = flags + ' ' + multilang.language_link(
+                            translation, 0)
+            else:
+                pass
+            if flags != "":
+                result = result + ' (' + flags + ' )'
+        return result
 
     def getSubscribers(self, request, **kw):
         """ Get all subscribers of this page.
@@ -451,6 +469,42 @@
             'add a page with a name ending in Template.'))
         print self.formatter.paragraph(0)
 
+        # Translations as templates
+        if config.multilingual_dir:
+            page_name = self.page_name
+            from MoinMoin import multilang
+            import re
+            splitname = re.split('([%s][%s]+)' % \
+                                  (config.upperletters, config.lowerletters),
+                                  self.page_name)
+            search = ''
+            for part in splitname:
+                if len(part) &gt; 3 : search = search + part + '|'
+            search = search[:-1]
+            print `splitname`
+            print search
+            pages = multilang.title_search(search, None, 1)
+            i = 0
+            langlength = len (config.interwikiname)
+            while i &lt; len(pages):
+                if pages[i][0:langlength] == config.interwikiname:
+                    del pages[i]
+                else: i = i + 1
+            pages.sort()
+            print " " + `len(pages)`
+            if len(pages) &gt; 0:
+                print '&lt;h2&gt;Similar Pages in other languages&lt;/h2&gt;'
+                print '&lt;ul&gt;'
+                for p in pages:
+                    tag, interwiki, tail = wikiutil.resolve_wiki(p)
+                    print '&lt;li&gt;' + multilang.language_link(p)
+                    print (' ( &lt;a href="%(page_name)s?' +
+                           'action=edit&amp;template=%(tag)s:%(tail)s"&gt;' +
+                           'Use as Template&lt;/a&gt; ) &lt;/li&gt;\n' ) % \
+                           { 'page_name' : self.page_name, 'tag' : tag,
+                             'interwiki' : interwiki, 'tail' : tail}
+                print '&lt;/ul&gt;\n'
+
         # list similar pages that already exist
         start, end, matches = LikePages.findMatches(self.page_name, request)
         if matches and not isinstance(matches, type('')):
@@ -488,3 +542,91 @@
 
         return filter(None, string.split(cache.content(), '\n'))
 
+    def inter_wiki_link(self):
+        if config.interwikiname:
+            return config.interwikiname + ':' + self.page_name
+        else: return self.page_name
+
+    def translation(self, request):
+        request.clock.start('send_page')
+        import cgi
+        from MoinMoin.util import pysupport
+        from MoinMoin import wikimacro
+
+        page_name = self.page_name
+
+        # if necessary, load the default formatter
+        if self.default_formatter:
+            from MoinMoin.formatter.text_html import Formatter
+            self.formatter = Formatter(request, store_pagelinks=1)
+        self.form = request.form
+        self.formatter.setPage(self)
+        self.request = request
+        macro = wikimacro.Macro(self)
+
+        # start document output
+        doc_leader = self.formatter.startDocument(self.page_name)
+        # send the document leader
+        webapi.http_headers(request)
+        sys.stdout.write(doc_leader)
+
+        wikiutil.send_title(page_name)
+        from MoinMoin.multilang import *
+        from MoinMoin import multilang        
+        translations = get_translations(page_name)
+        if len(translations) &gt; 0:
+            print "&lt;h2&gt;Translations of " + page_name + '&lt;/h3&gt;\n\n&lt;ul&gt;'
+            for translation in translations:
+                tag, interwiki, tail = wikiutil.resolve_wiki(translation)
+                # Link
+                print '&lt;li&gt;' + language_link(translation)
+                # Link for removing
+                print (' ( &lt;a href="%(page_name)s?' +
+                       'action=unsettranslation&amp;page=%(tag)s:%(tail)s"&gt;' +
+                       'remove from group&lt;/a&gt; ) &lt;/li&gt;\n' ) % vars()
+            print '&lt;/ul&gt;\n'
+            # Link for removing this page 
+            print ('&lt;p&gt;&lt;a href="%(page_name)s?action=unsettranslation&amp;' +
+                   'page=%(page_name)s"&gt;' +
+                   'Remove this page from Group&lt;/a&gt;&lt;/p&gt;\n' ) % vars()
+
+        # Show simmilar Pages
+        if request.form.has_key("text_title"):
+            searchtext = request.form["text_title"].value
+        else:
+            searchtext = page_name
+        pages = multilang.title_search(searchtext, None, 1)
+        for translation in translations:
+            if translation in pages: pages.remove(translation)
+        if self.inter_wiki_link() in pages:
+            pages.remove(self.inter_wiki_link())
+        pages.sort()
+        if len(pages) &gt; 0:
+            print '&lt;h2&gt;Similar Pages&lt;/h2&gt;'
+            print '&lt;ul&gt;'
+            for p in pages:
+                tag, interwiki, tail = wikiutil.resolve_wiki(p)
+                print '&lt;li&gt;' + language_link(p)
+                print (' ( &lt;a href="%(page_name)s?' +
+                       'action=settranslation&amp;page=%(tag)s:%(tail)s"&gt;' +
+                       'Add&lt;/a&gt; ) &lt;/li&gt;\n' ) % vars()
+            print '&lt;/ul&gt;\n'
+
+            print """Search 
+&lt;form method="POST" action="%s"&gt;
+    &lt;input type="hidden" name="action" value="TranslationMenu"&gt;
+    &lt;input type="text" name="text_title" value="%s" size="30"&gt;
+    &lt;input type="image" src="/wiki/img/moin-search.gif" name="button_title"
+    alt="[?]" hspace="3" width="12" height="12" border="0"&gt;
+&lt;/form&gt;""" % ( page_name, searchtext )
+
+        # Insert new Translations directly
+        print "&lt;h2&gt;Add new Translation&lt;/h2&gt;"
+        print "Insert Interwikilink and press Go"
+        print macro.execute('SetTranslation', '')
+
+        # end document output
+        sys.stdout.write(self.formatter.endDocument())
+        request.clock.stop('send_page')
+
+
--- ../../../../../festifn/moin/moin/MoinMoin/PageEditor.py	Thu Jul 18 01:06:31 2002
+++ PageEditor.py	Tue Oct 29 17:23:32 2002
@@ -353,6 +353,11 @@
                 except OSError, er:
                     import errno
                     if er.errno &lt;&gt; errno.ENOENT: raise er
+            # Set translations in multilingual mode
+            if config.multilingual_dir:
+                from MoinMoin import multilang
+                multilang.set_translation_automatically(self.page_name)
+
 
         # set in-memory content
         self.set_raw_body(text)
--- ../../../../../festifn/moin/moin/MoinMoin/wikiutil.py	Fri Nov  8 20:53:36 2002
+++ wikiutil.py	Thu Nov 14 15:48:05 2002
@@ -681,6 +667,17 @@
             'pagename': quoteWikiname(keywords['pagename'])}
         print '&lt;/div&gt;'
 
+    # Multilingual Links
+    if config.multilingual_dir:
+        from MoinMoin import multilang
+        links = multilang.get_translations(text)
+        for link in links:
+            tag, interwiki, tail = resolve_wiki(link)
+            print ('&lt;a href="' + interwiki + tail + '"&gt;'+
+                   '&lt;img src="/' + config.default_markup +
+                   '/img/'+ config.lang_icons[tag] +
+                   '" align="right" alt="' + tag + '"&gt;&lt;/a&gt;')
+
     # print custom html code after system title (normally "&lt;hr&gt;")
     _emit_custom_html(None, config.title2)
     # !!! _emit_custom_html(request, config.title2)
--- ../../../../../festifn/moin/moin/MoinMoin/config.py	Fri Nov  8 20:53:36 2002
+++ config.py	Mon Nov 11 20:42:29 2002
@@ -38,6 +38,8 @@
 
 # default config values
 cfg_defaults = {
+    'multilingual_dir': None,
+    'languages': {},
     'allow_extended_names': 1,
     'allow_subpages': 1,
     'allow_numeric_entities': 1,
@@ -165,8 +166,12 @@
     except ValueError:
         pass
 
-# define directories
 import os
+# multilangual
+if multilingual_dir:
+    execfile(os.path.join(multilingual_dir, 'languages.py'))
+
+# define directories
 data_dir = os.path.normpath(data_dir)
 moinmoin_dir = os.path.abspath(os.path.dirname(__file__))
 
</pre></body></html>