[Chandler-dev] Re: Script to upgrade localized PO files

Brian Kirsch bkirsch at osafoundation.org
Tue Aug 14 15:03:06 PDT 2007


Hi Jonas,
See comments in-line.

In the future can you please cc the Chandler developer list
(chandler-dev at osafoundation.org) .

There are a number of developers interested in the ongoing i18n /  
l10n work.

At OSAF, we try to keep application level conversations on the lists
so others can follow along.


Thanks for all the good work,
Brian


On Aug 13, 2007, at 1:48 PM, Jonas Beckman wrote:

> Hi!
>
> I finally found the time to merge our current Swedish file with the  
> updated "Chandler-en.po". An updated version of "Chandler_sv.po" is  
> checked in at my place and ready to go.

Fantastic!

>
> My original plan was to write an upgrade script using stuff from  
> the little mnemonics hack. Unfortunately, cleanly replacing  
> messages brought up edge cases involving multi-line messages,  
> newlines and unicode and I  realized I had better write a parser. I  
> did look at Chris Lenz's Babel stuff (which does some PO parsing)  
> but ran into problems with his SVN version. Eventually I had my own  
> parsing code working well enough to merge our files.
>
> But then I did some more research and realized that simple PO  
> parsing has already been done. I found this nice little file (with  
> an MIT license): http://code.google.com/p/polib/. Using that file,  
> I had my new and much simpler upgrade script working the same day.  
> Of course, by then I understood the problem pretty well. I'll  
> contact the author and thank him tomorrow.

Yes there are a number of po merging utilities freely available :)

>
> A session from my new upgrade script looks like this:
>
> >>> po_upgrade.py
>
> Upgrading localized PO file to new version
> Current master file:       ./Chandler-en.po
> Current localized version: ./Chandler_sv.po
> Merging already localized messages with master file
> Please wait...
>
> Upgrade finished
> Saved new file: ./Chandler_migrated.po
> There are 1313 messages
> (90% localized)
>
> ***
>
> I really appreciate the work you and Mimi are doing to clean up the  
> original file. Many of the your new msgstr strings are both nicer  
> and more helpful. Of course, after an upgrade your suggestions will  
> be replaced by already translated messages. So localizers should  
> probably look at both files after an upgrade to get as much context  
> information as possible.
>

0.7.1 will be the first "Localizable" release. As such I plan to  
migrate all the work done in the
Chandler-en.po back in to the Chandler Python code. The 0.7.1  
Chandler-en.po will be
very minimal and include only a few string changes required after the  
0.7.1 code freeze.

Localizers will in 0.7.1, have the best / cleanest strings to work  
with in the Chandler.pot
template. Also we plan on adding localizer level comments to the  
Chandler.pot
so that many of the context issues that came up in the EuroPython  
Sprint such as "Dashboard",
"Triage" etc will be explained to the Localizer in-line.

This should make the translation process much simpler than you  
experienced.

> My new upgrade script also lists any new and/or changed <msgid>  
> strings. Originally we had about 15, which I changed manually in  
> the Swedish version. I will keep working to make this process  
> smoother and more automatic.
>
> I also have a question about the generation process: there are many  
> multi-line "msgid" strings full of newlines, tabs etc. Clever  
> parser code can deal with this most of the time - but is all that  
> stuff necessary?
>
> We are using these strings as keys, after all, and it can get ugly.  
> In particular: a multiline "msgid" starting with an empty string  
> followed by strings with variable-substitions currently break my PO- 
> parser. Such msgsids MUST be followed by at least another line with  
> an empty string. I found and corrected this using po_check.

That does raise a known issue of how much formating to include in the  
msgid keys and how
much to push to the WxPython layout engine to handle.


>
> Lines like this breaks PO parsing and my upgrade script:
>
> msgid ""
> "Many variable %s(var) here"
> msgstr ""
>
> Fortunately this works:
>
> msgid ""
> "Many variable %s(var) here"
> msgstr ""
> ""
>
> I'll look into it. But attached is a revised "Chandler-en.po" and a  
> diff with the 15 places where this occurs and I made that trivial fix.
>
Do look in to this. The Chandler.pot was generated using xgettext and  
reported no errors.
I guess I am not fully understanding whether this is an issue with  
the Chandler-en.po or with
the parsing utilities that you are using. I will look in to this  
further as well soon as we start on
0.7.1.


>
> Anyway... this is still fun! I hope everything is working out with  
> the final preview and I follow your bug-hunting. I now have a test  
> setup with the latest version of Chandler running under OS X,  
> Ubuntu 7.04 and Windows XP SP2. I tried but was unable to reproduce  
> the failing test suites mentioned last week on Chandler-dev. But if  
> there is anything specific I can test, do let me know.
>

Great we can always use more testers. There a few bugs that OSAF is  
having trouble reproducing.

The link to the email is here:

http://lists.osafoundation.org/pipermail/chandler-dev/2007-August/ 
008673.html

Any help is always appreciated.


> All the best,
> Jonas
>
> #   Licensed under the Apache License, Version 2.0 (the "License");
> #   you may not use this file except in compliance with the License.
> #   You may obtain a copy of the License at
> #
> #       http://www.apache.org/licenses/LICENSE-2.0
> #
> #   Unless required by applicable law or agreed to in writing,  
> software
> #   distributed under the License is distributed on an "AS IS" BASIS,
> #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> #   See the License for the specific language governing permissions  
> and
> #   limitations under the License.
>
>
> #
> # English Translation File used to provide
> # "en" verbiage changes once a localization
> # freeze has been put in place for a Chandler release.
> #
>
> msgid ""
> msgstr ""
> "Project-Id-Version: Pot file generated from Chandler SVN Trunk  
> R15144\n"
> "POT-Creation-Date: 2007-07-31 09:46+HST\n"
> "PO-Revision-Date: $date$\n"
> "Last-Translator: Mimi Yin <mimi at osafoundation.org>\n"
> "Language-Team: Brian Kirsch <bkirsch at osafoundation.org>\n"
> "MIME-Version: 1.0\n"
> "Content-Transfer-Encoding: 8bit\n"
> "Content-Type: text/plain; charset=UTF-8\n"
> "Generated-By: pygettext.py 1.5\n"
>
>
> #: Chandler.py:109
> msgid "Another instance of Chandler currently has the repository  
> open."
> msgstr "Another Chandler is already running off the same data  
> repository."
>
> #: Chandler.py:110 Chandler.py:163 application/Application.py:695
> #: application/dialogs/UncaughtExceptionDialog.py:33
> #: application/dialogs/Util.py:513 parcels/osaf/app/__init__.py:37
> #: parcels/osaf/framework/prompts.py:42 parcels/osaf/views/main/ 
> Main.py:506
> #: parcels/osaf/views/main/mainblocks.py:305
> msgid "Chandler"
> msgstr ""
>
> #: Chandler.py:159
> msgid ""
> "Chandler encountered an unexpected problem while trying to start.\n"
> msgstr "Start up error.\n"
>
> #: Chandler.py:160
> msgid ""
> "Here are the bottom %(frames)s frames of the stack:\n"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:1
> msgid "Chandler: Internal Program Error"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:2
> msgid ""
> "Chandler has experienced an internal error.  It is recommended  
> that you restart\n"
> "Chandler to avoid data corruption."
> msgstr "Please restart to avoid data corruption."
>
> #: XRC_STRINGS_FOR_CHANDLER.py:3
> msgid "Do not show further errors in this session."
> msgstr "Do not show this error again."
>
> #: XRC_STRINGS_FOR_CHANDLER.py:4
> msgid "Required"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:5
> msgid "Optional"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:6
> msgid "&Email:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:7
> msgid "&Comments: "
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:8
> msgid ""
> "System\n"
> "&Information:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:9
> msgid "Delete selected item"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:10 parcels/osaf/views/main/menus.py:408
> #: parcels/osaf/views/main/menus.py:483 parcels/osaf/views/main/ 
> menus.py:777
> #: parcels/osaf/views/main/menus.py:893
> msgid "&Delete"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:11
> msgid "&Send this feedback"
> msgstr "&Send Error Report"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:12
> msgid ""
> "You may send information to OSAF about this error in order to  
> assist with improving \n"
> "the product.  You may optionally add additional information about  
> how to reproduce the error before sending."
> msgstr ""
> "Help improve Chandler. Report errors. \n"
> "Please add any additional information you have that might help us  
> reproduce the error."
>
> #: XRC_STRINGS_FOR_CHANDLER.py:13
> msgid "&Restart"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:14
> msgid "&Close"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:15 XRC_STRINGS_FOR_CHANDLER.py:28
> #: XRC_STRINGS_FOR_CHANDLER.py:47 XRC_STRINGS_FOR_CHANDLER.py:56
> #: XRC_STRINGS_FOR_CHANDLER.py:65
> msgid "Account type:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:16
> msgid "Outgoing Mail"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:17 XRC_STRINGS_FOR_CHANDLER.py:30
> #: XRC_STRINGS_FOR_CHANDLER.py:49 XRC_STRINGS_FOR_CHANDLER.py:58
> #: XRC_STRINGS_FOR_CHANDLER.py:67
> msgid "Descr&iption:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:18 XRC_STRINGS_FOR_CHANDLER.py:31
> msgid "&Email address:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:19 XRC_STRINGS_FOR_CHANDLER.py:33
> #: XRC_STRINGS_FOR_CHANDLER.py:50 XRC_STRINGS_FOR_CHANDLER.py:59
> msgid "&Server:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:20 XRC_STRINGS_FOR_CHANDLER.py:39
> msgid "Auto-confi&gure..."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:21 XRC_STRINGS_FOR_CHANDLER.py:40
> #: XRC_STRINGS_FOR_CHANDLER.py:54 XRC_STRINGS_FOR_CHANDLER.py:63
> msgid "Po&rt:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:22 XRC_STRINGS_FOR_CHANDLER.py:41
> #: parcels/osaf/views/detail/detail.py:1118
> msgid "None"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:23 XRC_STRINGS_FOR_CHANDLER.py:42
> msgid "TLS"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:24 XRC_STRINGS_FOR_CHANDLER.py:43
> msgid "SSL"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:25
> msgid "&Use Authentication:"
> msgstr "&Use authentication"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:26 XRC_STRINGS_FOR_CHANDLER.py:34
> #: XRC_STRINGS_FOR_CHANDLER.py:52 XRC_STRINGS_FOR_CHANDLER.py:61
> #: XRC_STRINGS_FOR_CHANDLER.py:68
> msgid "User &name:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:27 XRC_STRINGS_FOR_CHANDLER.py:35
> #: XRC_STRINGS_FOR_CHANDLER.py:53 XRC_STRINGS_FOR_CHANDLER.py:62
> #: XRC_STRINGS_FOR_CHANDLER.py:69
> msgid "Pass&word:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:29
> msgid "Incoming Mail"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:32
> msgid "&Full name:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:36
> msgid "&Protocol:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:37
> msgid "IMAP"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:38
> msgid "POP"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:44 application/dialogs/ 
> AccountPreferences.py:49
> msgid "Configure"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:45
> msgid "Chandler folders. "
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:46
> msgid "Learn more."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:48
> #: application/dialogs/AccountPreferences.py:435
> msgid "WebDAV Sharing"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:51 XRC_STRINGS_FOR_CHANDLER.py:60
> msgid "Pat&h:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:55 XRC_STRINGS_FOR_CHANDLER.py:64
> msgid "Use SSL"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:57
> #: application/dialogs/AccountPreferences.py:389
> msgid "Chandler Server sharing"
> msgstr "Chandler Server Sharing"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:66
> #: application/dialogs/AccountPreferences.py:343
> msgid "Chandler Hub sharing"
> msgstr "Chandler Hub Sharing"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:70
> msgid "&Accounts:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:71
> msgid "Create new account..."
> msgstr "Create New Account..."
>
> #: XRC_STRINGS_FOR_CHANDLER.py:72
> msgid "&Delete account..."
> msgstr "&Delete Account..."
>
> #: XRC_STRINGS_FOR_CHANDLER.py:73
> msgid "Note: Only emails sent from Chandler will be downloaded."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:74
> msgid "Don't have a Chandler Hub account? "
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:75
> msgid "Sign up here."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:76
> msgid "&Test..."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:77 XRC_STRINGS_FOR_CHANDLER.py:82
> #: XRC_STRINGS_FOR_CHANDLER.py:111
> #: application/dialogs/StartupOptionsDialog.py:119
> #: application/dialogs/UpgradeDialog.py:84
> msgid "OK"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:78 XRC_STRINGS_FOR_CHANDLER.py:84
> #: XRC_STRINGS_FOR_CHANDLER.py:105 XRC_STRINGS_FOR_CHANDLER.py:108
> #: XRC_STRINGS_FOR_CHANDLER.py:112 XRC_STRINGS_FOR_CHANDLER.py:114
> #: XRC_STRINGS_FOR_CHANDLER.py:120 XRC_STRINGS_FOR_CHANDLER.py:122
> #: XRC_STRINGS_FOR_CHANDLER.py:128 XRC_STRINGS_FOR_CHANDLER.py:133
> #: parcels/osaf/app/compact.py:91
> msgid "Cancel"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:79
> msgid "Some text"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:80
> msgid "Apply to all"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:81
> msgid "Never ask again"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:83
> msgid "Move to Trash"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:85 XRC_STRINGS_FOR_CHANDLER.py:95
> msgid "Collection:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:86
> msgid "S&haring account:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:87 XRC_STRINGS_FOR_CHANDLER.py:118
> msgid "ChoiceItem"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:88 XRC_STRINGS_FOR_CHANDLER.py:98
> msgid "Share:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:89 XRC_STRINGS_FOR_CHANDLER.py:99
> #: parcels/osaf/sharing/model.py:80
> msgid "Triage status"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:90 XRC_STRINGS_FOR_CHANDLER.py:100
> #: parcels/osaf/sharing/model.py:162
> msgid "Event status"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:91 XRC_STRINGS_FOR_CHANDLER.py:101
> msgid "Alarms"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:92 XRC_STRINGS_FOR_CHANDLER.py:102
> msgid "BCC:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:93 XRC_STRINGS_FOR_CHANDLER.py:103
> msgid "&Needs reply status"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:94
> msgid "View Error Details..."
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:96
> msgid "Last sync:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:97 XRC_STRINGS_FOR_CHANDLER.py:117
> msgid "Sharing account:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:104
> msgid "&Publish"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:106 parcels/osaf/views/main/menus.py: 
> 167
> msgid "Sync"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:107
> msgid "Replace"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:109
> msgid "Unsubscribe"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:110 XRC_STRINGS_FOR_CHANDLER.py:113
> #: XRC_STRINGS_FOR_CHANDLER.py:115
> msgid "Copy URL(s) to Clipboard"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:116 XRC_STRINGS_FOR_CHANDLER.py:124
> #: application/dialogs/ConflictDialog.py:289 parcels/osaf/pim/ 
> triage.py:32
> #: parcels/osaf/sharing/__init__.py:1636
> msgid "Done"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:119
> msgid "Publish Free/Busy"
> msgstr "Publish Free/Busy Calendar"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:121 XRC_STRINGS_FOR_CHANDLER.py:123
> msgid "Copy URL to Clipboard"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:125
> msgid "Sharing &account:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:126
> msgid "S&elect collections to restore:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:127
> msgid "&Restore"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:129
> msgid "URL of collection:"
> msgstr "URL:"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:130
> msgid "http://"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:131 application/dialogs/ 
> ImportExport.py:174
> msgid "Keep out of Dashboard"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:132
> #: application/dialogs/SubscribeCollection.py:368
> msgid "Subscribe"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:134
> msgid "Please enter account information:"
> msgstr "Please enter your account information:"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:135
> msgid "Username:"
> msgstr "User name:"
>
> #: XRC_STRINGS_FOR_CHANDLER.py:136
> msgid "Password:"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:137
> msgid "Here's some text"
> msgstr ""
>
> #: XRC_STRINGS_FOR_CHANDLER.py:138
> msgid "Checkbox"
> msgstr ""
>
> #: application/AboutBox.py:38 application/AboutBox.py:117
> msgid "About Chandler"
> msgstr ""
>
> #: application/AboutBox.py:116
> msgid "Version %(versionNumber)s for %(platform)s"
> msgstr ""
>
> #: application/AboutBox.py:122
> msgid "Chandler is licensed under the"
> msgstr ""
>
> #: application/AboutBox.py:123
> msgid "Apache Licence, Version 2.0."
> msgstr ""
>
> #: application/AboutBox.py:124
> msgid "Visit %(chandlerWebURL)s for more information."
> msgstr ""
>
> #: application/Application.py:243 parcels/osaf/views/main/Main.py:840
> #: parcels/osaf/views/main/Main.py:858
> msgid "Checking repository..."
> msgstr ""
>
> #: application/Application.py:246
> msgid "Shutting down mail service..."
> msgstr ""
>
> #: application/Application.py:249
> msgid "Stopping wakeup service..."
> msgstr ""
>
> #: application/Application.py:253
> msgid "Stopping sharing..."
> msgstr ""
>
> #: application/Application.py:256
> msgid "Stopping twisted..."
> msgstr ""
>
> #: application/Application.py:264
> msgid "Committing repository..."
> msgstr ""
>
> #: application/Application.py:267
> msgid "Stopping crypto..."
> msgstr ""
>
> #: application/Application.py:270
> msgid "Checkpointing repository..."
> msgstr ""
>
> #: application/Application.py:499
> msgid "Reloading Collections and Settings"
> msgstr "Reloading collections and settings..."
>
> #: application/Application.py:501
> msgid "Constructing database"
> msgstr "Constructing database..."
>
> #: application/Application.py:666
> msgid "Reloading from %(path)s"
> msgstr "Reloading from %(path)s..."
>
> #: application/Application.py:687
> msgid "Incompatible export file. Unable to reload. Chandler will  
> now restart."
> msgstr "Incompatible export file. Unable to reload. Restarting  
> Chandler..."
>
> #: application/Application.py:689
> msgid "Incomplete export file. Unable to reload. Chandler will now  
> restart."
> msgstr "Incomplete export file. Unable to reload. Restarting  
> Chandler..."
>
> #: application/Application.py:691
> msgid "Reload cancelled. Chandler will now restart."
> msgstr "Reload cancelled. Restarting Chandler..."
>
> #: application/Application.py:693
> msgid "Unable to reload file.  See chandler.log for details.  
> Chandler will now restart."
> msgstr "Unable to reload file.  Go to the Tools>>Logging>>Log  
> Window... menu for details. Chandler will now restart."
>
> #: application/Application.py:704
> msgid "Items reloaded"
> msgstr "Collections and settings reloaded."
>
> #: application/Application.py:996
> msgid "An application error occurred. Your unsaved changes will be  
> lost while Chandler attempts to recover."
> msgstr ""
>
> #: application/Application.py:997
> msgid "Chandler has experienced an error"
> msgstr ""
>
> #: application/Application.py:1001
> msgid "Chandler has experienced an error while recovering and needs  
> to restart."
> msgstr ""
>
> #: application/Application.py:1002
> msgid "Chandler will restart"
> msgstr ""
>
> #: application/Application.py:1257
> msgid ""
> "Your data was created on %(origName)s and is incompatible with  
> Chandler on %(currentName)s. To transfer your data over to % 
> (currentName)s:\n"
> "\n"
> "1. On your %(origName)s computer, start up Chandler and go to the  
> File>>Export Collections and Settings... menu to export your data\n"
> "\n"
> "2. Move the .chex export file to your %(currentName)s computer.\n"
> "\n"
> "3. On your %(currentName)s computer, start up Chandler and click  
> 'Yes' when you encounter this dialog again.\n"
> "\n"
> "4. Go to the File>>Reload Collections and Settings... menu to  
> reload your data by pointing Chandler to the .chex export file from  
> your %(origName)s computer.\n"
> "\n"
> "Do you want to start Chandler with a fresh data repository?"
> msgstr ""
> ""
>
> #: application/Application.py:1270
> msgid "Cannot open repository"
> msgstr "Cannot open repository."
>
> #: application/Application.py:1322
> msgid "Chandler starting..."
> msgstr "Starting Chandler..."
>
> #: application/Application.py:1334
> msgid "Starting cryptographic services"
> msgstr "Starting cryptographic services..."
>
> #: application/Application.py:1335
> msgid "Opening the database"
> msgstr "Opening the database..."
>
> #: application/Application.py:1336
> msgid "Loading parcels"
> msgstr "Loading parcels..."
>
> #: application/Application.py:1337
> msgid "Starting network"
> msgstr "Starting network..."
>
> #: application/Application.py:1338
> msgid "Building the main view"
> msgstr "Building the main view..."
>
> #: application/Application.py:1339
> msgid "Laying out the main view"
> msgstr "Laying out the main view..."
>
> #: application/Application.py:1340
> msgid "Committing the database"
> msgstr "Committing the database..."
>
> #: application/Application.py:1341
> msgid "Starting services"
> msgstr "Starting services..."
>
> #: application/Application.py:1361
> msgid "Version %(version)s"
> msgstr ""
>
> #: application/Application.py:1410
> msgid "%(percent)d%%"
> msgstr ""
>
> #: application/Application.py:1433
> msgid "This application has been compiled for another platform.  
> Please download the correct package from OSAF website."
> msgstr "This version of Chandler runs on a different operating  
> system. Please download the correct installer from the OSAF website."
>
> #: application/Application.py:1434
> msgid "Chandler will exit"
> msgstr "Quitting Chandler..."
>
> #: application/Plugins.py:81
> msgid "tar archives"
> msgstr ""
>
> #: application/Plugins.py:82 parcels/osaf/views/main/Main.py:1008
> #: parcels/osaf/views/main/Main.py:1049 parcels/osaf/views/main/ 
> Main.py:1128
> #: parcels/osaf/views/main/Main.py:1146
> msgid "All files"
> msgstr ""
>
> #: application/Plugins.py:83
> msgid "Install Plugin"
> msgstr ""
>
> #: application/Plugins.py:147
> msgid ""
> "%(pluginName)s is required by %(eggName)s.\n"
> "\n"
> "%(eggName)s must be deactivated first."
> msgstr ""
> ""
>
> #: application/Plugins.py:148 parcels/osaf/messages.py:31
> msgid "Error"
> msgstr ""
>
> #: application/Plugins.py:155
> msgid "All items created by plugin %(pluginName)s will be deleted."
> msgstr ""
>
> #: application/Plugins.py:156
> msgid "Confirm Deactivation"
> msgstr ""
>
> #: application/Plugins.py:164
> msgid "%(pluginName)s was deactivated."
> msgstr ""
>
> #: application/Plugins.py:174
> msgid "%(pluginName)s was activated."
> msgstr ""
>
> #: application/Plugins.py:176
> msgid "%(pluginName)s and %(pluginNames)s were activated."
> msgstr ""
>
> #: application/Printing.py:53
> msgid "Print preview"
> msgstr "Print Preview"
>
> #: application/Printing.py:70
> msgid ""
> "There was a problem printing.\n"
> "Perhaps your current printer is not set correctly?"
> msgstr ""
> "There was a problem printing.\n"
> "Check your printer and try again."
>
> #: application/Printing.py:71
> msgid "Printing"
> msgstr "Printing..."
>
> #: application/dialogs/AccountPreferences.py:50
> msgid "Remove"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:53
> msgid ""
> "The following fields are required:\n"
> "\n"
> "\tServer\n"
> "\tUser name\n"
> "\tPassword\n"
> "\tPort\n"
> "\n"
> "\n"
> "Please correct the error and try again."
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:54
> msgid ""
> "The following fields are required:\n"
> "\n"
> "\tServer\n"
> "\tPort\n"
> "\n"
> "\n"
> "Please correct the error and try again."
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:55
> msgid ""
> "The following fields are required:\n"
> "\n"
> "\tServer\n"
> "\tPath\n"
> "\tUser name\n"
> "\tPassword\n"
> "\tPort\n"
> "\n"
> "\n"
> "Please correct the error and try again."
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:56
> msgid ""
> "The following fields are required:\n"
> "\n"
> "\tUser name\n"
> "\tPassword\n"
> "\n"
> "\n"
> "Please correct the error and try again."
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:58
> msgid "Auto-configure requires a server name."
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:64
> #: application/dialogs/AccountPreferencesDialogs.py:223
> msgid "Configure Chandler folders"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:65
> msgid ""
> "Chandler will now attempt to create the following IMAP folders in  
> your account\n"
> "on '%(host)s':\n"
> "\n"
> "\tChandler Mail\n"
> "\tChander Tasks\n"
> "\tChandler Events\n"
> "\n"
> "If you have already set up Chandler folders in your account, no  
> new folders\n"
> "will be created."
> msgstr ""
> "Chandler will attempt to create the following IMAP folders in your  
> account\n"
> "on '%(host)s':\n"
> "\n"
> "\tChandler Events\n"
> "\tChandler Mail\n"
> "\tChander Tasks\n"
> "\n"
> "If you have already set up Chandler folders in your account, no  
> new folders\n"
> "will be created.\n"
> "\n"
> "Folders make take a while to show up in your email application."
>
> #: application/dialogs/AccountPreferences.py:67
> #: application/dialogs/AccountPreferencesDialogs.py:301
> msgid "Remove Chandler folders"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:68
> msgid ""
> "Chandler will now attempt to remove the\n"
> "following IMAP folders on '%(host)s':\n"
> "\n"
> "\tChandler Mail\n"
> "\tChander Tasks\n"
> "\tChandler Events\n"
> "\n"
> " Would you like to proceed?"
> msgstr ""
> "Chandler will now attempt to remove the\n"
> "following IMAP folders on '%(host)s':\n"
> "\n"
> "\tChandler Events\n"
> "\tChandler Mail\n"
> "\tChander Tasks\n"
> "\n"
> "Would you like to proceed?"
>
> #: application/dialogs/AccountPreferences.py:88
> msgid "'%(emailAddress)s' is not a valid email address"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:183
> msgid "New Incoming Mail Account"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:253
> #: parcels/osaf/pim/__init__.py:211
> msgid "Incoming mail"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:266
> msgid "New Outgoing Mail Account"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:313
> #: parcels/osaf/pim/__init__.py:219
> msgid "Outgoing mail"
> msgstr "Outgoing Mail"
>
> #: application/dialogs/AccountPreferences.py:326
> msgid "New Chandler Hub Sharing Account"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:353
> msgid "New Chandler Server Sharing Account"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:400
> msgid "New WebDAV Sharing Account"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:2126 parcels/osaf/ 
> messages.py:69
> msgid "Account Preferences"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:2138
> msgid "Mail Service Offline"
> msgstr ""
>
> #: application/dialogs/AccountPreferences.py:2141
> msgid "Account Preferences error"
> msgstr "Account Preferences Error"
>
> #: application/dialogs/AccountPreferencesDialogs.py:64
> msgid "Testing %(accountType)s account '%(accountName)s'"
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:69
> #: application/dialogs/AccountPreferencesDialogs.py:143
> msgid "Connecting to server '%(hostName)s'"
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:83
> msgid "Access denied by server."
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:84
> msgid "You have view-only access with this account."
> msgstr "You have view-only access to this account."
>
> #: application/dialogs/AccountPreferencesDialogs.py:85
> msgid "You have view and edit privileges with this account."
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:86
> msgid "Test failed with an unknown response."
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:139
> msgid "Testing '%(accountName)s'"
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:226
> msgid "Configuring folders in your account."
> msgstr "Configuring folders in your account..."
>
> #: application/dialogs/AccountPreferencesDialogs.py:234
> msgid ""
> "The following folders have been created in your account:\n"
> "\n"
> "Chandler Events - Add messages to this folder to add them to your  
> Calendar\n"
> "Dashboard. Chandler will do its best to makes sense of any date  
> and time information in the message.\n"
> "\n"
> "Chandler Mail - Add messages to this folder to add them to your  
> Mail Dashboard.\n"
> "\n"
> "Chandler Tasks - Add messages to this folder to add them to your  
> Tasks\n"
> "Dashboard.\n"
> "\n"
> "All messages added to Chandler folders will show up in your All  
> Dashboard."
> msgstr ""
> "The following folders have been created on your account:\n"
> "\n"
> "Chandler Mail - Add messages to this folder to add them to your  
> Mail Dashboard.\n"
> "\n"
> "Chandler Tasks - Add messages to this folder to add them to your  
> Tasks\n"
> "Dashboard.\n"
> "\n"
> "Chandler Events - Add messages to this folder to add them to your  
> Calendar\n"
> "Dashboard. Chandler will do its best to makes sense of any date  
> and time information in the message.\n"
> "\n"
> "All messages added to Chandler folders will show up in your All  
> Dashboard."
>
> #: application/dialogs/AccountPreferencesDialogs.py:248
> msgid "You have already set up Chandler folders in this account. No  
> new folders were created."
> msgstr ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:304
> msgid "Removing Chandler folders from this account."
> msgstr "Removing Chandler folders from this account..."
>
> #: application/dialogs/AccountPreferencesDialogs.py:307
> msgid "Chandler folders have been successfully removed."
> msgstr "Chandler folders removed."
>
> #: application/dialogs/AccountPreferencesDialogs.py:372
> msgid "Discovering  '%(hostname)s'"
> msgstr "Discovering  '%(hostname)s'..."
>
> #: application/dialogs/AccountPreferencesDialogs.py:376
> msgid "Discovering mail settings for server '%(hostName)s'"
> msgstr "Discovering mail settings for server '%(hostName)s'..."
>
> #: application/dialogs/AccountPreferencesDialogs.py:380
> msgid ""
> "\tThe following settings were found:\n"
> "\n"
> "\tType: %(type)s\n"
> "\tPort: %(port)s\n"
> "\tSecurity: %(security)s\n"
> msgstr ""
> ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:386
> msgid ""
> "Chandler was unable to auto-configure account settings\n"
> "for '%(host)s'."
> msgstr ""
> ""
>
> #: application/dialogs/AccountPreferencesDialogs.py:480
> msgid "Configure folders"
> msgstr "Configure Folders"
>
> #: application/dialogs/ActivityViewer.py:28
> msgid "Activity Viewer"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:141
> msgid "Subscriber"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:145
> msgid "An unknown party"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:149
> msgid "%(index)3d. %(em)s%(person)s%(/em)s removed this item from  
> the %(em)scollection%(/em)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:153
> msgid "%(index)3d. %(em)s%(person)s%(/em)s removed %(em)saddresses% 
> (/em)s from this item"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:155
> msgid "%(index)3d. %(em)s%(person)s%(/em)s removed this item from  
> the %(em)sCalendar%(/em)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:157
> msgid "%(index)3d. %(em)s%(person)s%(/em)s removed this item from  
> the %(em)sTask List%(/em)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:160
> msgid "%(index)3d. %(em)s%(person)s%(/em)s removed %(em)s% 
> (fieldName)s%(/em)s from this item"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:163
> msgid "%(index)3d. %(em)s%(person)s%(/em)s changed %(em)sOccurs%(/ 
> em)s to %(em)sOnce%(/em)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:166
> msgid "%(index)3d. %(em)s%(person)s%(/em)s changed the %(em)s% 
> (fieldName)s%(/em)s to %(em)s%(value)s%(/em)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:231
> msgid "Pending Changes"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:245
> msgid "Applying and discarding changes cannot be undone."
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:248
> msgid "There is 1 pending change. %(warning)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:250
> msgid "There are %(count)d pending changes. %(warning)s"
> msgstr ""
>
> #: application/dialogs/ConflictDialog.py:267
> msgid ""
> "All pending changed must be resolved before you can send Updates.  
> Edits you make on attributes with\n"
> "pending changes will not be synced to the server"
> msgstr ""
> "All pending changes must be resolved before you can send Updates.  
> Edits you make on attributes with\n"
> "pending changes will not be synced to the server"
>
> #: application/dialogs/ConflictDialog.py:273
> msgid "Decide later"
> msgstr "Decide Later"
>
> #: application/dialogs/ConflictDialog.py:290
> msgid "Any unresolved items will remain undecided. You can revisit  
> this dialog to resolve them later."
> msgstr "Unresolved conflicts will not be lost. You can revisit this  
> dialog to resolve them later."
>
> #: application/dialogs/DeleteDialog.py:37
> msgid "Remove from Dashboard"
> msgstr ""
>
> #: application/dialogs/DeleteDialog.py:38
> msgid "Removing '%(itemName)s' from the Dashboard will move it to  
> the Trash."
> msgstr ""
>
> #: application/dialogs/DeleteDialog.py:40
> msgid "Only appearance of item"
> msgstr "Delete"
>
> #: application/dialogs/DeleteDialog.py:41
> msgid "'%(itemName)s' only appears in '%(collectionName)s'.  
> Removing it will move it to the Trash."
> msgstr ""
>
> #: application/dialogs/DeleteDialog.py:43
> msgid "View-only item"
> msgstr "View-only"
>
> #: application/dialogs/DeleteDialog.py:44
> msgid "You cannot delete '%(itemName)s'. It belongs to the view- 
> only collection '%(readOnlyCollectionName)s'."
> msgstr ""
>
> #: application/dialogs/DeleteDialog.py:47
> msgid "View-only collection"
> msgstr "View-only"
>
> #: application/dialogs/DeleteDialog.py:48
> msgid "You cannot make changes to '%(collectionName)s'"
> msgstr ""
>
> #: application/dialogs/DeleteDialog.py:241
> msgid "Apply to all (%(count)s)"
> msgstr ""
>
> #: application/dialogs/FileTail.py:49
> msgid "Mark"
> msgstr ""
>
> #: application/dialogs/FileTail.py:53
> msgid "Clear"
> msgstr ""
>
> #: application/dialogs/FileTail.py:57 application/dialogs/ 
> SharingDetails.py:46
> #: application/dialogs/Util.py:435
> msgid "Copy to Clipboard"
> msgstr ""
>
> #: application/dialogs/FileTail.py:61
> msgid "Font++"
> msgstr ""
>
> #: application/dialogs/FileTail.py:65
> msgid "Font--"
> msgstr ""
>
> #: application/dialogs/GetPasswordDialog.py:31
> msgid "Create repository password"
> msgstr "Create Master Password"
>
> #: application/dialogs/GetPasswordDialog.py:33
> msgid "Enter repository password"
> msgstr "Enter Master Password"
>
> #: application/dialogs/GetPasswordDialog.py:46
> msgid "Enter password:"
> msgstr "Master password:"
>
> #: application/dialogs/GetPasswordDialog.py:56
> msgid "Confirm password:"
> msgstr ""
>
> #: application/dialogs/GetPasswordDialog.py:95
> msgid "Invalid password"
> msgstr ""
>
> #: application/dialogs/GetPasswordDialog.py:107
> msgid "Passwords did not match"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:87
> msgid "&Browse"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:88
> msgid "&File location: "
> msgstr ""
>
> #: application/dialogs/ImportExport.py:124
> msgid "Import &reminders"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:126
> msgid "Import event &status"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:131 parcels/osaf/views/main/ 
> Main.py:941
> msgid "iCalendar files|*.ics|All files (*.*)|*.*"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:145
> msgid "Import e&vents into:"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:158
> msgid "New collection"
> msgstr ""
>
> #: application/dialogs/ImportExport.py:183
> msgid "Starting import"
> msgstr "Starting import..."
>
> #: application/dialogs/ImportExport.py:221
> msgid "Saving changes"
> msgstr "Saving changes..."
>
> #: application/dialogs/PublishCollection.py:37
> msgid ""
> "Collection already exists on the server.  You may:\n"
> "\n"
> "- Sync your collection with the one on the server, or...\n"
> "- Replace the collection on the server with your local copy\n"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:186
> #: parcels/osaf/sharing/__init__.py:1643 parcels/osaf/sharing/ 
> __init__.py:1644
> #: parcels/osaf/sharing/__init__.py:1654
> #: parcels/osaf/sharing/caldav_conduit.py:357
> msgid "Unknown"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:424
> msgid ""
> "Publishing collection to server...\n"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:470
> #: application/dialogs/SubscribeCollection.py:207
> msgid "Application is in offline mode"
> msgstr "Chandler is offline."
>
> #: application/dialogs/PublishCollection.py:479
> #: application/dialogs/SubscribeCollection.py:217
> msgid "Unable to look up server address via DNS"
> msgstr "Unable to look up server address via DNS."
>
> #: application/dialogs/PublishCollection.py:481
> #: application/dialogs/SubscribeCollection.py:219
> msgid "Connection refused by server"
> msgstr "Connection refused by server."
>
> #: application/dialogs/PublishCollection.py:509
> msgid "Collection was already published from a different account"
> msgstr "Collection was already published from a different account."
>
> #: application/dialogs/PublishCollection.py:511
> msgid "Collection already exists on server"
> msgstr "Collection already exists on server."
>
> #: application/dialogs/PublishCollection.py:516
> msgid "Publish cancelled"
> msgstr "Publish cancelled."
>
> #: application/dialogs/PublishCollection.py:522
> msgid "Publish Error"
> msgstr "Error while publishing."
>
> #: application/dialogs/PublishCollection.py:524
> msgid ""
> "\n"
> "Sharing error:\n"
> "%(error)s\n"
> msgstr ""
> "\n"
> "Sharing Error:\n"
> "%(error)s\n"
>
> #: application/dialogs/PublishCollection.py:530
> msgid ""
> "\n"
> "Sharing error:\n"
> "(Can't display error message;\n"
> "See chandler.log for more details)\n"
> msgstr ""
> "\n"
> "Sharing Error:\n"
> "Can't display error message;\n"
> "Go to the Tools>>Logging>>Log Window... menu for details.\n"
>
> #: application/dialogs/PublishCollection.py:557
> msgid ""
> " Done\n"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:675
> #: application/dialogs/PublishCollection.py:685
> msgid "Publish"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:677
> msgid "Publish Free/Busy Calendar"
> msgstr ""
>
> #: application/dialogs/PublishCollection.py:685
> msgid "Manage Shared Collection"
> msgstr ""
>
> #: application/dialogs/RecurrenceDialog.py:68
> #: application/dialogs/RecurrenceDialog.py:112
> msgid "Recurring event change"
> msgstr "Recurring Event Change"
>
> #: application/dialogs/RecurrenceDialog.py:95
> msgid "All events"
> msgstr "All Events"
>
> #: application/dialogs/RecurrenceDialog.py:96
> msgid "Future events"
> msgstr "Future Events"
>
> #: application/dialogs/RecurrenceDialog.py:97
> msgid "Just this event"
> msgstr "This Event"
>
> #: application/dialogs/RecurrenceDialog.py:205
> msgid "\"%(displayName)s\" is a recurring event. Removing its  
> recurrence will cause all events except the master to be deleted.  
> Do you want to change:"
> msgstr "\"%(displayName)s\" is a recurring event. Changing the  
> occurrence rule to 'Once' will delete all occurrences except for  
> the first one. Do you want to change:"
>
> #: application/dialogs/RecurrenceDialog.py:290
> msgid "\"%(displayName)s\" is a recurring event. Do you want to add  
> to your task list:"
> msgstr "\"%(displayName)s\" is a recurring event. Do you want to  
> add to the Task list:"
>
> #: application/dialogs/RecurrenceDialog.py:293
> msgid "\"%(displayName)s\" is a recurring event. Do you want to  
> remove from your task list:"
> msgstr "\"%(displayName)s\" is a recurring event. Do you want to  
> remove from the Task list:"
>
> #: application/dialogs/RecurrenceDialog.py:295
> msgid "\"%(displayName)s\" is a recurring event. Removing it from  
> your calendar will remove all occurrences in the series. Do you  
> want to remove:"
> msgstr "\"%(displayName)s\" is a recurring event. Removing it from  
> the Calendar will remove all occurrences. Do you want to remove:"
>
> #: application/dialogs/RecurrenceDialog.py:301
> msgid "\"%(displayName)s\" is a recurring event. Do you want to  
> delete:"
> msgstr ""
>
> #: application/dialogs/RecurrenceDialog.py:303
> msgid "\"%(displayName)s\" is a recurring event. What do you want  
> to add to the collection:"
> msgstr "\"%(displayName)s\" is a recurring event. Do you want to add:"
>
> #: application/dialogs/RecurrenceDialog.py:306
> msgid "\"%(displayName)s\" is a recurring event. Do you want to  
> remove:"
> msgstr ""
>
> #: application/dialogs/RecurrenceDialog.py:314
> msgid "\"%(displayName)s\" is a recurring event. Changing its  
> recurrence may cause some events to be deleted. Do you want to  
> change:"
> msgstr "\"%(displayName)s\" is a recurring event. Changing the  
> occurrence rule may cause some events to be deleted. Do you want to  
> change:"
>
> #: application/dialogs/RecurrenceDialog.py:321
> msgid "\"%(displayName)s\" is a recurring event. Do you want to  
> change:"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:26
> msgid "1 day ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:27
> msgid "1 hour ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:28
> msgid "1 minute ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:29
> msgid "1 day from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:30
> msgid "1 hour from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:31
> msgid "1 minute from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:32
> msgid "%(numOf)d days ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:33
> msgid "%(numOf)d hours ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:34
> msgid "%(numOf)d minutes ago"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:35
> msgid "%(numOf)d days from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:36
> msgid "%(numOf)d hours from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:37
> msgid "%(numOf)d minutes from now"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:57
> msgid "Reminders"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:71 parcels/osaf/sharing/ 
> model.py:77
> #: parcels/osaf/views/main/summaryblocks.py:633
> #: parcels/osaf/views/main/summaryblocks.py:788
> msgid "Title"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:72
> #: parcels/osaf/views/main/summaryblocks.py:655
> #: parcels/osaf/views/main/summaryblocks.py:810
> msgid "Date"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:81
> msgid "Snooze for 5 minutes"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:85
> msgid "Dismiss"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:89
> msgid "Dismiss All"
> msgstr ""
>
> #: application/dialogs/ReminderDialog.py:221
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:583
> #: parcels/osaf/pim/triage.py:30 parcels/osaf/sharing/__init__.py:1634
> msgid "Now"
> msgstr ""
>
> #: application/dialogs/RestoreShares.py:94
> msgid "Getting list of shares..."
> msgstr ""
>
> #: application/dialogs/RestoreShares.py:110
> #: application/dialogs/SubscribeCollection.py:223
> #: application/dialogs/SubscribeCollection.py:232
> msgid ""
> "Sharing Error:\n"
> "%(error)s"
> msgstr ""
> ""
>
> #: application/dialogs/RestoreShares.py:186
> msgid "Restore shared collections"
> msgstr "Restore Published Shares"
>
> #: application/dialogs/SharingDetails.py:42
> msgid "Close"
> msgstr ""
>
> #: application/dialogs/SharingDetails.py:65
> msgid "Sharing Details: %s"
> msgstr "Sharing details: %s"
>
> #: application/dialogs/SharingDetails.py:68
> msgid "Collection name: "
> msgstr ""
>
> #: application/dialogs/SharingDetails.py:69
> msgid "URL: "
> msgstr ""
>
> #: application/dialogs/SharingDetails.py:70
> msgid "Last attempted sync: "
> msgstr ""
>
> #: application/dialogs/SharingDetails.py:71
> msgid "Last successful sync: "
> msgstr ""
>
> #: application/dialogs/SharingDetails.py:73
> msgid "Last error: "
> msgstr "Last Error: "
>
> #: application/dialogs/SharingDetails.py:75
> msgid "Last error details: "
> msgstr "Last Error Details: "
>
> #: application/dialogs/SharingDetails.py:83
> msgid "Sharing Details"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:56
> msgid "Start-up options for Chandler"
> msgstr "Start-up Options for Chandler"
>
> #: application/dialogs/StartupOptionsDialog.py:77
> msgid "Continue with normal startup"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:83
> msgid "Do internal clean-up, but save my data and preferences"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:88
> msgid "Discard recent changes until data integrity tests pass"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:93
> msgid "Discard recent changes until application no longer fails to  
> start"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:98
> msgid "Discard all my data and start from scratch"
> msgstr "Discard all my data and start with a fresh repository"
>
> #: application/dialogs/StartupOptionsDialog.py:104
> msgid "Make a snapshot of all data to submit with a bug report,  
> then exit"
> msgstr "Make a snapshot of all my data to submit with a bug report,  
> then quit"
>
> #: application/dialogs/StartupOptionsDialog.py:109
> msgid "Discard all my data and restore from a previous snapshot  
> (this can take a few minutes)"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:114
> msgid "Restore from a previous snapshot (this can take a few minutes)"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:155
> msgid "Snapshot to restore?"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:174
> msgid "Save snapshot as..."
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:176
> msgid "ChandlerSnapshot.tgz"
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:195
> msgid "Failed to encrypt passwords."
> msgstr ""
>
> #: application/dialogs/StartupOptionsDialog.py:196
> msgid "Password protection failed"
> msgstr "Password protection failed."
>
> #: application/dialogs/SubscribeCollection.py:154
> msgid "Moving collection into My Items"
> msgstr "Moving collection into Dashboard..."
>
> #: application/dialogs/SubscribeCollection.py:203
> msgid "Collection was not found"
> msgstr "Collection was not found."
>
> #: application/dialogs/SubscribeCollection.py:205
> msgid "You are already subscribed to this collection"
> msgstr "You are already subscribed to this collection."
>
> #: application/dialogs/SubscribeCollection.py:209
> msgid "Invalid URL"
> msgstr ""
>
> #: application/dialogs/SubscribeCollection.py:226
> msgid "Subscribe cancelled"
> msgstr "Subscribe cancelled."
>
> #: application/dialogs/SubscribeCollection.py:228
> msgid ""
> "There is a problem with the URL:\n"
> "%(error)s"
> msgstr ""
> ""
>
> #: application/dialogs/SubscribeCollection.py:236
> msgid "Subscribe Error"
> msgstr ""
>
> #: application/dialogs/SubscribeCollection.py:254
> msgid "Spaces are not allowed in URLs"
> msgstr "Spaces are not allowed in URLs."
>
> #: application/dialogs/SubscribeCollection.py:270
> msgid "In progress..."
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:103
> #: parcels/osaf/pim/calendar/TimeZone.py:226
> msgid "Pacific/Honolulu"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:104
> #: parcels/osaf/pim/calendar/TimeZone.py:227
> msgid "America/Anchorage"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:105
> #: parcels/osaf/pim/calendar/TimeZone.py:228
> msgid "America/Los_Angeles"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:106
> #: parcels/osaf/pim/calendar/TimeZone.py:229
> msgid "America/Denver"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:107
> #: parcels/osaf/pim/calendar/TimeZone.py:230
> msgid "America/Chicago"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:108
> #: parcels/osaf/pim/calendar/TimeZone.py:231
> msgid "America/New_York"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:109
> #: parcels/osaf/pim/calendar/TimeZone.py:232
> msgid "World/Floating"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:110
> msgid "Europe/London"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:111
> msgid "Europe/Paris"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:112
> msgid "Asia/Shanghai"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:113
> msgid "Asia/Calcutta"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:114
> msgid "Australia/Sydney"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:119
> msgid "Name"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:121
> msgid "Offset"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:123
> msgid "Shown"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:140
> #: application/dialogs/TurnOnTimezones.py:30
> #: application/dialogs/TurnOnTimezones.py:35
> #: application/dialogs/TurnOnTimezones.py:40
> msgid "Use time zones"
> msgstr "Use Time zones"
>
> #: application/dialogs/TimeZoneList.py:148
> msgid "View all time zones"
> msgstr ""
>
> #: application/dialogs/TimeZoneList.py:387
> msgid "More..."
> msgstr ""
>
> #: application/dialogs/TurnOnTimezones.py:32
> msgid "To view events and alarms correctly, would you like to  
> assign a time zone to your existing items?"
> msgstr ""
>
> #: application/dialogs/TurnOnTimezones.py:37
> msgid "Would you like to assign a time zone to your items before  
> sharing them with others?"
> msgstr ""
>
> #: application/dialogs/TurnOnTimezones.py:42
> msgid "Would you like to assign a time zone to your items before  
> exporting them?"
> msgstr ""
>
> #: application/dialogs/TurnOnTimezones.py:122
> msgid "Don't ask again"
> msgstr ""
>
> #: application/dialogs/UpgradeDialog.py:45
> msgid "Reload options for Chandler"
> msgstr ""
>
> #: application/dialogs/UpgradeDialog.py:62
> msgid "Your repository was created by an incompatible version of  
> Chandler."
> msgstr "Your data repository was created by an incompatible version  
> of Chandler."
>
> #: application/dialogs/UpgradeDialog.py:63
> msgid "Would you like to remove all data from your repository?"
> msgstr "Would you like to remove all data and start with a fresh  
> repository?"
>
> #: application/dialogs/UpgradeDialog.py:65
> msgid "This new version of Chandler is incompatible with your data.  
> Would you like to:"
> msgstr "This version of Chandler is incompatible with your data.  
> Would you like to:"
>
> #: application/dialogs/UpgradeDialog.py:66
> msgid "Start up with a fresh Chandler. (Any data you have from a  
> previous version of Chandler will be lost.)"
> msgstr "Start up with a fresh repository. (Any data you have from a  
> previous version of Chandler will be lost.)"
>
> #: application/dialogs/UpgradeDialog.py:75
> msgid "Quit and follow the directions linked below to migrate your  
> data."
> msgstr "Click on the link below to learn how to migrate your data  
> and quit Chandler."
>
> #: application/dialogs/UpgradeDialog.py:80
> msgid "Migration Directions"
> msgstr ""
>
> #: application/dialogs/Util.py:176
> msgid "You have addressed this message to invalid email addresses."
> msgstr "Invalid email addresses."
>
> #: application/dialogs/Util.py:199 parcels/osaf/views/main/Main.py:774
> #: parcels/osaf/views/main/Main.py:788
> msgid "Mail Error"
> msgstr ""
>
> #: application/dialogs/Util.py:231
> msgid " Edit Account Settings "
> msgstr ""
>
> #: application/dialogs/Util.py:237
> msgid "Fix email addresses"
> msgstr "Fix Email Addresses"
>
> #: application/dialogs/Util.py:241
> msgid "Send anyway"
> msgstr "Send Anyway"
>
> #: application/dialogs/Util.py:832
> msgid "Try Again"
> msgstr ""
>
> #: application/dialogs/Util.py:836 application/dialogs/Util.py:862
> msgid "Close Window"
> msgstr ""
>
> #: application/dialogs/Util.py:856
> msgid "Apply settings"
> msgstr "Apply Settings"
>
> #: application/dialogs/autosyncprefs.py:26
> msgid "Sync Preferences"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:59
> msgid "&Synchronize"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:66
> msgid "Manually"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:67
> msgid "Every 30 minutes"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:68
> msgid "Every hour"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:69
> msgid "Every 2 hours"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:70
> msgid "Every 6 hours"
> msgstr ""
>
> #: application/dialogs/autosyncprefs.py:71
> msgid "Every day"
> msgstr ""
>
> #: application/feedback.py:84 parcels/osaf/views/main/menus.py:244
> msgid "&Quit"
> msgstr ""
>
> #: application/feedback.py:254
> msgid "Restarting..."
> msgstr ""
>
> #: application/feedback.py:274
> msgid ""
> "\n"
> "Feedback report ID: %(feedbackId)s"
> msgstr ""
>
> #: application/feedback.py:283
> msgid ""
> "\n"
> "Feedback report saved locally at: %(feedbackFile)s"
> msgstr ""
> "\n"
> "Your feedback report has been saved locally at: %(feedbackFile)s"
>
> #: application/feedback.py:295
> msgid "Sending..."
> msgstr ""
>
> #: application/feedback.py:317
> msgid "Failed to send"
> msgstr "Failed to send."
>
> #: application/feedback.py:319 parcels/osaf/messages.py:35
> msgid "Sent"
> msgstr "Sent."
>
> #: parcels/osaf/activity.py:122
> msgid "Cancelled by user"
> msgstr "Cancelled by user."
>
> #: parcels/osaf/app/__init__.py:35
> msgid "Me"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:38
> msgid "User"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:104
> msgid "Welcome to Chandler %(version)s"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:111
> msgid "Open Source Applications Foundation"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:124
> msgid ""
> "Welcome to Chandler %(version)s. Here is a list of resources to  
> help you get started:\n"
> "\n"
> "1. Get a tour of Chandler at (%(url1)s).\n"
> "2. Sign up for a sharing account on Chandler Hub (%(url2)s).\n"
> "3. Consult our FAQ (%(url3)s).\n"
> "4. Read about known issues (%(url4)s).\n"
> "5. Ask questions and give us feedback by joining the Chandler- 
> Users mailing list (%(url5)s).\n"
> "6. Learn more about the project on our wiki (%(url6)s).\n"
> "7. Get involved and contribute to the project (%(url7)s).\n"
> "\n"
> "Thank you for trying Chandler!\n"
> "\n"
> "The Chandler Team"
> msgstr ""
> "Welcome to Chandler %(version)s. Here is a list of resources to  
> help you get started:\n"
> "\n"
> "1. Get a tour of Chandler at (%(url1)s).\n"
> "2. Sign up for a sharing account on Chandler Hub (%(url2)s).\n"
> "3. Consult our FAQ (%(url3)s).\n"
> "4. Read about known issues (%(url4)s).\n"
> "5. Ask questions and give us feedback by joining the Chandler- 
> Users mailing list (%(url5)s).\n"
> "6. Learn more about the project on our wiki (%(url6)s).\n"
> "7. Get involved and contribute to the project (%(url7)s).\n"
> "\n"
> "Thank you for trying Chandler!\n"
> "\n"
> "The Chandler Team"
>
> #: parcels/osaf/app/__init__.py:172
> msgid "Work"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:173
> msgid "Home"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:174
> msgid "Fun"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:183
> msgid "Try sharing a Home task list"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:205
> msgid "Play around with the Calendar"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:222
> msgid "Download Chandler"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:240
> msgid "Set up your accounts"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:258
> msgid "Delete sample items and collections"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:264
> msgid "The items and collections Chandler creates at startup are  
> examples.  Feel free to delete them."
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:332
> msgid "F1 - Create a New Script"
> msgstr "F1 - Create a new script"
>
> #: parcels/osaf/app/__init__.py:340
> msgid "F2 - Block under cursor"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:347
> msgid "F3 - Item selected"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:355
> msgid "F4 - Browse selected item"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:362
> msgid "Test - Event timing example"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:370
> msgid "Cleanup after tests"
> msgstr "Clean up after tests"
>
> #: parcels/osaf/app/__init__.py:377
> msgid "F5 - Paste new item"
> msgstr ""
>
> #: parcels/osaf/app/__init__.py:385
> msgid "F6 - Print selected item to stdout"
> msgstr ""
>
> #: parcels/osaf/app/compact.py:34
> msgid "Purge Obsolete Data"
> msgstr ""
>
> #: parcels/osaf/app/compact.py:44
> msgid "Chandler needs to purge obsolete data. This operation may  
> take a while but will make the application run faster."
> msgstr ""
>
> #: parcels/osaf/app/compact.py:50
> msgid "Compacting will start automatically in %d seconds."
> msgstr "Purging will start automatically in %d seconds."
>
> #: parcels/osaf/app/compact.py:64
> msgid "Compact Now"
> msgstr "Purge Now"
>
> #: parcels/osaf/app/compact.py:66
> msgid "Compact Later"
> msgstr "Purge Later"
>
> #: parcels/osaf/app/compact.py:92
> msgid "Compacting repository (stage %d)"
> msgstr "Purging... (stage %d)"
>
> #: parcels/osaf/app/compact.py:221
> msgid "No versions to compact, skipping"
> msgstr "No data to purge..."
>
> #: parcels/osaf/app/compact.py:236
> msgid "Compacting repository failed, see chandler.log"
> msgstr "Purging failed. Go to the Tools>>Logging>>Log Window...  
> menu for details."
>
> #: parcels/osaf/app/compact.py:239
> msgid "Reclaimed %d items, %d values, %d refs, %d index entries, %d  
> names, %d lobs, %d blocks, %d lucene documents"
> msgstr "Reclaimed %d items, %d values, %d refs, %d index entries, % 
> d names, %d lobs, %d blocks, %d lucene documents."
>
> #: parcels/osaf/dumpreload.py:178 parcels/osaf/dumpreload.py:282
> msgid "Counting records..."
> msgstr ""
>
> #: parcels/osaf/dumpreload.py:233
> msgid "You will need to supply the master password that was used to  
> protect the account passwords in the file."
> msgstr "Please enter the master password you used to protect this  
> file to reload account passwords."
>
> #: parcels/osaf/dumpreload.py:234 parcels/osaf/framework/ 
> MasterPassword.py:345
> #: parcels/osaf/framework/MasterPassword.py:437 parcels/osaf/ 
> settings.py:658
> msgid "Protect Passwords"
> msgstr ""
>
> #: parcels/osaf/dumpreload.py:245 parcels/osaf/settings.py:665
> msgid "If you do not supply the master password, all passwords will  
> be reset. Reset?"
> msgstr "If you do not remember your master password, all account  
> passwords will be deleted. Delete account passwords?"
>
> #: parcels/osaf/dumpreload.py:246 parcels/osaf/settings.py:666
> msgid "Reset Master Password?"
> msgstr "Reset master password?"
>
> #: parcels/osaf/framework/MasterPassword.py:97
> msgid "No master password"
> msgstr "No master password."
>
> #: parcels/osaf/framework/MasterPassword.py:117
> msgid "Master password was incorrect, please try again."
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:118
> #: parcels/osaf/framework/MasterPassword.py:168
> msgid "Incorrect password"
> msgstr "Incorrect password."
>
> #: parcels/osaf/framework/MasterPassword.py:167
> msgid "Old password was incorrect, please try again."
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:231
> msgid "Protect Passwords?"
> msgstr "Protect Passwords"
>
> #: parcels/osaf/framework/MasterPassword.py:232
> msgid "Anyone who gets access to your data can view your account  
> passwords. Do you want to protect your account passwords by  
> encrypting them with the master password?"
> msgstr "Anyone who gains access to your data can view your account  
> passwords. Do you want to protect your account passwords by  
> encrypting them with a master password?"
>
> #: parcels/osaf/framework/MasterPassword.py:233
> msgid "Never ask again."
> msgstr "Never ask again"
>
> #: parcels/osaf/framework/MasterPassword.py:362
> #: parcels/osaf/framework/MasterPassword.py:472
> msgid "Master pass&word:"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:370
> msgid "&Timeout (minutes):"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:452
> msgid "Account passwords are protected with a master password."
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:460
> msgid "Ol&d master password:"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:470
> msgid "New master pass&word:"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:481
> msgid "Con&firm password:"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:489
> msgid "Quality meter:"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:496
> msgid "Do not forget the master password or the protected  
> information will be lost."
> msgstr "Do not forget your master password or your account  
> passwords will be deleted the next time you are asked to enter your  
> master password."
>
> #: parcels/osaf/framework/MasterPassword.py:505
> msgid "&Reset Master Password..."
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:509
> msgid "Change Master Passw&ord"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:511
> msgid "Pr&otect Passwords"
> msgstr ""
>
> #: parcels/osaf/framework/MasterPassword.py:561
> msgid ""
> "Account passwords will be deleted.\n"
> "Are you sure you want to reset Master Password?"
> msgstr ""
> "Account passwords will be deleted.\n"
> "Are you sure you want to reset your Master Password?"
>
> #: parcels/osaf/framework/MasterPassword.py:562
> msgid "Confirm Reset?"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:412
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:479
> #: parcels/osaf/framework/blocks/calendar/minical.py:429
> msgid "Today"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:415
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:480
> msgid "Yesterday"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:418
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:479
> msgid "Tomorrow"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:480
> msgid "End of week"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:582
> msgid "Evening"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:582
> msgid "Lunch"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:582
> msgid "Noon"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:583
> msgid "Breakfast"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:583
> msgid "Midnight"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:584
> msgid "Dinner"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:584
> msgid "Morning"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:584
> msgid "Tonight"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:585
> msgid "End of day"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/AttributeEditors.py:585
> msgid "Night"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/StringAttributeEditor.py: 
> 463
> msgid ",;"
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/StringAttributeEditor.py: 
> 618
> #: parcels/osaf/pim/calendar/Calendar.py:745 parcels/osaf/pim/ 
> mail.py:2403
> #: parcels/osaf/views/detail/detail.py:798
> msgid ", "
> msgstr ""
>
> #: parcels/osaf/framework/attributeEditors/StringAttributeEditor.py: 
> 638
> msgid ","
> msgstr ""
>
> #: parcels/osaf/framework/blocks/DragAndDrop.py:481
> msgid "Cannot cut from this collection."
> msgstr ""
>
> #: parcels/osaf/framework/blocks/DragAndDrop.py:482
> msgid "Can't cut"
> msgstr "Cannot cut."
>
> #: parcels/osaf/framework/blocks/MenusAndToolbars.py:454
> msgid "Create new items or type /Find to search"
> msgstr "Create new items or enter '/Find' to search."
>
> #: parcels/osaf/framework/blocks/PimBlocks.py:191
> msgid "Change the privacy of a shared item?"
> msgstr "Never share this item"
>
> #: parcels/osaf/framework/blocks/PimBlocks.py:192
> msgid "Other people may be subscribed to share this item; are you  
> sure you want to mark it as private?"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarBlocks.py:667
> msgid ":."
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarBlocks.py:688
> msgid "Today's events"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarBlocks.py:743
> msgid "- minimize"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarBlocks.py:749
> msgid "+ %(numberOfEvents)d more..."
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:1779
> msgid "This item is read-only. You cannot change the title of read- 
> only items."
> msgstr "This event is view-only. You cannot change the title of  
> view-only items."
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:1779
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:1786
> #: parcels/osaf/framework/blocks/calendar/CollectionCanvas.py:1076
> msgid "Warning"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:1786
> msgid "This item is read-only. You cannot change the time of read- 
> only items."
> msgstr "This event is view-only. You cannot change the time of view- 
> only events."
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:2247
> msgid "Go to date"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:2248
> msgid "Enter a date in the form %(dateFormat)s"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:2451
> msgid "Week"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:2576
> #: parcels/osaf/framework/blocks/calendar/minical.py:599
> msgid "%(currentMonth)s %(currentYear)d"
> msgstr ""
>
> #: parcels/osaf/framework/blocks/calendar/CalendarCanvas.py:2580
> msgid "%(currentMonth1)s - %(currentMonth2)s %(currentYear)d"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:52
> msgid "Certificate Store"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:69
> msgid "&Certificates"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:75
> msgid "&Manage Certificates"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:94
> msgid "&Import Certificate..."
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:103
> msgid "purpose"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:114
> msgid "trust"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:125
> msgid "fingerprint"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/blocks.py:136
> msgid "algorithm"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/certificate.py:229
> msgid "Could not determine certificate purpose."
> msgstr "Could not determine purpose of certificate."
>
> #: parcels/osaf/framework/certstore/certificate.py:255
> msgid "This certificate has already been imported."
> msgstr ""
>
> #: parcels/osaf/framework/certstore/certificate.py:267
> msgid "Unable to verify the certificate."
> msgstr "Unable to verify certificate."
>
> #: parcels/osaf/framework/certstore/certificate.py:297
> msgid "Choose a certificate to import"
> msgstr "Choose a certificate to import."
>
> #: parcels/osaf/framework/certstore/certificate.py:300
> msgid "PEM files|*.pem;*.crt|All files (*.*)|*.*"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/certificate.py:315
> msgid "Trust the authenticity of this certificate."
> msgstr "Trust this certificate."
>
> #: parcels/osaf/framework/certstore/certificate.py:317
> msgid "Trust this certificate to sign site certificates."
> msgstr ""
>
> #: parcels/osaf/framework/certstore/certificate.py:342
> msgid ""
> "Could not add certificate from: %(path)s\n"
> "Check the path and try again."
> msgstr ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:51
> msgid "Import certificate?"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:65
> msgid ""
> "Do you want to import this certificate?\n"
> "Purpose: %(certPurpose)s\n"
> "SHA1 fingerprint: %(fingerprint)s"
> msgstr ""
> ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:144
> msgid "Trust site certificate?"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:158
> msgid ""
> "Do you want to trust this certificate?\n"
> "SHA1 fingerprint: %s"
> msgstr ""
> ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:160
> msgid ""
> "This certificate is already known but not trusted.\n"
> "Do you want to trust this certificate?\n"
> "SHA1 fingerprint: %s"
> msgstr ""
> "This certificate is already known but not trusted.\n"
> "Do you want to trust this certificate now?\n"
> "SHA1 fingerprint: %s"
>
> #: parcels/osaf/framework/certstore/dialogs.py:177
> msgid "Trust the authenticity of this certificate until program exit."
> msgstr "Trust the authenticity of this certificate until you quit  
> Chandler."
>
> #: parcels/osaf/framework/certstore/dialogs.py:178
> msgid "Trust the authenticity of this certificate permanently."
> msgstr ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:253
> msgid "Ignore SSL error?"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:271
> msgid ""
> "There was an error with this SSL connection.\n"
> "The error was: %s.\n"
> "Ignoring this error may be dangerous!\n"
> "SHA1 fingerprint: %s"
> msgstr ""
> ""
>
> #: parcels/osaf/framework/certstore/dialogs.py:286
> msgid "Ignore this error"
> msgstr "Ignore Error"
>
> #: parcels/osaf/framework/certstore/dialogs.py:289
> msgid "Disconnect"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/errors.py:24
> #: parcels/osaf/framework/certstore/errors.py:51
> msgid "unable to get issuer certificate"
> msgstr "Unable to get issuer certificate."
>
> #: parcels/osaf/framework/certstore/errors.py:25
> msgid "unable to decrypt certificate's signature"
> msgstr "Unable to decrypt certificate's signature."
>
> #: parcels/osaf/framework/certstore/errors.py:26
> msgid "unable to decode issuer public key"
> msgstr "Unable to decode issuer public key."
>
> #: parcels/osaf/framework/certstore/errors.py:27
> msgid "certificate signature failure"
> msgstr "Certificate signature failure."
>
> #: parcels/osaf/framework/certstore/errors.py:28
> msgid "certificate is not yet valid"
> msgstr "Certificate is not yet valid."
>
> #: parcels/osaf/framework/certstore/errors.py:29
> msgid "certificate has expired"
> msgstr "Certificate has expired."
>
> #: parcels/osaf/framework/certstore/errors.py:30
> msgid "format error in certificate's notBefore field"
> msgstr "Certificate notBefore field is formatted incorrectly."
>
> #: parcels/osaf/framework/certstore/errors.py:31
> msgid "format error in certificate's notAfter field"
> msgstr ""
>
> #: parcels/osaf/framework/certstore/errors.py:32
> msgid "out of memory"
> msgstr "Out of memory."
>
> #: parcels/osaf/framework/certstore/errors.py:33
> msgid "self signed certificate"
> msgstr "Self-signed certificate."
>
> #: parcels/osaf/framework/certstore/errors.py:34
> msgid "self signed certificate in certificate chain"
> msgstr "Self-signed certificate in certificate chain."
>
> #: parcels/osaf/framework/certstore/errors.py:35
> msgid "unable to get local issuer certificate"
> msgstr "Unable to get local issuer certificate."
>
> #: parcels/osaf/framework/certstore/errors.py:36
> msgid "unable to verify the first certificate"
> msgstr "Unable to verify the first certificate."
>
> #: parcels/osaf/framework/certstore/errors.py:37
> msgid "invalid CA certificate"
> msgstr "Invalid CA certificate."
>
> #: parcels/osaf/framework/certstore/errors.py:38
> msgid "path length constraint exceeded"
> msgstr "Path is too long."
>
> #: parcels/osaf/framework/certstore/errors.py:39
> msgid "unsupported certificate purpose"
> msgstr "Unsupported certificate purpose."
>
> #: parcels/osaf/framework/certstore/errors.py:40
> msgid "certificate not trusted"
> msgstr "Certificate not trusted."
>
> #: parcels/osaf/framework/certstore/errors.py:41
> msgid "certificate rejected"
> msgstr "Certificate rejected."
>
> #: parcels/osaf/framework/certstore/ssl.py:143
> msgid "Could not set cipher list"
> msgstr "Could not set cipher list."
>
> #: parcels/osaf/framework/password.py:132
> #: parcels/osaf/framework/password.py:227
> msgid "Password is too long"
> msgstr "Password is too long."
>
> #: parcels/osaf/framework/script_recording/__init__.py:141
> msgid "Save script as ..."
> msgstr "Untitled"
>
> #: parcels/osaf/framework/script_recording/__init__.py:165
> msgid "Stop &recording"
> msgstr "Stop &Recording"
>
> #: parcels/osaf/framework/script_recording/__init__.py:167
> msgid "&Record script..."
> msgstr "&Record Script..."
>
> #: parcels/osaf/framework/script_recording/__init__.py:355
> msgid "Scriptin&g"
> msgstr ""
>
> #: parcels/osaf/framework/script_recording/__init__.py:369
> msgid "&Record script"
> msgstr "&Record Script"
>
> #: parcels/osaf/framework/script_recording/__init__.py:370
> msgid "Record commands in Chandler"
> msgstr ""
>
> #: parcels/osaf/framework/script_recording/__init__.py:386
> msgid "I&nclude tests in script"
> msgstr "I&nclude Tests in Script"
>
> #: parcels/osaf/framework/script_recording/__init__.py:387
> msgid "Includes code in the script to verify that the UI's data  
> matches the state when the script was recorded"
> msgstr ""
>
> #: parcels/osaf/framework/script_recording/__init__.py:401
> msgid "R&un Script"
> msgstr ""
>
> #: parcels/osaf/framework/script_recording/__init__.py:418
> msgid "&Open script..."
> msgstr "&Open Script..."
>
> #: parcels/osaf/framework/script_recording/__init__.py:419
> msgid "Playback a script you recorded"
> msgstr "Play back a script you recorded"
>
> #: parcels/osaf/framework/scripting/blocks.py:43
> msgid "Hotkey"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:57
> msgid "Open"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:66
> #: parcels/osaf/views/main/summaryblocks.py:842
> msgid "Save"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:75
> msgid "Save As"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:86
> msgid "test"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:106
> msgid "path"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:181
> msgid "Open a script file"
> msgstr "Open Script File"
>
> #: parcels/osaf/framework/scripting/blocks.py:185
> msgid "Save this script file as"
> msgstr "Save Script File As"
>
> #: parcels/osaf/framework/scripting/blocks.py:206
> msgid "All files (*.*)|*.*"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/blocks.py:206
> msgid "Python files|*.py|"
> msgstr ""
>
> #: parcels/osaf/framework/scripting/script.py:104
> msgid ""
> "The file associated with this script has been changed,\n"
> "but those changes are older than your recent edits.\n"
> "\n"
> "Do you want to overwrite those file changes with your\n"
> "recent edits of this script?"
> msgstr ""
> "The file associated with this script has been changed,\n"
> "but those changes are older than your recent edits.\n"
> "\n"
> "Do you want to overwrite those changes with your\n"
> "recent edits?"
>
> #: parcels/osaf/framework/scripting/script.py:108
> msgid "Overwrite script file?"
> msgstr "Overwrite Script File?"
>
> #: parcels/osaf/mail/base.py:520
> msgid "There was an error in the SSL Layer."
> msgstr "SSL error."
>
> #: parcels/osaf/mail/constants.py:27
> msgid "Chandler Mail"
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:28
> msgid "Chandler Tasks"
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:29
> msgid "Chandler Events"
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:31
> msgid "Email Address %(emailAddress)s is not valid"
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:34
> msgid ""
> "The following error was raised:\n"
> "\n"
> "\t%(errText)s"
> msgstr ""
> "Mail error:\n"
> "\n"
> "\t%(errText)s"
>
> #: parcels/osaf/mail/constants.py:35
> msgid ""
> "The server '%(hostName)s' raised the following error:\n"
> "\n"
> "\t%(errText)s"
> msgstr ""
> "Error from mail server'%(hostName)s':\n"
> "\n"
> "\t%(errText)s"
>
> #: parcels/osaf/mail/constants.py:36
>
> #: parcels/osaf/mail/constants.py:36
> msgid "Connection to server '%(hostName)s' was successful."
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:37
> msgid "The Server only allows secure login. Please enable TLS or SSL."
> msgstr "The server requires secure login. Please enable TLS or SSL."
>
> #: parcels/osaf/mail/constants.py:38
> msgid "%(accountName)s: offline mode no operation was performed"
> msgstr "%(accountName)s is offline. No operation was performed."
>
> #: parcels/osaf/mail/constants.py:39
> msgid "%(accountName)s: connecting to server %(serverDNSName)s"
> msgstr "%(accountName)s: Connecting to server %(serverDNSName)s..."
>
> #: parcels/osaf/mail/constants.py:40
> msgid "Unable to connect to server please try again later"
> msgstr "Unable to connect to server. Please try again later."
>
> #: parcels/osaf/mail/constants.py:41
> msgid "Communication with the Server timed out. Please try again  
> later."
> msgstr "Connection to server timed out. Please try again later."
>
> #: parcels/osaf/mail/constants.py:44
> msgid "%(accountName)s: no new messages found"
> msgstr "%(accountName)s: No new messages found."
>
> #: parcels/osaf/mail/constants.py:45
> msgid "%(accountName)s: checking for new mail messages ..."
> msgstr "%(accountName)s: Checking for new messages..."
>
> #: parcels/osaf/mail/constants.py:47
> msgid "Unable to determine the 'Inbox' status on the IMAP Server"
> msgstr "Unable to determine status of Inbox on server."
>
> #: parcels/osaf/mail/constants.py:50
> msgid "The Reply-To Address %(emailAddress)s is not valid"
> msgstr "The Reply-to address %(emailAddress)s is not valid"
>
> #: parcels/osaf/mail/constants.py:51
> msgid "A From Address is required to send a Mail Message"
> msgstr "A From: address is required to send this message."
>
> #: parcels/osaf/mail/constants.py:52
> msgid "A To Address is required to send an SMTP Mail Message"
> msgstr "At least one valid To: email address is required to send  
> this message."
>
> #: parcels/osaf/mail/constants.py:54
> msgid "%(accountName)s: Chandler Mail is offline, \"%(subject)s\"  
> queued for sending"
> msgstr "%(accountName)s: Chandler mail is offline, \"%(subject)s\"  
> has been queued and will be sent as soon as Mail is put back online."
>
>
> #: parcels/osaf/mail/constants.py:55
> msgid "%(accountName)s: sending \"%(subject)s\""
> msgstr "%(accountName)s: Sending \"%(subject)s\"..."
>
> #: parcels/osaf/mail/constants.py:56
> msgid "%(accountName)s: \"%(subject)s\" sent"
> msgstr "%(accountName)s: \"%(subject)s\" sent."
>
> #: parcels/osaf/mail/constants.py:60
> msgid ""
> "Chandler Mail is currently offline.\n"
> "To perform this action, Mail must be in online mode."
> msgstr "Cannot perform request. Chandler mail is offline."
>
> #: parcels/osaf/mail/constants.py:63
> msgid ""
> "The POP3 Server does not support the 'UIDL' command.\n"
> "This command is required by Chandler."
> msgstr ""
> "Invalid server. The POP3 server does not support the 'UIDL'  
> command.\n"
> "This command is required by Chandler."
>
> #: parcels/osaf/mail/constants.py:68
> msgid "1#%(accountName)s: %(numberTotal)s message downloaded to  
> Chandler (New: %(numberNew)s, Updates: %(numberUpdates)s,  
> Duplicates: %(numberDuplicates)s)|1<%(accountName)s: %(numberTotal) 
> s messages downloaded to Chandler (New: %(numberNew)s, Updates: % 
> (numberUpdates)s, Duplicates: %(numberDuplicates)s)"
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:70
> msgid "1#%(accountName)s: downloading %(numberOfMessages)s  
> message ...|1<%(accountName)s: downloading %(numberOfMessages)s  
> messages ..."
> msgstr "1#%(accountName)s: Downloading %(numberOfMessages)s  
> message...|1<%(accountName)s: Downloading %(numberOfMessages)s  
> messages..."
>
> #: parcels/osaf/mail/constants.py:72
> msgid "%(accountName)s: searching %(start)s - %(end)s of %(total)s  
> messages for Chandler Mail"
> msgstr "%(accountName)s: Searching %(start)s - %(end)s of %(total)s  
> messages..."
>
> #: parcels/osaf/mail/constants.py:74
> msgid "%(accountName)s: searching %(start)s - %(end)s of %(total)s  
> messages for Chandler Mail in your '%(folderDisplayName)s'"
> msgstr "%(accountName)s: Searching %(start)s - %(end)s of %(total)s  
> messages in your '%(folderDisplayName)s'..."
>
> #: parcels/osaf/mail/constants.py:76
> msgid ""
> "%(accountName)s is not configured correctly.\n"
> "The account settings contain no Inbox folder."
> msgstr ""
>
> #: parcels/osaf/mail/constants.py:78
> msgid "%(accountName)s: commiting %(start)s - %(end)s of %(total)s  
> messages from '%(folderDisplayName)s'"
> msgstr "%(accountName)s: Commiting %(start)s - %(end)s of %(total)s  
> messages from '%(folderDisplayName)s'..."
>
> #: parcels/osaf/mail/constants.py:80
> msgid "%(accountName)s: commiting %(start)s - %(end)s of %(total)s  
> messages"
> msgstr "%(accountName)s: Commiting %(start)s - %(end)s of %(total)s  
> messages..."
>
> #: parcels/osaf/mail/message.py:455
> msgid "Title: %(titleText)s"
> msgstr ""
>
> #: parcels/osaf/mail/message.py:459
> msgid "Notes: %(notesText)s"
> msgstr ""
>
> #: parcels/osaf/mail/message.py:466
> msgid ""
> "\n"
> "\n"
> "Event Details\n"
> "---"
> msgstr ""
>
> #: parcels/osaf/mail/message.py:468
> msgid ""
> "\n"
> "\n"
> "Task Details\n"
> "---"
> msgstr ""
>
> #: parcels/osaf/mail/message.py:738
> msgid "ChandlerItem.ics"
> msgstr ""
>
> #: parcels/osaf/mail/utils.py:300
> msgid "Title: "
> msgstr ""
>
> #: parcels/osaf/messages.py:20 parcels/osaf/pim/calendar/ 
> Calendar.py:710
> #: parcels/osaf/sharing/__init__.py:449 parcels/osaf/sharing/ 
> __init__.py:471
> #: parcels/osaf/sharing/cosmo.py:131
> #: parcels/osaf/sharing/recordset_conduit.py:217
> #: parcels/osaf/sharing/stateless.py:72
> msgid "Untitled"
> msgstr ""
>
> #: parcels/osaf/messages.py:21
> msgid "me"
> msgstr ""
>
> #: parcels/osaf/messages.py:24
> msgid "&Undo"
> msgstr ""
>
> #: parcels/osaf/messages.py:25
> msgid "&Redo"
> msgstr ""
>
> #: parcels/osaf/messages.py:26
> msgid "Cu&t"
> msgstr ""
>
> #: parcels/osaf/messages.py:27
> msgid "&Copy"
> msgstr ""
>
> #: parcels/osaf/messages.py:28
> msgid "&Paste"
> msgstr ""
>
> #: parcels/osaf/messages.py:29
> msgid "C&lear"
> msgstr ""
>
> #: parcels/osaf/messages.py:30
> msgid "Select &All"
> msgstr ""
>
> #: parcels/osaf/messages.py:34
> msgid "Send"
> msgstr ""
>
> #: parcels/osaf/messages.py:36
> msgid "Update"
> msgstr ""
>
> #: parcels/osaf/messages.py:37
> msgid "Updated"
> msgstr ""
>
> #: parcels/osaf/messages.py:38
> msgid "Reply"
> msgstr ""
>
> #: parcels/osaf/messages.py:39
> msgid "Reply All"
> msgstr ""
>
> #: parcels/osaf/messages.py:40
> msgid "Forward"
> msgstr ""
>
> #: parcels/osaf/messages.py:41 parcels/osaf/messages.py:52
> msgid "Address this item"
> msgstr