Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2009-02-24 15:05:36 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-03-02 06:31:09 (GMT)
commitee04db9ae1e468d4550f5f92abda2bd219be2e82 (patch)
tree0e4fd98f3fe7364887214b0c8e7ec77d469da2d7
parente493f42f9a30d67c3548176ca970f081ba7e3f3f (diff)
more i18n strings
-rw-r--r--GUI_Components/Edit_Pane.py2
-rw-r--r--GUI_Components/Image_Pane.py4
-rw-r--r--GUI_Components/Library_Pane.py6
-rw-r--r--Infoslicer_GUI.py435
-rw-r--r--sugaractivity.py6
5 files changed, 444 insertions, 9 deletions
diff --git a/GUI_Components/Edit_Pane.py b/GUI_Components/Edit_Pane.py
index e591fb4..9c421d2 100644
--- a/GUI_Components/Edit_Pane.py
+++ b/GUI_Components/Edit_Pane.py
@@ -118,7 +118,7 @@ class Edit_Pane(Pane):
end = buf.get_end_iter()
buf.delete(start, end)
buf.insert(buf.get_start_iter(), _("\nYou can choose a Wikipedia article to copy from by selecting it from the drop-down menu above.\n\n"))
- buf.insert(buf.get_end_iter(), "If you want to download more articles from Wikipedia, you can do this in the Library tab.")
+ buf.insert(buf.get_end_iter(), _("If you want to download more articles from Wikipedia, you can do this in the Library tab."))
else:
buf = article.getBuffer()
buf.insert(buf.get_start_iter(), _("\nYou have not downloaded any articles from Wikipedia.\n\nYou can download new articles in the Library tab."))
diff --git a/GUI_Components/Image_Pane.py b/GUI_Components/Image_Pane.py
index 04dcd7b..648104e 100644
--- a/GUI_Components/Image_Pane.py
+++ b/GUI_Components/Image_Pane.py
@@ -116,8 +116,8 @@ class Image_Pane(Pane):
self.editarticle.textbox.set_article(article)
if article.article_theme == None:
article.article_theme = _("My Articles")
- theme_list = IO_Manager().get_pages_in_theme("Wikipedia Articles")
- self.gallery.theme = "Wikipedia Articles"
+ theme_list = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
+ self.gallery.theme = _("Wikipedia Articles")
count = -1
self.gallery.articlemenu.get_model().clear()
diff --git a/GUI_Components/Library_Pane.py b/GUI_Components/Library_Pane.py
index 4dd200f..1ecb7d6 100644
--- a/GUI_Components/Library_Pane.py
+++ b/GUI_Components/Library_Pane.py
@@ -68,12 +68,12 @@ class Library_Pane(Pane):
searchentry = gtk.Entry()
searchentry.set_text(_("Article name"))
- searchentry.connect(_("activate"), self.click_search_button, None)
+ searchentry.connect("activate", self.click_search_button, None)
searchentryitem.add(searchentry)
searchentry.show()
self.searchbutton = gtk.ToolButton(gtk.STOCK_FIND)
- self.searchbutton.connect(_("clicked"), self.librarypanel.commence_retrieval, searchentry, statuslabel, wikimenu, self.wikis)
+ self.searchbutton.connect("clicked", self.librarypanel.commence_retrieval, searchentry, statuslabel, wikimenu, self.wikis)
self.toolbar.insert(self.searchbutton, -1)
self.searchbutton.show()
@@ -91,7 +91,7 @@ class Library_Pane(Pane):
self.name = _("Library")
def click_search_button(self, widget, data):
- self.searchbutton.emit(_("clicked"))
+ self.searchbutton.emit("clicked")
def get_source_article(self):
return self.librarypanel.get_source()
diff --git a/Infoslicer_GUI.py b/Infoslicer_GUI.py
new file mode 100644
index 0000000..9c333a4
--- /dev/null
+++ b/Infoslicer_GUI.py
@@ -0,0 +1,435 @@
+# Copyright (C) IBM Corporation 2008
+
+import pygtk
+import sys
+pygtk.require('2.0')
+import gtk
+import time
+import platform
+from GUI_Components.Edit_Pane import Edit_Pane
+from GUI_Components.Format_Pane import Format_Pane
+from GUI_Components.Library_Pane import Library_Pane
+from GUI_Components.Image_Pane import Image_Pane
+from GUI_Components.Publish_Pane import Publish_Pane
+from Processing.Article.Article import Article
+from Processing.IO_Manager import IO_Manager
+
+class Infoslicer_GUI:
+ """
+ Created by Jonathan Mace
+
+ This is an abstract class. Whichever platform decides to run the app
+ must created a subclass of this class.
+
+ """
+
+ def __init__(self):
+ print "InfoSlicer version 0.1, Copyright (C) 2008 IBM Corporation\
+ \nInfoSlicer comes with ABSOLUTELY NO WARRANTY; for details run the program with the `-warranty' argument.\
+ \nThis is free software, and you are welcome to redistribute it under certain conditions; type `-conditions' for details."
+ self._parse_args()
+ self.__set_up_GUI()
+
+ def _parse_args(self):
+ for arg in sys.argv:
+ if arg == "-warranty" or arg == "-conditions":
+ print "GNU GENERAL PUBLIC LICENSE \
+ \nTERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION \
+ \n \
+0. This License applies to any program or other work which contains\n\
+a notice placed by the copyright holder saying it may be distributed\n\
+under the terms of this General Public License. The \"Program\", below,\n\
+refers to any such program or work, and a \"work based on the Program\"\n\
+means either the Program or any derivative work under copyright law:\n\
+that is to say, a work containing the Program or a portion of it,\n\
+either verbatim or with modifications and/or translated into another\n\
+language. (Hereinafter, translation is included without limitation in\n\
+the term \"modification\".) Each licensee is addressed as \"you\".\n\
+Activities other than copying, distribution and modification are not\n\
+covered by this License; they are outside its scope. The act of\n\
+running the Program is not restricted, and the output from the Program\n\
+is covered only if its contents constitute a work based on the\n\
+Program (independent of having been made by running the Program).\n\
+Whether that is true depends on what the Program does.\n\
+\n\
+ 1. You may copy and distribute verbatim copies of the Program's\n\
+source code as you receive it, in any medium, provided that you\n\
+conspicuously and appropriately publish on each copy an appropriate\n\
+copyright notice and disclaimer of warranty; keep intact all the\n\
+notices that refer to this License and to the absence of any warranty;\n\
+and give any other recipients of the Program a copy of this License\n\
+along with the Program.\n\
+\n\
+You may charge a fee for the physical act of transferring a copy, and\n\
+you may at your option offer warranty protection in exchange for a fee.\n\
+\n\
+ 2. You may modify your copy or copies of the Program or any portion\n\
+of it, thus forming a work based on the Program, and copy and\n\
+distribute such modifications or work under the terms of Section 1\n\
+above, provided that you also meet all of these conditions:\n\
+\n\
+ a) You must cause the modified files to carry prominent notices\n\
+ stating that you changed the files and the date of any change.\n\
+\n\
+ b) You must cause any work that you distribute or publish, that in\n\
+ whole or in part contains or is derived from the Program or any\n\
+ part thereof, to be licensed as a whole at no charge to all third\n\
+ parties under the terms of this License.\n\
+\n\
+ c) If the modified program normally reads commands interactively\n\
+ when run, you must cause it, when started running for such\n\
+ interactive use in the most ordinary way, to print or display an\n\
+ announcement including an appropriate copyright notice and a\n\
+ notice that there is no warranty (or else, saying that you provide\n\
+ a warranty) and that users may redistribute the program under\n\
+ these conditions, and telling the user how to view a copy of this\n\
+ License. (Exception: if the Program itself is interactive but\n\
+ does not normally print such an announcement, your work based on\n\
+ the Program is not required to print an announcement.)\n\
+\n\
+These requirements apply to the modified work as a whole. If\n\
+identifiable sections of that work are not derived from the Program,\n\
+and can be reasonably considered independent and separate works in\n\
+themselves, then this License, and its terms, do not apply to those\n\
+sections when you distribute them as separate works. But when you\n\
+distribute the same sections as part of a whole which is a work based\n\
+on the Program, the distribution of the whole must be on the terms of\n\
+this License, whose permissions for other licensees extend to the\n\
+entire whole, and thus to each and every part regardless of who wrote it.\n\
+\n\
+Thus, it is not the intent of this section to claim rights or contest\n\
+your rights to work written entirely by you; rather, the intent is to\n\
+exercise the right to control the distribution of derivative or\n\
+collective works based on the Program.\n\
+\n\
+In addition, mere aggregation of another work not based on the Program\n\
+with the Program (or with a work based on the Program) on a volume of\n\
+a storage or distribution medium does not bring the other work under\n\
+the scope of this License.\n\
+\n\
+ 3. You may copy and distribute the Program (or a work based on it,\n\
+under Section 2) in object code or executable form under the terms of\n\
+Sections 1 and 2 above provided that you also do one of the following:\n\
+\n\
+ a) Accompany it with the complete corresponding machine-readable\n\
+ source code, which must be distributed under the terms of Sections\n\
+ 1 and 2 above on a medium customarily used for software interchange; or,\n\
+\n\
+ b) Accompany it with a written offer, valid for at least three\n\
+ years, to give any third party, for a charge no more than your\n\
+ cost of physically performing source distribution, a complete\n\
+ machine-readable copy of the corresponding source code, to be\n\
+ distributed under the terms of Sections 1 and 2 above on a medium\n\
+ customarily used for software interchange; or,\n\
+\n\
+ c) Accompany it with the information you received as to the offer\n\
+ to distribute corresponding source code. (This alternative is\n\
+ allowed only for noncommercial distribution and only if you\n\
+ received the program in object code or executable form with such\n\
+ an offer, in accord with Subsection b above.)\n\
+\n\
+The source code for a work means the preferred form of the work for\n\
+making modifications to it. For an executable work, complete source\n\
+code means all the source code for all modules it contains, plus any\n\
+associated interface definition files, plus the scripts used to\n\
+control compilation and installation of the executable. However, as a\n\
+special exception, the source code distributed need not include\n\
+anything that is normally distributed (in either source or binary\n\
+form) with the major components (compiler, kernel, and so on) of the\n\
+operating system on which the executable runs, unless that component\n\
+itself accompanies the executable.\n\
+\n\
+If distribution of executable or object code is made by offering\n\
+access to copy from a designated place, then offering equivalent\n\
+access to copy the source code from the same place counts as\n\
+distribution of the source code, even though third parties are not\n\
+compelled to copy the source along with the object code.\n\
+\n\
+ 4. You may not copy, modify, sublicense, or distribute the Program\n\
+except as expressly provided under this License. Any attempt\n\
+otherwise to copy, modify, sublicense or distribute the Program is\n\
+void, and will automatically terminate your rights under this License.\n\
+However, parties who have received copies, or rights, from you under\n\
+this License will not have their licenses terminated so long as such\n\
+parties remain in full compliance.\n\
+\n\
+ 5. You are not required to accept this License, since you have not\n\
+signed it. However, nothing else grants you permission to modify or\n\
+distribute the Program or its derivative works. These actions are\n\
+prohibited by law if you do not accept this License. Therefore, by\n\
+modifying or distributing the Program (or any work based on the\n\
+Program), you indicate your acceptance of this License to do so, and\n\
+all its terms and conditions for copying, distributing or modifying\n\
+the Program or works based on it.\n\
+\n\
+ 6. Each time you redistribute the Program (or any work based on the\n\
+Program), the recipient automatically receives a license from the\n\
+original licensor to copy, distribute or modify the Program subject to\n\
+these terms and conditions. You may not impose any further\n\
+restrictions on the recipients' exercise of the rights granted herein.\n\
+You are not responsible for enforcing compliance by third parties to\n\
+this License.\n\
+\n\
+ 7. If, as a consequence of a court judgment or allegation of patent\n\
+infringement or for any other reason (not limited to patent issues),\n\
+conditions are imposed on you (whether by court order, agreement or\n\
+otherwise) that contradict the conditions of this License, they do not\n\
+excuse you from the conditions of this License. If you cannot\n\
+distribute so as to satisfy simultaneously your obligations under this\n\
+License and any other pertinent obligations, then as a consequence you\n\
+may not distribute the Program at all. For example, if a patent\n\
+license would not permit royalty-free redistribution of the Program by\n\
+all those who receive copies directly or indirectly through you, then\n\
+the only way you could satisfy both it and this License would be to\n\
+refrain entirely from distribution of the Program.\n\
+\n\
+If any portion of this section is held invalid or unenforceable under\n\
+any particular circumstance, the balance of the section is intended to\n\
+apply and the section as a whole is intended to apply in other\n\
+circumstances.\n\
+\n\
+It is not the purpose of this section to induce you to infringe any\n\
+patents or other property right claims or to contest validity of any\n\
+such claims; this section has the sole purpose of protecting the\n\
+integrity of the free software distribution system, which is\n\
+implemented by public license practices. Many people have made\n\
+generous contributions to the wide range of software distributed\n\
+through that system in reliance on consistent application of that\n\
+system; it is up to the author/donor to decide if he or she is willing\n\
+to distribute software through any other system and a licensee cannot\n\
+impose that choice.\n\
+\n\
+This section is intended to make thoroughly clear what is believed to\n\
+be a consequence of the rest of this License.\n\
+\n\
+ 8. If the distribution and/or use of the Program is restricted in\n\
+certain countries either by patents or by copyrighted interfaces, the\n\
+original copyright holder who places the Program under this License\n\
+may add an explicit geographical distribution limitation excluding\n\
+those countries, so that distribution is permitted only in or among\n\
+countries not thus excluded. In such case, this License incorporates\n\
+the limitation as if written in the body of this License.\n\
+\n\
+ 9. The Free Software Foundation may publish revised and/or new versions\n\
+of the General Public License from time to time. Such new versions will\n\
+be similar in spirit to the present version, but may differ in detail to\n\
+address new problems or concerns.\n\
+\n\
+Each version is given a distinguishing version number. If the Program\n\
+specifies a version number of this License which applies to it and \"any\n\
+later version\", you have the option of following the terms and conditions\n\
+either of that version or of any later version published by the Free\n\
+Software Foundation. If the Program does not specify a version number of\n\
+this License, you may choose any version ever published by the Free Software\n\
+Foundation.\n\
+\n\
+ 10. If you wish to incorporate parts of the Program into other free\n\
+programs whose distribution conditions are different, write to the author\n\
+to ask for permission. For software which is copyrighted by the Free\n\
+Software Foundation, write to the Free Software Foundation; we sometimes\n\
+make exceptions for this. Our decision will be guided by the two goals\n\
+of preserving the free status of all derivatives of our free software and\n\
+of promoting the sharing and reuse of software generally.\n\
+\n\
+ NO WARRANTY\n\
+\n\
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n\
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\n\
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n\
+PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n\
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n\
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\n\
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\n\
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n\
+REPAIR OR CORRECTION.\n\
+\n\
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n\
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n\
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n\
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n\
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n\
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n\
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n\
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n\
+POSSIBILITY OF SUCH DAMAGES.\n\
+\n\
+ END OF TERMS AND CONDITIONS\n\
+\n\
+ How to Apply These Terms to Your New Programs\n\
+\n\
+ If you develop a new program, and you want it to be of the greatest\n\
+possible use to the public, the best way to achieve this is to make it\n\
+free software which everyone can redistribute and change under these terms.\n\
+\n\
+ To do so, attach the following notices to the program. It is safest\n\
+to attach them to the start of each source file to most effectively\n\
+convey the exclusion of warranty; and each file should have at least\n\
+the \"copyright\" line and a pointer to where the full notice is found.\n\
+\n\
+ <one line to give the program's name and a brief idea of what it does.>\n\
+ Copyright (C) <year> <name of author>\n\
+\n\
+ This program is free software; you can redistribute it and/or modify\n\
+ it under the terms of the GNU General Public License as published by\n\
+ the Free Software Foundation; either version 2 of the License, or\n\
+ (at your option) any later version.\n\
+\n\
+ This program is distributed in the hope that it will be useful,\n\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
+ GNU General Public License for more details.\n\
+\n\
+ You should have received a copy of the GNU General Public License along\n\
+ with this program; if not, write to the Free Software Foundation, Inc.,\n\
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\
+\n\
+Also add information on how to contact you by electronic and paper mail.\n\
+\n\
+If the program is interactive, make it output a short notice like this\n\
+when it starts in an interactive mode:\n\
+\n\
+ Gnomovision version 69, Copyright (C) year name of author\n\
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n\
+ This is free software, and you are welcome to redistribute it\n\
+ under certain conditions; type `show c' for details.\n\
+\n\
+The hypothetical commands `show w' and `show c' should show the appropriate\n\
+parts of the General Public License. Of course, the commands you use may\n\
+be called something other than `show w' and `show c'; they could even be\n\
+mouse-clicks or menu items--whatever suits your program.\n\
+\n\
+You should also get your employer (if you work as a programmer) or your\n\
+school, if any, to sign a \"copyright disclaimer\" for the program, if\n\
+necessary. Here is a sample; alter the names:\n\
+\n\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n\
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\
+\n\
+ <signature of Ty Coon>, 1 April 1989\n\
+ Ty Coon, President of Vice\n\
+\n\
+This General Public License does not permit incorporating your program into\n\
+proprietary programs. If your program is a subroutine library, you may\n\
+consider it more useful to permit linking proprietary applications with the\n\
+library. If this is what you want to do, use the GNU Lesser General\n\
+Public License instead of this License.\n\
+"
+ return
+
+ def setpanel(self, panel):
+ """
+ This method sets the main display to the panel specified.
+ """
+ pass
+
+ def clearpanel(self):
+ """
+ This method clears the main display (if setpanel does not clear it before setting)
+ """
+ pass
+
+ def settoolbars(self):
+ """
+ This method sets the toolbars. Toolbars are stored in self.toolbars and the
+ corresponding toolbar names are stored in self.toolbarnames
+ """
+ pass
+
+ def switch_page(self, page_num):
+ """
+ This method sets the current page to page_num when called.
+ """
+ pass
+
+ """
+ Change tab shown and available to the user.
+ """
+ def mode_switched(self, mode):
+ # Mode is the index of the tab that has been switched to
+ if self.currentindex != mode:
+ pane = self.panes[mode]
+ if self.currentpane != None:
+ self.source = self.currentpane.get_source_article()
+ self.working = self.currentpane.get_working_article()
+ pane.set_source_article(self.source)
+ pane.set_working_article(self.working)
+ self.clearpanel()
+ self.setpanel(pane.panel)
+ self.currentpane = pane
+ self.currentindex = mode
+
+ def __set_up_GUI(self):
+ # Set up dummy library if appropriate
+ running_on = platform.system()
+ if running_on == "Linux" and "olpc" in platform.platform().lower():
+ themes = IO_Manager().get_themes()
+ if themes == []:
+ IO_Manager().install_library()
+ # Instantiate the panels to be displayed by the GUI
+ self.library = Library_Pane()
+ self.panes = [self.library,
+ Edit_Pane(),
+ Format_Pane(),
+ Image_Pane(),
+ Publish_Pane()]
+
+ # Create the original and edited articles to be used by the GUI
+
+ self.source = Article()
+ self.working = Article()
+ ignore = False
+
+
+ themes = IO_Manager().get_themes()
+ if _("Wikipedia Articles") in themes:
+ i = themes.index(_("Wikipedia Articles"))
+ del themes[i]
+
+ wikiarticles = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
+ for theme in themes:
+ articles = IO_Manager().get_pages_in_theme(theme)
+ for article in articles:
+ if ignore == True:
+ break
+ for wikiarticle in wikiarticles:
+ if article in wikiarticle:
+ self.source = IO_Manager().load_article(wikiarticle, _("Wikipedia Articles"))
+ self.working = IO_Manager().load_article(article, theme)
+ print "loading source %s from %s" % (wikiarticle, _("Wikipedia Articles"))
+ print "loading edit %s from %s" % (article, theme)
+ ignore = True
+
+ self.currentpane = None
+
+ self.library.panel.connect("key-press-event", self.go_arrange_mode, None)
+
+ # Add toolbars and panels but keep hidden]
+ toolbars = [pane.toolbar for pane in self.panes]
+ toolbarnames = [pane.name for pane in self.panes]
+ self.settoolbars(toolbars, toolbarnames)
+
+ # Set the current index to -1 so that the first pane will always be shown
+ self.currentindex = -1
+
+ """
+ Respond to function key presses
+ """
+ def go_arrange_mode(self, widget, event, data):
+ key = event.keyval
+ if key == gtk.keysyms.F1:
+ print "f1"
+ self.switch_page(0)
+ if key == gtk.keysyms.F2:
+ print "f2"
+ self.switch_page(1)
+ if key == gtk.keysyms.F3:
+ print "f3"
+ self.switch_page(2)
+
+ """
+ Save and quit current article
+ """
+ def do_quit_event(self):
+ print "quitting"
+ article = self.currentpane.get_working_article()
+ IO_Manager().save_article(article)
diff --git a/sugaractivity.py b/sugaractivity.py
index 8c2c560..713365d 100644
--- a/sugaractivity.py
+++ b/sugaractivity.py
@@ -65,12 +65,12 @@ class sugaractivity( activity.Activity, Infoslicer_GUI ):
print "file read"
print "sourcetitle: %s, workingtitle: %s, workingtheme: %s, currentindex: %s" % (sourcetitle, workingtitle, workingtheme, currentindex)
iomanager = IO_Manager()
- if iomanager.page_exists(sourcetitle, "Wikipedia Articles"):
- sourcearticle = iomanager.load_article(sourcetitle, "Wikipedia Articles")
+ if iomanager.page_exists(sourcetitle, _("Wikipedia Articles")):
+ sourcearticle = iomanager.load_article(sourcetitle, _("Wikipedia Articles"))
else:
sourcearticle = Article()
sourcearticle.article_title = sourcetitle
- sourcearticle.article_theme = "Wikipedia Articles"
+ sourcearticle.article_theme = _("Wikipedia Articles")
if iomanager.page_exists(workingtitle, workingtheme):
workingarticle = iomanager.load_article(workingtitle, workingtheme)
else: