sugar-record-activity-82/0000755000000000000000000000000011417267661014245 5ustar rootrootsugar-record-activity-82/serialize.py0000644000000000000000000002774511417267661016625 0ustar rootrootimport xml.dom.minidom from xml.dom.minidom import getDOMImplementation from xml.dom.minidom import parse import cStringIO import os import gtk from sugar.datastore import datastore from constants import Constants from instance import Instance from color import Color import record import utils import recorded def fillMediaHash( doc, mediaHashs ): for key,value in Constants.mediaTypes.items(): recdElements = doc.documentElement.getElementsByTagName(value[Constants.keyName]) for el in recdElements: _loadMediaIntoHash( el, mediaHashs[key] ) def _loadMediaIntoHash( el, hash ): addToHash = True recd = record.Recorded() recd = fillRecdFromNode(recd, el) if (recd != None): if (recd.datastoreId != None): #quickly check: if you have a datastoreId that the file hasn't been deleted, #cause if you do, we need to flag your removal #2904 trac recd.datastoreOb = getMediaFromDatastore( recd ) if (recd.datastoreOb == None): addToHash = False else: #name might have been changed in the journal, so reflect that here if (recd.title != recd.datastoreOb.metadata['title']): recd.setTitle(recd.datastoreOb.metadata['title']) if (recd.tags != recd.datastoreOb.metadata['tags']): recd.setTags(recd.datastoreOb.metadata['tags']) if (recd.buddy): recd.downloadedFromBuddy = True recd.datastoreOb == None if (addToHash): hash.append( recd ) def getMediaFromDatastore( recd ): if (recd.datastoreId == None): return None if (recd.datastoreOb != None): #already have the object return recd.datastoreOb mediaObject = None try: mediaObject = datastore.get( recd.datastoreId ) finally: if (mediaObject == None): return None return mediaObject def removeMediaFromDatastore( recd ): #before this method is called, the media are removed from the file if (recd.datastoreId == None): return if (recd.datastoreOb == None): return try: recd.datastoreOb.destroy() datastore.delete( recd.datastoreId ) del recd.datastoreId recd.datastoreId = None del recd.datastoreOb recd.datastoreOb = None finally: #todo: add error message here pass def fillRecdFromNode( recd, el ): if (el.getAttributeNode(Constants.recdType) != None): typeInt = int(el.getAttribute(Constants.recdType)) recd.type = typeInt if (el.getAttributeNode(Constants.recdTitle) != None): recd.title = el.getAttribute(Constants.recdTitle) if (el.getAttributeNode(Constants.recdTime) != None): timeInt = int(el.getAttribute(Constants.recdTime)) recd.time = timeInt if (el.getAttributeNode(Constants.recdRecorderName) != None): recd.recorderName = el.getAttribute(Constants.recdRecorderName) if (el.getAttributeNode(Constants.recdTags) != None): recd.tags = el.getAttribute(Constants.recdTags) else: recd.tags = "" if (el.getAttributeNode(Constants.recdRecorderHash) != None): recd.recorderHash = el.getAttribute(Constants.recdRecorderHash) if (el.getAttributeNode(Constants.recdColorStroke) != None): try: colorStrokeHex = el.getAttribute(Constants.recdColorStroke) colorStroke = Color() colorStroke.init_hex(colorStrokeHex) recd.colorStroke = colorStroke except: record.Record.log.error("unable to load recd colorStroke") if (el.getAttributeNode(Constants.recdColorFill) != None): try: colorFillHex = el.getAttribute(Constants.recdColorFill) colorFill = Color() colorFill.init_hex( colorFillHex ) recd.colorFill = colorFill except: record.Record.log.error("unable to load recd colorFill") if (el.getAttributeNode(Constants.recdBuddy) != None): recd.buddy = (el.getAttribute(Constants.recdBuddy) == "True") if (el.getAttributeNode(Constants.recdMediaMd5) != None): recd.mediaMd5 = el.getAttribute(Constants.recdMediaMd5) if (el.getAttributeNode(Constants.recdThumbMd5) != None): recd.thumbMd5 = el.getAttribute(Constants.recdThumbMd5) if (el.getAttributeNode(Constants.recdMediaBytes) != None): recd.mediaBytes = el.getAttribute(Constants.recdMediaBytes) if (el.getAttributeNode(Constants.recdThumbBytes) != None): recd.thumbBytes = el.getAttribute(Constants.recdThumbBytes) bt = el.getAttributeNode(Constants.recdBase64Thumb) if (bt != None): try: thumbPath = os.path.join(Instance.instancePath, "datastoreThumb.jpg") thumbPath = utils.getUniqueFilepath( thumbPath, 0 ) thumbImg = utils.getPixbufFromString( bt.nodeValue ) thumbImg.save(thumbPath, "jpeg", {"quality":"85"} ) recd.thumbFilename = os.path.basename(thumbPath) record.Record.log.debug("saved thumbFilename") except: record.Record.log.error("unable to getRecdBase64Thumb") ai = el.getAttributeNode(Constants.recdAudioImage) if (not ai == None): try: audioImagePath = os.path.join(Instance.instancePath, "audioImage.png") audioImagePath = utils.getUniqueFilepath( audioImagePath, 0 ) audioImage = utils.getPixbufFromString( ai.nodeValue ) audioImage.save(audioImagePath, "png", {} ) recd.audioImageFilename = os.path.basename(audioImagePath) record.Record.log.debug("loaded audio image and set audioImageFilename") except: record.Record.log.error("unable to load audio image") datastoreNode = el.getAttributeNode(Constants.recdDatastoreId) if (datastoreNode != None): recd.datastoreId = datastoreNode.nodeValue return recd def getRecdXmlMeshString( recd ): impl = getDOMImplementation() recdXml = impl.createDocument(None, Constants.recdRecd, None) root = recdXml.documentElement _addRecdXmlAttrs( root, recd, True ) writer = cStringIO.StringIO() recdXml.writexml(writer) return writer.getvalue() def _addRecdXmlAttrs( el, recd, forMeshTransmit ): el.setAttribute(Constants.recdType, str(recd.type)) if ((recd.type == Constants.TYPE_AUDIO) and (not forMeshTransmit)): aiPixbuf = recd.getAudioImagePixbuf( ) aiPixbufString = str( utils.getStringFromPixbuf(aiPixbuf) ) el.setAttribute(Constants.recdAudioImage, aiPixbufString) if ((recd.datastoreId != None) and (not forMeshTransmit)): el.setAttribute(Constants.recdDatastoreId, str(recd.datastoreId)) el.setAttribute(Constants.recdTitle, recd.title) el.setAttribute(Constants.recdTime, str(recd.time)) el.setAttribute(Constants.recdRecorderName, recd.recorderName) el.setAttribute(Constants.recdRecorderHash, str(recd.recorderHash) ) el.setAttribute(Constants.recdColorStroke, str(recd.colorStroke.hex) ) el.setAttribute(Constants.recdColorFill, str(recd.colorFill.hex) ) el.setAttribute(Constants.recdBuddy, str(recd.buddy)) el.setAttribute(Constants.recdMediaMd5, str(recd.mediaMd5)) el.setAttribute(Constants.recdThumbMd5, str(recd.thumbMd5)) el.setAttribute(Constants.recdMediaBytes, str(recd.mediaBytes)) el.setAttribute(Constants.recdThumbBytes, str(recd.thumbBytes)) el.setAttribute(Constants.recdRecordVersion, str(Constants.VERSION)) pixbuf = recd.getThumbPixbuf( ) thumb64 = str( utils.getStringFromPixbuf(pixbuf) ) el.setAttribute(Constants.recdBase64Thumb, thumb64) def saveMediaHash( mediaHashs ): impl = getDOMImplementation() album = impl.createDocument(None, Constants.recdAlbum, None) root = album.documentElement #flag everything for saving... atLeastOne = False for type,value in Constants.mediaTypes.items(): typeName = value[Constants.keyName] hash = mediaHashs[type] for i in range (0, len(hash)): recd = hash[i] recd.savedXml = False recd.savedMedia = False atLeastOne = True #and if there is anything to save, save it if (atLeastOne): for type,value in Constants.mediaTypes.items(): typeName = value[Constants.keyName] hash = mediaHashs[type] for i in range (0, len(hash)): recd = hash[i] mediaEl = album.createElement( typeName ) root.appendChild( mediaEl ) _saveMedia( mediaEl, recd ) return album def _saveMedia( el, recd ): if ( (recd.buddy == True) and (recd.datastoreId == None) and (not recd.downloadedFromBuddy) ): recd.savedMedia = True _saveXml( el, recd ) else: recd.savedMedia = False _saveMediaToDatastore( el, recd ) def _saveXml( el, recd ): if (recd.thumbFilename != None): _addRecdXmlAttrs( el, recd, False ) else: record.Record.log.debug("WOAH, ERROR: recd has no thumbFilename?! " + str(recd) ) recd.savedXml = True def _saveMediaToDatastore( el, recd ): #note that we update the recds that go through here to how they would #look on a fresh load from file since this won't just happen on close() if (recd.datastoreId != None): #already saved to the datastore, don't need to re-rewrite the file since the mediums are immutable #However, they might have changed the name of the file if (recd.metaChange): recd.datastoreOb = getMediaFromDatastore( recd ) if (recd.datastoreOb.metadata['title'] != recd.title): recd.datastoreOb.metadata['title'] = recd.title datastore.write(recd.datastoreOb) if (recd.datastoreOb.metadata['tags'] != recd.tags): recd.datastoreOb.metadata['tags'] = recd.tags datastore.write(recd.datastoreOb) #reset for the next title change if not closing... recd.metaChange = False #save the title to the xml recd.savedMedia = True _saveXml( el, recd ) else: recd.savedMedia = True _saveXml( el, recd ) else: #this will remove the media from being accessed on the local disk since it puts it away into cold storage #therefore this is only called when write_file is called by the activity superclass mediaObject = datastore.create() mediaObject.metadata['title'] = recd.title mediaObject.metadata['tags'] = recd.tags datastorePreviewPixbuf = recd.getThumbPixbuf() if (recd.type == Constants.TYPE_AUDIO): datastorePreviewPixbuf = recd.getAudioImagePixbuf() elif (recd.type == Constants.TYPE_PHOTO): datastorePreviewFilepath = recd.getMediaFilepath() datastorePreviewPixbuf = gtk.gdk.pixbuf_new_from_file(datastorePreviewFilepath) datastorePreviewWidth = 300 datastorePreviewHeight = 225 if (datastorePreviewPixbuf.get_width() != datastorePreviewWidth): datastorePreviewPixbuf = datastorePreviewPixbuf.scale_simple(datastorePreviewWidth, datastorePreviewHeight, gtk.gdk.INTERP_NEAREST) datastorePreviewBase64 = utils.getStringFromPixbuf(datastorePreviewPixbuf) mediaObject.metadata['preview'] = datastorePreviewBase64 colors = str(recd.colorStroke.hex) + "," + str(recd.colorFill.hex) mediaObject.metadata['icon-color'] = colors mtype = Constants.mediaTypes[recd.type] mime = mtype[Constants.keyMime] mediaObject.metadata['mime_type'] = mime mediaObject.metadata['activity_id'] = Constants.activityId mediaFile = recd.getMediaFilepath() mediaObject.file_path = mediaFile mediaObject.transfer_ownership = True datastore.write( mediaObject ) recd.datastoreId = mediaObject.object_id recd.savedMedia = True _saveXml( el, recd ) recd.mediaFilename = None sugar-record-activity-82/activity/0000755000000000000000000000000011417267661016101 5ustar rootrootsugar-record-activity-82/activity/activity-record.svg0000644000000000000000000000204011417267661021726 0ustar rootroot ]> sugar-record-activity-82/activity/activity.info0000644000000000000000000000024411417267661020612 0ustar rootroot[Activity] name = Record bundle_id = org.laptop.RecordActivity class = record.Record icon = activity-record activity_version = 82 show_launcher = yes license = MIT sugar-record-activity-82/NEWS0000644000000000000000000001611611417267661014751 0ustar rootroot76 * Switch to Daniel Drake's branch Restore the v60 rewrite to use a single pipeline, tweaking at runtime when necessary. This improves responsivity of the application, and results in the activity behaving reliably again. * This version requires gstreamer-0.10.20 68..75 * Range was preserved for possible sucrose-0.82 branch updates 67 * Fix 0sugar "Cannot find cached 0sugar-launch implementation." isuue 66 * Increase audio volume on XO * 0sugarize Record blobs to let use native gst on recent systems 65 * Use hippo.cairo_surface_from_gdk_pixbuf instead of bundling blobs * Add gst logging * Record 64 does not record sound #1244 64 * #848 Hide photo/video tabs if camera doesn't exist * Update .po files 63 * Change only volumes for "Capture" channels and let user change others * Record controls only appear on second launch #762 62 * Select quality for enconding video * Unmute/set-to-max capture channels workaround code until sugar controls capture volumes in the shell * Revert two pass video encoding to support limited hardware * Save GUI state in Journal objects 61 * Use uuid and do not md5 video files * Fallback to ximagesink if xvimagesink is unaccessible * Use one pass for encodings 60 * pipeline rework; makes the activity work with new gstreamer 59 * #8580 record fails to keep images if closed. (erikg) 58 * Add MANIFEST (cscott) * Update license and update_url fields (cscott) 54 * #6679 fixed 53 * #6417 fixed 52 * updated translations (jedierikb, sayamindu) 51 * #4525 defensive techniques against translations with bad variables (jedierikb) * #5899 fixed (jedierikb) * tag support (jedierikb) 50 * #5830 fix (jedierikb) * #4525 updates with fixes to .po files (jedierikb) * #5899 workaround to avoid occasional crashes (jedierikb) 49 * #4525 updated with .po files (jedierikb, sayamindu) 48 * #5500 fix (jedierikb) * #4525 applied (jedierikb) 47 * #5448 updated (jedierikb) 46 * #5448 fix (jedierikb) * #4983 addressed (jedierikb) 45 * new .pot file (jedierikb) * fullscreen flag re-added (jedierikb) 44 * clipboard fix (jedierikb) 43 * #5230 fixed (jedierikb) 42 * #4983 addressed (jedierikb) 41 * #5177, fullscreen compliance for u1 (jedierikb) * #4813, clipboard files via /instance not /tmp (jedierikb) 40 * filepath changes for bitfrost, rainbow (jedierikb) 39 * tray improvements (jedierikb) * thumbnail improvements (jedierikb) * game key improvements (jedierikb) 38 * change time of creation of tmp (jedierikb) 37 * prevent duplicate thumbnails when shared (jedierikb) * prevent changing modes when using timer (jedierikb, mikhak) * fix audio mesh share (jedierikb, mikhak) 36 * ui (jedierikb, mikhak, eben) * tubes 35 * #4422 addressed (jedierikb) 34 * frs ui (jedierikb, mikhak) * notify::active #2026 should close #3097, #3616 (jedierikb) * #4111, #4189 fixed (jedierikb) * #1063, #3776 addressed (jedierikb), blocked by #4144 * #809 fixed (jedierikb) * #3774 fixed (jedierikb) * #4209 worked around (jedierikb) * #1557 addressed (jedierikb) * #3588 fixed (jedierikb) 33 * bug with slow creation of audio thumbnails (jedierikb) 32 * changed audio/wav mimetype to audio/x-wav for entry into the journal 31 * #4010 audio/wav mimetype for entry into the journal 30 * ogg not ogv 27 * delete (jedierikb) 26 * ui (jedierikb) 25 * fix for narrowly possible gtk bug when taking pictures (closes #3342) * fix for xv "glitches" when moving and resizing gtk.Windows (closes #3046) * enable the disappearing record buttons which don't disappear if your moused over them (jedierikb) 24 * fix for saving audio files' image counterparts (prevents blank screen and spinning cursor) (jedierikb) * correctly handle bug in notify::active callbacks, and opened #2026 (jedierikb) * disable the disappearing record buttons until more work can be done on them (jedierikb) * correct mime and filetypes for audio recordings (addresses #2909) (jedierikb) * fix for hitherto unknown bug regarding multiple saves to the datastore (jedierikb) * new icon (simon@schampijer.de) 23 * journal integration (closes #1758) (jedierikb): ** media saved to the the journal ** re-naming of media in the record actvity and the journal ** deleting of media in the record activity and the journal * correct ogg/theora mimetypes (addresses #2653) (jedierikb) * sharing of all recorded media on the mesh (closes #2436) (jedierikb) * you can delete buddy's photos pushed to you (closes #2722) (jedierikb) * you can view buddy's photos when you re-open an activity (closes #2439) (jedierikb) * all widgets insensitive when shuttingdown and writing to journal (jedierikb) * better pipeline-to-window hot swapping (jedierikb) * audio record and playback (jedierikb) * drag and drop of all media types for all media (closes #2345)(jedierikb, tomeu) * graphic overlay windows fade away when not used to reveal photo, revealed with mouse movement (jedierikb) bugs: * graphic flashes on the resizing of video windows (#3046) * xv video resizes incorrectly occasionally (#2127) * prevents async datastore saves, so the activity appears to hang when closing (#3071) * no reconnecting to a buddy to download media after leaving the activity (#2977) * matches on buddy nicks to confirm mesh downloads, not their ids (as a workaround to #2299) (jedierikb, dcbw) * incomplete frame buffer bug on beginning of stream (#3155) next: * missing final graphics (#2585), layout * display information to user about progress of mesh downloads and media encodings 22 * fixes fixes to maximize window disappering (jedierikb) 21 * fixes to maximize window disappearing (jedierikb) * shutdown calls all through one method, prevents video lingering post shutdown (jedierikb, dcbw) * disconnect drag connections (jedierikb) 20 * fixes to clipboard functionality for d&d and c&p (jedierikb, tomeu) 19 * clipboard functionality for photos, including ctrl+c and drag (jedierikb, tomeu) * thumbnails buttons are not gtk.Buttons to allow for maximum usability (jedierikb) * fixed bug allowing the canceling of video recordings by accident (jedierikb) * fixed bug for allowing silent movies (undocumented feature) (jedierikb) 18 * Jitters when switching video modes reduced (jedierikb) * Able to re-open photo sessions from the journal (jedierikb) * Mesh sharing uses unique ports per instance of Record (jedierikb, dcbw) 17 * Fix out-of-bounds theoraenc recording (jedierikb) * Fix delete of video thumbnails (jedierikb) * Remove the shown media if its thumbnail is deleted (jedierikb) * Show live video tags when switching modes (jedierikb) * Fixes for showing hi-res shared photos (jedierikb) 16 * Cache rendered thumbnails (jedierikb) * Thread the rendering of full-screen photos (jedierikb) * Border around pip (jedierikb) * Switch display sizes of ogg and live video (jedierikb) * Higher quality audio & video recording (jedierikb) * Mesh transfer of thumbnails, photos, and deleting of photos (jedierikb) * Activity instance directories for photos 14 * Multiple video recordings work (jedierikb) * Better shutter-click protection (jedierikb) 13 * New camera activity layout (jedierikb, mikhak, eben) * New camera.c for python 2.5 (jedierikb, dcbw) * Just a test release, many features do not work (jedierikb) sugar-record-activity-82/instance.py0000644000000000000000000000227311417267661016427 0ustar rootrootimport os from sugar import profile from sugar import util from sugar.activity import activity import shutil from color import Color import record class Instance: key = profile.get_pubkey() if hasattr(util, '_sha_data'): # sugar-0.82 and previous keyHash = util._sha_data(key) else: keyHash = util.sha_data(key) keyHashPrintable = util.printable_hash(keyHash) nickName = profile.get_nick_name() colorFill = Color() colorFill.init_hex( profile.get_color().get_fill_color() ) colorStroke = Color() colorStroke.init_hex( profile.get_color().get_stroke_color() ) instanceId = None instancePath = None dataPath = None def __init__(self, ca): self.__class__.instanceId = ca._activity_id self.__class__.instancePath = os.path.join(ca.get_activity_root(), "instance") recreateTmp() self.__class__.dataPath = os.path.join(ca.get_activity_root(), "data") recreateData() def recreateTmp(): if (not os.path.exists(Instance.instancePath)): os.makedirs(Instance.instancePath) def recreateData(): if (not os.path.exists(Instance.dataPath)): os.makedirs(Instance.dataPath) sugar-record-activity-82/po/0000755000000000000000000000000011417267661014663 5ustar rootrootsugar-record-activity-82/po/en.po0000644000000000000000000001141111417267661015623 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/mr.po0000644000000000000000000001615411417267661015650 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-05-06 03:21-0400\n" "Last-Translator: Rupali Sarode \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "नोंद करणे" #: constants.py:91 msgid "Photo" msgstr "छायाचित्र" #: constants.py:92 msgid "Video" msgstr "दूरचित्रवाणी" #: constants.py:93 msgid "Audio" msgstr "आवाज" #: constants.py:94 msgid "Time Lapse" msgstr "वेळ निघून जाणे" #: constants.py:95 msgid "Animation" msgstr "ऍनिमेशन" #: constants.py:96 msgid "Panorama" msgstr "पॅनोरमा" #: constants.py:97 msgid "Interview" msgstr "मुलाखत" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(१)s बाय %(२)s" #: constants.py:100 msgid "Title:" msgstr "शिर्षक" #: constants.py:101 msgid "Recorder:" msgstr "नोंद करणारे" #: constants.py:102 msgid "Date:" msgstr "तारीख" #: constants.py:103 msgid "Tags:" msgstr "लेबल" #: constants.py:104 msgid "Saving" msgstr "शिल्लक" #: constants.py:105 msgid "Finished recording" msgstr "नोंद पूर्ण झाली " #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s तास, %(2)s मिनिट्स, %(1)s सेकेंड्स बाकी आहेत" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s मिनिट्स, %(2)s सेकेंड्स बाकी आहेत" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s तास बाकी आहेत" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s मिनिट्स बाकी आहेत" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s सेकेंड्स बाकी आहेत" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s तास" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s मिनिट" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s सेकंद" #: constants.py:114 msgid "Remove" msgstr "काढून टाकणे" #: constants.py:115 msgid "Stopped recording" msgstr "नोंद करणे थांबवा" #: constants.py:116 msgid "Copy to clipboard" msgstr "क्लीपबोर्ड वरती छापा " #: constants.py:117 msgid "Timer:" msgstr "वेळ मोजणे" #: constants.py:118 msgid "Duration:" msgstr "वेळ" #: constants.py:119 msgid "Immediate" msgstr "त्वरित" #: constants.py:122 msgid "Play" msgstr "खेळा" #: constants.py:123 msgid "Pause" msgstr "थांबा" #: constants.py:124 msgid "Add frame" msgstr "चौकट बनवा" #: constants.py:125 msgid "Remove frame" msgstr "चौकट काढून टाका" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s चौकट प्रती सेकंद" #: constants.py:127 msgid "Quality" msgstr "दर्जा" #: constants.py:128 msgid "Default" msgstr "डीफॉल्ट" #: constants.py:129 msgid "Best" msgstr "सर्वोत्तम" #: constants.py:130 msgid "High" msgstr "उच्च" #: constants.py:131 msgid "Low" msgstr "कमी" #: constants.py:132 msgid "Large file" msgstr "मोठी फाइल" #: constants.py:133 msgid "Small file" msgstr "छोटी फाइल " #: constants.py:134 msgid "Silent" msgstr "शांत" #: constants.py:135 msgid "Rotate" msgstr "आसाभोवती फिरणे" #: constants.py:136 msgid "Width" msgstr "रुंदी" #: constants.py:137 msgid "Height" msgstr "उंची" #: constants.py:138 msgid "Click to take picture" msgstr "फोटो काढण्यासाठी क्लिक करा" #: constants.py:139 msgid "Click to add picture" msgstr "फोटो जोडण्यासाठी क्लिक करा" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "डाउनलोडींग %(१)s फ़ॉम %(२)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "%(1)s डाउनलोड करू शकत नाही" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(१) ला वाचावा" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr " तुमच %(१) भरलेला आहे" #: constants.py:147 msgid "Journal" msgstr "नियतकालिक" #: constants.py:148 msgid "USB" msgstr "यु. एस. बी" #: constants.py:149 msgid "SD Card" msgstr "एस.डी. कार्ड" #: constants.py:150 msgid "Preferences" msgstr "प्राथमिकता" #: constants.py:151 msgid "Free space:" msgstr "बाकी जागा" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(१) s चित्र" #: constants.py:154 msgid "Bitrate" msgstr "बिटरेट" #: constants.py:155 msgid "Maximum Bitrate" msgstr "अधिकात अधिक बिटरेट" #: constants.py:156 msgid "Minumum Bitrate" msgstr "कमीत कमी बिटरेट" #: constants.py:157 msgid "Manage Bitrate" msgstr "बिटरेट व्यवस्थित करा" #: constants.py:158 msgid "Border" msgstr "कडा" #: constants.py:159 msgid "Center" msgstr "केंद्र" #: constants.py:160 msgid "Frames" msgstr "चौकटी" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "किफ्रेमची स्वयंचलित शोध" #: constants.py:162 msgid "Force keyframe" msgstr "किफ्रेमला ढकला" #: constants.py:163 msgid "Keyframe frequency" msgstr "किफ्रेमची पुनरावृत्ती" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "किफ्रेम मधला कमीत कमी अंतर" #: constants.py:165 msgid "Keyframe threshold" msgstr "किफ्रेमची सुरुवात" #: constants.py:166 msgid "Noise Sensitivity" msgstr "कोळाहलची संवेदनशीलता" #: constants.py:167 msgid "Quick" msgstr "लवकर" #: constants.py:168 msgid "Sharpness" msgstr "तीक्षपणा" #: constants.py:169 msgid "Capacity" msgstr "धारणक्षमता" sugar-record-activity-82/po/sw.po0000644000000000000000000001140411417267661015654 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/hi.po0000644000000000000000000001674011417267661015633 0ustar rootroot# translation of record-activity.po to Hindi # G Karunakar , 2007. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. msgid "" msgstr "" "Project-Id-Version: record-activity\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-04-09 06:26-0400\n" "Last-Translator: Prashant Thakkar \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "रिकार्ड" #: constants.py:91 msgid "Photo" msgstr "फोटो" #: constants.py:92 msgid "Video" msgstr "वीडियो" #: constants.py:93 msgid "Audio" msgstr "ऑडियो" #: constants.py:94 msgid "Time Lapse" msgstr "बीता समय" #: constants.py:95 msgid "Animation" msgstr "एनिमेशन" #: constants.py:96 msgid "Panorama" msgstr "दीर्घ दृश्य" #: constants.py:97 msgid "Interview" msgstr "मुलाकात" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s द्वारा %(1)s" #: constants.py:100 msgid "Title:" msgstr "शीर्षक:" #: constants.py:101 msgid "Recorder:" msgstr "रिकार्डर:" #: constants.py:102 msgid "Date:" msgstr "तारीख़ः" #: constants.py:103 msgid "Tags:" msgstr "चिप्पियाँ:" #: constants.py:104 msgid "Saving" msgstr "सहेजें" #: constants.py:105 msgid "Finished recording" msgstr "रिकार्डिंग खतम" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s घंटे,%(2)s मिनट,%(1)s सेकण्ड बाकी" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s मिनट, %(1)s सेकण्ड बाकी" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "%(1)s घंटे बाकी" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "%(1)s मिनट" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s सेकण्ड बाकी" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s घंटे" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s मिनट" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s सेकेंड" #: constants.py:114 msgid "Remove" msgstr "हटाएँ" #: constants.py:115 msgid "Stopped recording" msgstr "रेकॉर्डिंग बन्द" #: constants.py:116 msgid "Copy to clipboard" msgstr "क्लिपबोर्ड में नकल करें" #: constants.py:117 msgid "Timer:" msgstr "टाइमर:" #: constants.py:118 msgid "Duration:" msgstr "अवधिः" #: constants.py:119 msgid "Immediate" msgstr "तुरंत" #: constants.py:122 msgid "Play" msgstr "बजाएँ" #: constants.py:123 msgid "Pause" msgstr "ठहरें" #: constants.py:124 msgid "Add frame" msgstr "फ्रेम जोडो" #: constants.py:125 msgid "Remove frame" msgstr "फ्रेम हटाओ" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s फ्रेम प्रति सेकंड" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "गुणवत्ता" #: constants.py:128 msgid "Default" msgstr "तयशुदा" #: constants.py:129 msgid "Best" msgstr "सर्वोत्तम" #: constants.py:130 msgid "High" msgstr "तेज" #: constants.py:131 msgid "Low" msgstr "धीमा" #: constants.py:132 msgid "Large file" msgstr "बडी फ़ाईल" #: constants.py:133 msgid "Small file" msgstr "छोटी फ़ाईल" #: constants.py:134 msgid "Silent" msgstr "मूक" #: constants.py:135 msgid "Rotate" msgstr "घुमाएँ" #: constants.py:136 msgid "Width" msgstr "चौड़ाई" #: constants.py:137 msgid "Height" msgstr "ऊंचाई" #: constants.py:138 msgid "Click to take picture" msgstr "फोटो खींचने के लिए क्लिक करें" #: constants.py:139 msgid "Click to add picture" msgstr "फोटो जोड़ने के लिए क्लिक करें" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(1)s से %(2)s डाउनलोड किया जा रहा है" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "%(1)s को डाउनलोड नहीं किया जा सकता" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "संग्रहितकरें" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr " आपकी %(1)भर गयी है" #: constants.py:147 msgid "Journal" msgstr "चिठ्ठा" #: constants.py:148 msgid "USB" msgstr "यू.एस.बी" #: constants.py:149 msgid "SD Card" msgstr " एस.डी. कार्ड " #: constants.py:150 msgid "Preferences" msgstr "पसंद नापसंद" #: constants.py:151 msgid "Free space:" msgstr "मुक्त जगहा" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s तस्वीरे" #: constants.py:154 msgid "Bitrate" msgstr " बिट रेट" #: constants.py:155 msgid "Maximum Bitrate" msgstr "अधिकतम बिट रेट" #: constants.py:156 msgid "Minumum Bitrate" msgstr "न्यूनतम बिट रेट" #: constants.py:157 msgid "Manage Bitrate" msgstr " बिट रेट काबू करे" #: constants.py:158 msgid "Border" msgstr "किनारा" #: constants.py:159 msgid "Center" msgstr "मध्य" #: constants.py:160 msgid "Frames" msgstr "ढांचा" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "महत्वपूर्ण ढाँचे की स्वचलित खोज " #: constants.py:162 msgid "Force keyframe" msgstr "महत्वपूर्ण ढाँचे को दबाना" #: constants.py:163 msgid "Keyframe frequency" msgstr "महत्वपूर्ण ढाँचे की आवृत्ति" #: constants.py:164 msgid "Keyframe minimum distance" msgstr " महत्वपूर्ण ढाँचे की न्यूनतम दूरी " #: constants.py:165 msgid "Keyframe threshold" msgstr "महत्वपूर्ण ढाँचे की दहलीज़" #: constants.py:166 msgid "Noise Sensitivity" msgstr "शोर की संवेदीती" #: constants.py:167 msgid "Quick" msgstr "तुरंत" #: constants.py:168 msgid "Sharpness" msgstr "स्पष्टता" #: constants.py:169 msgid "Capacity" msgstr "धारण शक्ति" #~ msgid "Best quality" #~ msgstr "बढिया गुणवत्ता" #~ msgid "High quality" #~ msgstr "उच्च गुणवत्ता" #~ msgid "Low quality" #~ msgstr "कम गुणवत्ता" sugar-record-activity-82/po/ff.po0000644000000000000000000001141011417267661015613 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/bn_IN.po0000644000000000000000000001675111417267661016222 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Khandakar Mujahidul Islam , 2007. msgid "" msgstr "" "Project-Id-Version: Update1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-12-21 19:06+0000\n" "Last-Translator: Khandakar Mujahidul Islam \n" "Language-Team: Bengali \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "রেকর্ড" #: constants.py:91 msgid "Photo" msgstr "ফটো" #: constants.py:92 msgid "Video" msgstr "ভিডিও" #: constants.py:93 msgid "Audio" msgstr "অডিও" #: constants.py:94 msgid "Time Lapse" msgstr "সময় সীমা" #: constants.py:95 msgid "Animation" msgstr "অ্যানিমেশন" #: constants.py:96 msgid "Panorama" msgstr "প্যানারোমা" #: constants.py:97 msgid "Interview" msgstr "সাক্ষাৎকার" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s এর %(1)s" #: constants.py:100 msgid "Title:" msgstr "শিরোনাম:" #: constants.py:101 msgid "Recorder:" msgstr "রেকর্ডার:" #: constants.py:102 msgid "Date:" msgstr "তারিখ:" #: constants.py:103 msgid "Tags:" msgstr "ট্যাগ:" #: constants.py:104 msgid "Saving" msgstr "সেইভ করা হচ্ছে" #: constants.py:105 msgid "Finished recording" msgstr "রেকর্ডিং শেষ হয়েছে" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s ঘন্টা, %(2)s মিনিট, %(1)s সেকেন্ড বাকী আছে" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s মিনিট, %(1)2 সেকেন্ড বাকী আছে" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s সেকেন্ড বাকী আছে" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s মিনিট বাকী আছে" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s সেকেন্ড বাকী আছে" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ঘন্টা" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s মিনিট" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s সেকেন্ড" #: constants.py:114 msgid "Remove" msgstr "মোছো" #: constants.py:115 msgid "Stopped recording" msgstr "থামানো রেকর্ডিং" #: constants.py:116 msgid "Copy to clipboard" msgstr "ক্লিপবোর্ডে কপি করো" #: constants.py:117 msgid "Timer:" msgstr "সময় গণনাকারী:" #: constants.py:118 msgid "Duration:" msgstr "সময়সীমা:" #: constants.py:119 msgid "Immediate" msgstr "শীঘ্রই" #: constants.py:122 msgid "Play" msgstr "চালাও" #: constants.py:123 msgid "Pause" msgstr "স্থগিত করো" #: constants.py:124 msgid "Add frame" msgstr "ফ্রেম যোগ করো" #: constants.py:125 msgid "Remove frame" msgstr "ফ্রেম মোছো" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "প্রতি সেকেন্ডে %(1)s ফ্রেম" #: constants.py:127 msgid "Quality" msgstr "মান" #: constants.py:128 msgid "Default" msgstr "ডিফল্ট" #: constants.py:129 msgid "Best" msgstr "সেরা" #: constants.py:130 msgid "High" msgstr "উচ্চ" #: constants.py:131 msgid "Low" msgstr "নিম্ন" #: constants.py:132 msgid "Large file" msgstr "বড় ফাইল" #: constants.py:133 msgid "Small file" msgstr "ছোট ফাইল" #: constants.py:134 msgid "Silent" msgstr "নিরব" #: constants.py:135 msgid "Rotate" msgstr "ঘোরাও" #: constants.py:136 msgid "Width" msgstr "প্রশস্ত" #: constants.py:137 msgid "Height" msgstr "উচ্চতা" #: constants.py:138 msgid "Click to take picture" msgstr "ছবি তোলার জন্য ক্লিক করো" #: constants.py:139 msgid "Click to add picture" msgstr "ছবি যোগ করার জন্য ক্লিক করো" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s থেকে %(1)s ডাউনলোড করা হচ্ছে" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "এই %(1)s ডাউনলোড করতে পারে নি" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(1) সংরক্ষণ করো:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "আপনার %(1)s ভরে গেছে" #: constants.py:147 msgid "Journal" msgstr "জার্নাল" #: constants.py:148 msgid "USB" msgstr "ইউএসবি" #: constants.py:149 msgid "SD Card" msgstr "এসডি কার্ড" #: constants.py:150 msgid "Preferences" msgstr "পছন্দসমূহ" #: constants.py:151 msgid "Free space:" msgstr "খালি জায়গা:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s ফটো" #: constants.py:154 msgid "Bitrate" msgstr "বিটরেট" #: constants.py:155 msgid "Maximum Bitrate" msgstr "সর্বোচ্চ বিটরেট" #: constants.py:156 msgid "Minumum Bitrate" msgstr "সর্বনিম্ন বিটরেট" #: constants.py:157 msgid "Manage Bitrate" msgstr "বিটরেট ব্যবস্থাপনা" #: constants.py:158 msgid "Border" msgstr "সীমা" #: constants.py:159 msgid "Center" msgstr "মধ্য" #: constants.py:160 msgid "Frames" msgstr "ফ্রেম" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "স্বয়ক্রিয় কীফ্রেম সনাক্তকরণ" #: constants.py:162 msgid "Force keyframe" msgstr "কীফ্রেমে জোর" #: constants.py:163 msgid "Keyframe frequency" msgstr "কীফ্রেম কম্পাংক" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "কীফ্রেম সর্বনিম্ন দুরত্ব" #: constants.py:165 msgid "Keyframe threshold" msgstr "কীফ্রেম থ্রেশল্ড" #: constants.py:166 msgid "Noise Sensitivity" msgstr "কোলাহল স্পর্শকাতরতা" #: constants.py:167 msgid "Quick" msgstr "দ্রুত" #: constants.py:168 msgid "Sharpness" msgstr "তীক্ষ্ণতা" #: constants.py:169 msgid "Capacity" msgstr "ক্ষমতা" #, python-format #~ msgid "%(1)s minutes, %(1)s seconds remaining" #~ msgstr "%(1)s মিনিট, %(1)s সেকেন্ড বাকী আছে" #~ msgid "Quality:" #~ msgstr "মান:" #~ msgid "Best quality" #~ msgstr "সেরা মান" #~ msgid "High quality" #~ msgstr "উচ্চ মান" #~ msgid "Low quality" #~ msgstr "নিম্ন মান" sugar-record-activity-82/po/es.po0000644000000000000000000001663111417267661015641 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-07-29 02:01-0400\n" "Last-Translator: Victor Alfonso Parada Suarez \n" "Language-Team: LANGUAGE \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.2.1\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Grabar" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Video" #: constants.py:115 msgid "Audio" msgstr "Audio" #: constants.py:116 msgid "Time Lapse" msgstr "Lapso de tiempo" #: constants.py:117 msgid "Animation" msgstr "Animación" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Entrevista" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s por %(2)s" #: constants.py:122 msgid "Title:" msgstr "Título:" # Recorder seria el que hizo la grabacion...? En que difiere de "Author". # Respuesta: No hay diferencia válida para una traducción. Es más, en una cámara de video VHS se sustituye Recorder por Autor. #: constants.py:123 msgid "Recorder:" msgstr "Autor:" #: constants.py:124 msgid "Date:" msgstr "Fecha:" #: constants.py:125 msgid "Tags:" msgstr "Etiquetas:" #: constants.py:126 msgid "Saving" msgstr "Guardando" #: constants.py:127 msgid "Finished recording" msgstr "Grabación terminada" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s horas, %(2)s minutos, %(3)s segundos restantes" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minutos, %(2)s segundos restantes" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s horas restantes" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minutos restantes" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s segundos restantes" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s horas" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minutos" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segundos" #: constants.py:136 msgid "Remove" msgstr "Eliminar" #: constants.py:137 msgid "Stopped recording" msgstr "Grabación detenida" #: constants.py:138 msgid "Copy to clipboard" msgstr "Copiar al portapapel" # Cronometro is more readily understood as a timing device. #: constants.py:139 msgid "Timer:" msgstr "Cronometro" # duracion o largo / longitud? ie: largometraje #: constants.py:140 msgid "Duration:" msgstr "Duración:" # contexto? -- xavi #: constants.py:141 msgid "Immediate" msgstr "Inmediato" #: constants.py:142 msgid "Play" msgstr "Reproducir" #: constants.py:143 msgid "Pause" msgstr "Pausa" #: constants.py:144 msgid "Add frame" msgstr "Agregar cuadro" #: constants.py:145 msgid "Remove frame" msgstr "Eliminar cuadro" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s cuadros por segundo" #: constants.py:147 msgid "Quality" msgstr "Calidad" #: constants.py:148 msgid "Default" msgstr "Predeterminada" #: constants.py:149 msgid "Best" msgstr "Óptima" #: constants.py:150 msgid "High" msgstr "Alta" #: constants.py:151 msgid "Low" msgstr "Baja" #: constants.py:152 msgid "Large file" msgstr "Archivo grande" #: constants.py:153 msgid "Small file" msgstr "Archivo pequeño" # context? -- xavi #: constants.py:154 msgid "Silent" msgstr "Mudo" #: constants.py:155 msgid "Rotate" msgstr "Rotar" #: constants.py:156 msgid "Width" msgstr "Ancho" #: constants.py:157 msgid "Height" msgstr "Altura" #: constants.py:158 msgid "Click to take picture" msgstr "Clic para tomar foto" # se agrega la foto (siguiendo "click to take picture") o se agrega una "imagen"? #: constants.py:159 msgid "Click to add picture" msgstr "Clic para agregar una foto" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Descargando %(1)s desde %(2)s" # gender issues: la foto? el archivo? lo coso? -- xavi # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Imposible descargar este %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Guardar %(1)s en:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Su %(1)s está lleno" #: constants.py:167 msgid "Journal" msgstr "Diario" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "Tarjeta SD" #: constants.py:170 msgid "Preferences" msgstr "Preferencias" #: constants.py:171 msgid "Free space:" msgstr "Espacio libre:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotos" #: constants.py:174 msgid "Bitrate" msgstr "Tasa de bits" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Tasa máxima de bits" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Tasa mínima de bits" #: constants.py:177 msgid "Manage Bitrate" msgstr "Manejar tasa de bits" #: constants.py:178 msgid "Border" msgstr "Borde" #: constants.py:179 msgid "Center" msgstr "Centro" # segun wikipedia esa seria la traduccion http://es.wikipedia.org/wiki/Fotograma # DjToXiC: Verdad, pero debería ser sustituido por Cuadros porque está en plural, en demás traducciones está como cuadros, es una palabra más larga que frame por lo tanto se puede ir de la pantalla y además es una laptop para niños, no? #: constants.py:180 msgid "Frames" msgstr "Cuadros" # "fotograma clave" is used for keyframe, but this needs to be consistent with other uses of frame. # DjToXiC: I agree, but "cuadros clave" is present in others translations, and it is used in Video Editors. #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Detección automática de cuadros clave" #: constants.py:182 msgid "Force keyframe" msgstr "Forzar cuadro clave" #: constants.py:183 msgid "Keyframe frequency" msgstr "frecuencia de cuadros clave" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Distancia mínima entre cuadros clave" # DjToXiC: La palabra "keyframe" permanecía en la traducción anterior. #: constants.py:185 msgid "Keyframe threshold" msgstr "Umbral del cuadro clave" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Sensibilidad de ruido" #: constants.py:187 msgid "Quick" msgstr "Rápido" # Video sharpness is not the same as definitiion (or resolution) - Nitidez is a more accurate term here #: constants.py:188 msgid "Sharpness" msgstr "Nitidez" #: constants.py:189 msgid "Capacity" msgstr "Capacidad" #~ msgid "Best quality" #~ msgstr "Máxima calidad" #~ msgid "High quality" #~ msgstr "Alta calidad" #~ msgid "Low quality" #~ msgstr "Baja calidad" #~ msgid "Your disk is full" #~ msgstr "Su disco está lleno" sugar-record-activity-82/po/ro.po0000644000000000000000000001425511417267661015652 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-21 07:32-0400\n" "Last-Translator: Adi Roiban \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);;\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Înregistrează" #: constants.py:91 msgid "Photo" msgstr "Poze" #: constants.py:92 msgid "Video" msgstr "Video" #: constants.py:93 msgid "Audio" msgstr "Audio" #: constants.py:94 msgid "Time Lapse" msgstr "Timp scurs" #: constants.py:95 msgid "Animation" msgstr "Animație" #: constants.py:96 msgid "Panorama" msgstr "Panoramă" #: constants.py:97 msgid "Interview" msgstr "Intervieu" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s de la %(2)s" #: constants.py:100 msgid "Title:" msgstr "Titlu:" #: constants.py:101 msgid "Recorder:" msgstr "Cine a înregistrat:" #: constants.py:102 msgid "Date:" msgstr "Data:" #: constants.py:103 msgid "Tags:" msgstr "Etichete:" #: constants.py:104 msgid "Saving" msgstr "Salvez" #: constants.py:105 msgid "Finished recording" msgstr "Înregistrare încheiată" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "au mai rămas %(1)s ore, %(2)s minute, %(3)s secunde" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "au mai rămas %(1)s minute, %(1)s secunde" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "au mai rămas %(1)s secunde" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "au mai rămas %(1)s secunde" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "au mai rămas %(1)s secunde" # TRANS: 7 photos #: constants.py:111 #, python-format #, fuzzy msgid "%(1)s hours" msgstr "%(1)s fotografii" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minute" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s secunde" #: constants.py:114 msgid "Remove" msgstr "Șterge" #: constants.py:115 msgid "Stopped recording" msgstr "Înregistrare oprită" #: constants.py:116 msgid "Copy to clipboard" msgstr "Copiază în clipboard" #: constants.py:117 msgid "Timer:" msgstr "Cronomentru:" #: constants.py:118 msgid "Duration:" msgstr "Durata:" #: constants.py:119 msgid "Immediate" msgstr "Imediat" #: constants.py:122 msgid "Play" msgstr "Redă" #: constants.py:123 msgid "Pause" msgstr "Pauză" #: constants.py:124 msgid "Add frame" msgstr "Adaugă cadru" #: constants.py:125 msgid "Remove frame" msgstr "Elimină cadru" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s cadre pe secundă" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "Calitatea:" #: constants.py:128 msgid "Default" msgstr "Implicit" #: constants.py:129 msgid "Best" msgstr "Cel mai bun" #: constants.py:130 msgid "High" msgstr "Ridicat" #: constants.py:131 msgid "Low" msgstr "Scăzut" #: constants.py:132 msgid "Large file" msgstr "Fișier mare" #: constants.py:133 msgid "Small file" msgstr "Fișier mic" #: constants.py:134 msgid "Silent" msgstr "Mut" #: constants.py:135 msgid "Rotate" msgstr "Rotește" #: constants.py:136 msgid "Width" msgstr "Lăţime" #: constants.py:137 msgid "Height" msgstr "Înălţime" #: constants.py:138 msgid "Click to take picture" msgstr "Clic pentru a face o poză" #: constants.py:139 msgid "Click to add picture" msgstr "Clic pentru a adăuga o poză" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Descarc %(1)s de la %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Nu s-a putut descărca acest/această %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Salvează %(1)s în:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s tău e plin" #: constants.py:147 msgid "Journal" msgstr "Jurnal" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "Card SD" #: constants.py:150 msgid "Preferences" msgstr "Preferinţe" #: constants.py:151 msgid "Free space:" msgstr "Spaţiu liber:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotografii" #: constants.py:154 msgid "Bitrate" msgstr "Rată biţi" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Rată biţi maximă" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Rată biţi minimă" #: constants.py:157 msgid "Manage Bitrate" msgstr "Administrare rată biţi" #: constants.py:158 msgid "Border" msgstr "Margine" #: constants.py:159 msgid "Center" msgstr "Centru" #: constants.py:160 msgid "Frames" msgstr "Cadre" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Detectare automată cadre cheie" #: constants.py:162 msgid "Force keyframe" msgstr "Forţează cadre cheie" #: constants.py:163 msgid "Keyframe frequency" msgstr "Frecventă cadre cheie" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Distanţă minimă cadre cheie" #: constants.py:165 msgid "Keyframe threshold" msgstr "Prag cadre cheie" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Sensibilitate zgomot" #: constants.py:167 msgid "Quick" msgstr "Rapid" #: constants.py:168 #, fuzzy msgid "Sharpness" msgstr "Contur mai pronunţat" #: constants.py:169 msgid "Capacity" msgstr "Capacitate" #~ msgid "Best quality" #~ msgstr "Cea mai bună" #~ msgid "High quality" #~ msgstr "Înaltă" #~ msgid "Low quality" #~ msgstr "Scăzută" sugar-record-activity-82/po/ht.po0000644000000000000000000001315211417267661015640 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-11 14:45-0400\n" "Last-Translator: Jude Augusma \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Anrejistre" #: constants.py:91 msgid "Photo" msgstr "Foto" #: constants.py:92 msgid "Video" msgstr "Video" #: constants.py:93 msgid "Audio" msgstr "Odio" #: constants.py:94 msgid "Time Lapse" msgstr "Tan perime" #: constants.py:95 msgid "Animation" msgstr "Animasyon" #: constants.py:96 msgid "Panorama" msgstr "Panorama" #: constants.py:97 msgid "Interview" msgstr "Entèviou" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s pa %(2)s" #: constants.py:100 msgid "Title:" msgstr "Tit" #: constants.py:101 msgid "Recorder:" msgstr "Aparèy anrejistreman:" #: constants.py:102 msgid "Date:" msgstr "Dat" #: constants.py:103 msgid "Tags:" msgstr "Etikèt" #: constants.py:104 msgid "Saving" msgstr "Kòf" #: constants.py:105 msgid "Finished recording" msgstr "Tèmine Anrejistreman " #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s lè, %(2)s minit, %(1)s segond ki rete" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minit, %(2)s segond ki rete" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s lè ki rete" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minit ki rete" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s segond ki rete" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s lè" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minit" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segond" #: constants.py:114 msgid "Remove" msgstr "Retire" #: constants.py:115 msgid "Stopped recording" msgstr "Kanpe anrejistreman" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopy sou ekritwa" #: constants.py:117 msgid "Timer:" msgstr "Kontè:" #: constants.py:118 msgid "Duration:" msgstr "Dirasyon" #: constants.py:119 msgid "Immediate" msgstr "Konia" #: constants.py:122 msgid "Play" msgstr "Jwe" #: constants.py:123 msgid "Pause" msgstr "Poz" #: constants.py:124 msgid "Add frame" msgstr "Ajoute bòdi" #: constants.py:125 msgid "Remove frame" msgstr "Retire bòdi" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s Kantite bòdi pa segond" #: constants.py:127 msgid "Quality" msgstr "Kalite" #: constants.py:128 msgid "Default" msgstr "Defo" #: constants.py:129 msgid "Best" msgstr "Meyè" #: constants.py:130 msgid "High" msgstr "Wo" #: constants.py:131 msgid "Low" msgstr "Ba" #: constants.py:132 msgid "Large file" msgstr "Gwo fichye" #: constants.py:133 msgid "Small file" msgstr "Ti fichye" #: constants.py:134 msgid "Silent" msgstr "Silans" #: constants.py:135 msgid "Rotate" msgstr "Vire" #: constants.py:136 msgid "Width" msgstr "Lajè" #: constants.py:137 msgid "Height" msgstr "Wotè" #: constants.py:138 msgid "Click to take picture" msgstr "Klike pou pwan foto" #: constants.py:139 msgid "Click to add picture" msgstr "Klike pou ajoute foto" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Telechaje %(1)s apati de %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Paka telechaje sa %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Sove %(1) nan:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Ou %(1)s plen" #: constants.py:147 msgid "Journal" msgstr "Jounal" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "Kat SD" #: constants.py:150 msgid "Preferences" msgstr "Preferans" #: constants.py:151 msgid "Free space:" msgstr "Espas lib:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s foto" #: constants.py:154 msgid "Bitrate" msgstr "Enfòmasyon pa segond" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Maksimòm bit pa segond" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Minimòm bit pa segond" #: constants.py:157 msgid "Manage Bitrate" msgstr "Manevre kantite bit pa segond" #: constants.py:158 msgid "Border" msgstr "Bòdi" #: constants.py:159 msgid "Center" msgstr "Santre" #: constants.py:160 msgid "Frames" msgstr "Ankadreman" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Deteksyon otomatik kad kle" #: constants.py:162 msgid "Force keyframe" msgstr "Fòs ka kle" #: constants.py:163 msgid "Keyframe frequency" msgstr "Frekans kad kle" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Minimòm distans kat kle" #: constants.py:165 msgid "Keyframe threshold" msgstr "Mitan kad kle" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Sansib a bwi" #: constants.py:167 msgid "Quick" msgstr "Vit" #: constants.py:168 msgid "Sharpness" msgstr "Koupe" #: constants.py:169 msgid "Capacity" msgstr "Kapasite" sugar-record-activity-82/po/ur.po0000644000000000000000000001522411417267661015655 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-19 05:17-0400\n" "Last-Translator: salman minhas \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "ریکارڈ" #: constants.py:91 msgid "Photo" msgstr "فوٹو" #: constants.py:92 msgid "Video" msgstr "وڈيو" #: constants.py:93 msgid "Audio" msgstr "آڈیو" #: constants.py:94 msgid "Time Lapse" msgstr "گزرا وقت" #: constants.py:95 msgid "Animation" msgstr "اینیمشن" #: constants.py:96 msgid "Panorama" msgstr "پينوراما" #: constants.py:97 msgid "Interview" msgstr "انٹرويو" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s از %(2)" #: constants.py:100 msgid "Title:" msgstr "عنوان:" #: constants.py:101 msgid "Recorder:" msgstr "ریکارڈر:" #: constants.py:102 msgid "Date:" msgstr "تاریخ:" #: constants.py:103 msgid "Tags:" msgstr "ٹیگ:" #: constants.py:104 msgid "Saving" msgstr "محفوظ کر رہا ہے" #: constants.py:105 msgid "Finished recording" msgstr "ریکارڈ کرنا مکمل" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)sگھنٹے، %(2)s منٹ،%(1)s سيکنڈ باقی ہيں" # it wont let me write properly so have to change in the orgirnal po file #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s منٹ، %(1)s سیکنڈ باقی" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s سیکنڈ باقی" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "% (1)s منٹ باقی ہیں" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s سیکنڈ باقی" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s گھنٹے" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s منٹ" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s سيکنڈ" #: constants.py:114 msgid "Remove" msgstr "ہٹائیں" #: constants.py:115 msgid "Stopped recording" msgstr "ریکارڈنگ روک دی" #: constants.py:116 msgid "Copy to clipboard" msgstr "تختہ تراش پر نقل کریں" #: constants.py:117 msgid "Timer:" msgstr "گهڑی:" #: constants.py:118 msgid "Duration:" msgstr "دورانیہ:" #: constants.py:119 msgid "Immediate" msgstr "فوری" #: constants.py:122 msgid "Play" msgstr "چلائیں" #: constants.py:123 msgid "Pause" msgstr "توقف کریں" #: constants.py:124 msgid "Add frame" msgstr "فریم اضافہ کریں" #: constants.py:125 msgid "Remove frame" msgstr "فریم ہٹا دیں" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s فریم فی سیکنڈ" #: constants.py:127 msgid "Quality" msgstr "کوالٹی" #: constants.py:128 msgid "Default" msgstr "ڈيفالٹ" #: constants.py:129 msgid "Best" msgstr "بہترين" #: constants.py:130 msgid "High" msgstr "اونچا" #: constants.py:131 msgid "Low" msgstr "نیچا" #: constants.py:132 msgid "Large file" msgstr "بڑی مسل" #: constants.py:133 msgid "Small file" msgstr "چهوٹی مسل" #: constants.py:134 msgid "Silent" msgstr "خاموش" #: constants.py:135 msgid "Rotate" msgstr "گهمائیں" #: constants.py:136 msgid "Width" msgstr "چوڑائی" #: constants.py:137 msgid "Height" msgstr "اونچائی" #: constants.py:138 msgid "Click to take picture" msgstr "تصویر کهینچنے کے لیے کلک کریں" #: constants.py:139 msgid "Click to add picture" msgstr "تصویر اضافہ کرنے کے لیے کلک کریں" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s سے %(1)s ڈاؤن لوڈ کر رہا ہے" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "یہ %(1)s نہیں ڈاؤن لوڈ کر سکتا" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(1) محفوظ کر رہا ہے:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "آپ کی %(1)s بھر گئی ہے" #: constants.py:147 msgid "Journal" msgstr "جریدہ" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "SD کارڈ" #: constants.py:150 msgid "Preferences" msgstr "ترجیحات" #: constants.py:151 msgid "Free space:" msgstr "خالی جگہ:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s تصويريں" #: constants.py:154 msgid "Bitrate" msgstr "بٹ ريٹ" #: constants.py:155 msgid "Maximum Bitrate" msgstr "زيادہ سے زيادہ بٹ ريٹ" #: constants.py:156 msgid "Minumum Bitrate" msgstr "کم سے کم بٹ ريٹ" #: constants.py:157 msgid "Manage Bitrate" msgstr "بٹ ريٹ بندوبست کریں" #: constants.py:158 msgid "Border" msgstr "بارڈر" #: constants.py:159 msgid "Center" msgstr "مرکز" #: constants.py:160 msgid "Frames" msgstr "فریم" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "خود کار فریم کھوج" #: constants.py:162 msgid "Force keyframe" msgstr "کی فريم کو فورس کريں" #: constants.py:163 msgid "Keyframe frequency" msgstr "کی فريم کا تعدد" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "کی فريم کا کم سے کم فاصل" #: constants.py:165 msgid "Keyframe threshold" msgstr "کی فريم حد" #: constants.py:166 msgid "Noise Sensitivity" msgstr "شور کی حساسيئت" #: constants.py:167 msgid "Quick" msgstr "جلدی" #: constants.py:168 msgid "Sharpness" msgstr "نفاست" #: constants.py:169 msgid "Capacity" msgstr "گنجائش" #~ msgid "Best quality" #~ msgstr "بہترین کوالٹی" #~ msgid "High quality" #~ msgstr "اعلٰی کوالٹی" #~ msgid "Low quality" #~ msgstr "کم کوالٹی" #~ msgid "Your disk is full" #~ msgstr "آپ کی ڈسک بھر گئی ہے" sugar-record-activity-82/po/Record.pot0000644000000000000000000001623511417267661016634 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-04-20 17:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: activity/activity.info:2 #: /home/sugar/src/activities/record.activity/constants.py:122 msgid "Record" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:21 #, python-format msgid "%(1)s minute" msgid_plural "%(1)s minutes" msgstr[0] "" msgstr[1] "" #: /home/sugar/src/activities/record.activity/constants.py:25 #, python-format msgid "%(1)s second" msgid_plural "%(1)s seconds" msgstr[0] "" msgstr[1] "" #: /home/sugar/src/activities/record.activity/constants.py:123 msgid "Photo" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:124 msgid "Video" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:125 msgid "Audio" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:126 msgid "Time Lapse" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:127 msgid "Animation" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:128 msgid "Panorama" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:129 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: /home/sugar/src/activities/record.activity/constants.py:131 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:132 msgid "Title:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:133 msgid "Recorder:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:134 msgid "Date:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:135 msgid "Tags:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:136 msgid "Saving" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:137 msgid "Finished recording" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:138 msgid "Remove" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:139 msgid "Stopped recording" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:140 msgid "Copy to clipboard" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:141 msgid "Timer:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:142 msgid "Duration:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:143 msgid "Remaining:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:144 msgid "Immediate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:145 msgid "Play" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:146 msgid "Pause" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:147 msgid "Add frame" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:148 msgid "Remove frame" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:149 #, python-format msgid "%(1)s frames per second" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:150 msgid "Quality" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:151 msgid "Default" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:152 msgid "Best" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:153 msgid "High" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:154 msgid "Low" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:155 msgid "Large file" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:156 msgid "Small file" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:157 msgid "Silent" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:158 msgid "Rotate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:159 msgid "Width" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:160 msgid "Height" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:161 msgid "Click to take picture" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:162 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: /home/sugar/src/activities/record.activity/constants.py:164 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: /home/sugar/src/activities/record.activity/constants.py:166 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: /home/sugar/src/activities/record.activity/constants.py:168 #, python-format msgid "Save %(1)s to:" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:169 #, python-format msgid "Your %(1)s is full" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:170 msgid "Journal" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:171 msgid "USB" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:172 msgid "SD Card" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:173 msgid "Preferences" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:174 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: /home/sugar/src/activities/record.activity/constants.py:176 msgid "Bitrate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:177 msgid "Maximum Bitrate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:178 msgid "Minumum Bitrate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:179 msgid "Manage Bitrate" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:180 msgid "Border" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:181 msgid "Center" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:182 msgid "Frames" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:183 msgid "Automatic keyframe detection" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:184 msgid "Force keyframe" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:185 msgid "Keyframe frequency" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:186 msgid "Keyframe minimum distance" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:187 msgid "Keyframe threshold" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:188 msgid "Noise Sensitivity" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:189 msgid "Quick" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:190 msgid "Sharpness" msgstr "" #: /home/sugar/src/activities/record.activity/constants.py:191 msgid "Capacity" msgstr "" sugar-record-activity-82/po/km.po0000644000000000000000000001565311417267661015644 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Rit Lim , 2008. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "កំណត់" #: constants.py:91 msgid "Photo" msgstr "រូបថត" #: constants.py:92 msgid "Video" msgstr "វីដេអូ" #: constants.py:93 msgid "Audio" msgstr "សំលេង" #: constants.py:94 msgid "Time Lapse" msgstr "រយពេល" #: constants.py:95 msgid "Animation" msgstr "ចលនា" #: constants.py:96 msgid "Panorama" msgstr "មើល​ពី​ចំងាយ" #: constants.py:97 msgid "Interview" msgstr "សម្ភាសន៏" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s ដោយ %(2)s" #: constants.py:100 msgid "Title:" msgstr "ចំណង​ជើង" #: constants.py:101 msgid "Recorder:" msgstr "ថត​កំណត់" #: constants.py:102 msgid "Date:" msgstr "ថ្ងៃ​ខែ: " #: constants.py:103 msgid "Tags:" msgstr "គំនូស: " #: constants.py:104 msgid "Saving" msgstr "ថត​ទុក" #: constants.py:105 msgid "Finished recording" msgstr "ថត​រួច​ហើយ" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "មានសល់ពេល %(1)s ម៉ោង, %(2)s នាទី, %(1)s វិនាទី" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "មានសល់ពេល %(1)s នាទី, %(2)s វិនាទី" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "មានសល់ពេល %(1)s ម៉ោង" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "មានសល់ពេល %(1)s នាទី" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "មានសល់ពេល %(1)s វិនាទី" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ម៉ោង" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s នាទី" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s វិនាទី" #: constants.py:114 msgid "Remove" msgstr "យកចេញ" #: constants.py:115 msgid "Stopped recording" msgstr "ឈប់​ថត" #: constants.py:116 msgid "Copy to clipboard" msgstr "ចំលង" #: constants.py:117 msgid "Timer:" msgstr "ម៉ោង: " #: constants.py:118 msgid "Duration:" msgstr "រយពេល: " #: constants.py:119 msgid "Immediate" msgstr "ភ្លាម" #: constants.py:122 msgid "Play" msgstr "លេញ" #: constants.py:123 msgid "Pause" msgstr "ផ្អាក" #: constants.py:124 msgid "Add frame" msgstr "បន្ថែម​ស៊ុម" #: constants.py:125 msgid "Remove frame" msgstr "ដក​ស៊ុម" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s ស៊ុម​ក្នុង​មួយ​ម៉ោង" #: constants.py:127 msgid "Quality" msgstr "គុណភាព" #: constants.py:128 msgid "Default" msgstr "លំនាំដើម" #: constants.py:129 msgid "Best" msgstr "ល្អ​ដាច់​គេ" #: constants.py:130 msgid "High" msgstr "ខ្ពស់" #: constants.py:131 msgid "Low" msgstr "ទាប" #: constants.py:132 msgid "Large file" msgstr "ឯកសារ​ធំ" #: constants.py:133 msgid "Small file" msgstr "ឯកសារ​តូច" #: constants.py:134 msgid "Silent" msgstr "ស្ងាត់" #: constants.py:135 msgid "Rotate" msgstr "បង្វិល" #: constants.py:136 msgid "Width" msgstr "ទទឹង" #: constants.py:137 msgid "Height" msgstr "កំពស់" #: constants.py:138 msgid "Click to take picture" msgstr "ថត​រូបភាព" #: constants.py:139 msgid "Click to add picture" msgstr "បន្ថែម​រូបភាព" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "ទាញ %(1)s ពី %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "មិន​អាច​ទាញ %(1)s បាន​ទេ" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "ថត %(1) ទៅ:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s របស់អ្នក​ពេញ​ហ៊ា" #: constants.py:147 msgid "Journal" msgstr "កំណត់​ប្រចាំ​ថ្ងៃ" #: constants.py:148 msgid "USB" msgstr "យូអេសប៊ី" #: constants.py:149 msgid "SD Card" msgstr "កាត​អេសឌី" #: constants.py:150 msgid "Preferences" msgstr "ចំណូល​ចិត្ត" #: constants.py:151 msgid "Free space:" msgstr "ថាស​នៅ​សល់" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s រូបភាព" #: constants.py:154 msgid "Bitrate" msgstr "អត្រាប៊ីត" #: constants.py:155 msgid "Maximum Bitrate" msgstr "អត្រាប៊ីត​ធំ​ជាង​គេ" #: constants.py:156 msgid "Minumum Bitrate" msgstr "អត្រាប៊ីត​តូច​ជាង​គេ" #: constants.py:157 msgid "Manage Bitrate" msgstr "គ្រប់គ្រង​អត្រាប៊ីត" #: constants.py:158 msgid "Border" msgstr "ព្រំដែន" #: constants.py:159 msgid "Center" msgstr "កណ្ដាល" #: constants.py:160 msgid "Frames" msgstr "ស៊ុម" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "អង្តេត​ស៊ុមឃីដោយ​ស្វ័យប្រវត្តិ" #: constants.py:162 msgid "Force keyframe" msgstr "បង្ខំ​ស៊ុមឃី" #: constants.py:163 msgid "Keyframe frequency" msgstr "ចង្វាក់​ស៊ុមឃី​" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "ស៊ុមឃី​ចំងាយ​តូចបំផុត" #: constants.py:165 msgid "Keyframe threshold" msgstr "កម្រិត​ស៊ុមឃី" #: constants.py:166 msgid "Noise Sensitivity" msgstr "កម្រិត​ប្រកាន​ជ្រៀតជ្រេត" #: constants.py:167 msgid "Quick" msgstr "ឆាប់ៗ" #: constants.py:168 msgid "Sharpness" msgstr "កម្រិតស្រួច" #: constants.py:169 msgid "Capacity" msgstr "កម្រិត​ទំហំ" sugar-record-activity-82/po/ha.po0000644000000000000000000001141011417267661015610 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/gu.po0000644000000000000000000001141011417267661015633 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/wa.po0000644000000000000000000001140411417267661015632 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/cs.po0000644000000000000000000001140411417267661015630 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/si.po0000644000000000000000000001633311417267661015644 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-09-15 06:28-0400\n" "Last-Translator: Rashan Anushka \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "පටිගත කරන්න" #: constants.py:113 msgid "Photo" msgstr "පින්තූරය" #: constants.py:114 msgid "Video" msgstr "වීඩියෝ දසුන" #: constants.py:115 msgid "Audio" msgstr "ශ්‍රව්‍ය" #: constants.py:116 msgid "Time Lapse" msgstr "කාල අපගමනය" #: constants.py:117 msgid "Animation" msgstr "සජීවනය" #: constants.py:118 msgid "Panorama" msgstr "පරිදර්ශනය" #: constants.py:119 msgid "Interview" msgstr "අබිදැක්ම" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s %(2)s මඟිනි" #: constants.py:122 msgid "Title:" msgstr "සිරැසිය:" #: constants.py:123 msgid "Recorder:" msgstr "රෙකෝඩරය:" #: constants.py:124 msgid "Date:" msgstr "දිනය:" #: constants.py:125 msgid "Tags:" msgstr "ටෑගයන්:" #: constants.py:126 msgid "Saving" msgstr "සුරැකේ" #: constants.py:127 msgid "Finished recording" msgstr "පටිගත කිරීම අවසන්" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "පැය %(1)s , මිනිත්තු %(2)s , තත්පර %(3)s ක් ඉතිරියි" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "මිනිත්තු %(1)s , තත්පර %(2)s ක් ඉතිරියි" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "පැය %(1)s ක් ඉතිරියි" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "මිනිත්තු %(1)s ක් ඉතිරියි" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "තත්පර %(1)s ක් ඉතිරියි" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "පැය %(1)s" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "මිනිත්තු %(1)s" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "තත්පර %(1)s ක්" #: constants.py:136 msgid "Remove" msgstr "ඉවත් කරන්න" #: constants.py:137 msgid "Stopped recording" msgstr "පටිගත කිරීම නවතන ලදි" #: constants.py:138 msgid "Copy to clipboard" msgstr "පසුරු පුවරුවට පිටපත් කරන්න" #: constants.py:139 msgid "Timer:" msgstr "මුහුර්තකය:" #: constants.py:140 msgid "Duration:" msgstr "කාල සීමාව:" #: constants.py:141 msgid "Immediate" msgstr "එසැනින්" #: constants.py:142 msgid "Play" msgstr "වයන්න" #: constants.py:143 msgid "Pause" msgstr "විරාමයක්" #: constants.py:144 msgid "Add frame" msgstr "රාමුවක් එක් කරන්න" #: constants.py:145 msgid "Remove frame" msgstr "රාමුව ඉවත් කරන්න" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "තත්පරයට රාමු %(1)s ක්" #: constants.py:147 msgid "Quality" msgstr "ගුණත්වය" #: constants.py:148 msgid "Default" msgstr "පෙරනිමිය" #: constants.py:149 msgid "Best" msgstr "ඉස්තරම්" #: constants.py:150 msgid "High" msgstr "උසස්" #: constants.py:151 msgid "Low" msgstr "අඩු" #: constants.py:152 msgid "Large file" msgstr "විශාල ගොනුවක්" #: constants.py:153 msgid "Small file" msgstr "කුඩා ගොනුවක්" #: constants.py:154 msgid "Silent" msgstr "නිශ්ශබ්ද" #: constants.py:155 msgid "Rotate" msgstr "භ්‍රමණය කරන්න" #: constants.py:156 msgid "Width" msgstr "පළල" #: constants.py:157 msgid "Height" msgstr "උස" #: constants.py:158 msgid "Click to take picture" msgstr "පින්තූරය ගැනීමට ක්ලික් කරන්න" #: constants.py:159 msgid "Click to add picture" msgstr "පින්තූරය එක් කිරීම සඳහා ක්ලික් කරන්න" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s න් %(1)s බාගත කෙරේ" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "මෙම %(1)s බාගත කළ නොහැක" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "%(1)s සුරැකිය යුත්තේ:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "ඔබගේ %(1)s පිරී ඇත" #: constants.py:167 msgid "Journal" msgstr "ජර්නලය" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD පත" #: constants.py:170 msgid "Preferences" msgstr "අභිරුචි" #: constants.py:171 msgid "Free space:" msgstr "නිදහස් ඉඩ:" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "පින්තූර %(1)s ක්" #: constants.py:174 msgid "Bitrate" msgstr "බිටු ශීඝ්‍රතාව" #: constants.py:175 msgid "Maximum Bitrate" msgstr "උපරිම බිටු ශීඝ්‍රතාව" #: constants.py:176 msgid "Minumum Bitrate" msgstr "අවම බිටු ශීඝ්‍රතාව" #: constants.py:177 msgid "Manage Bitrate" msgstr "බිටු ශීඝ්‍රතාව කළමණාකරනය කරන්න" #: constants.py:178 msgid "Border" msgstr "දාරය" #: constants.py:179 msgid "Center" msgstr "මධ්‍යය" #: constants.py:180 msgid "Frames" msgstr "රාමු" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "ස්වයංක්‍රීය මූල රාමු අභික්ෂණය" #: constants.py:182 msgid "Force keyframe" msgstr "මූල රාමුව බල කරන්න" #: constants.py:183 msgid "Keyframe frequency" msgstr "මූල රාමු සංඛ්‍යාතය" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "මූල රාමු අවම දුර" #: constants.py:185 msgid "Keyframe threshold" msgstr "මූල රාමු සීමකය" #: constants.py:186 msgid "Noise Sensitivity" msgstr "ඝෝෂා සංවේදිතාව" #: constants.py:187 msgid "Quick" msgstr "ක්ෂණික" #: constants.py:188 msgid "Sharpness" msgstr "තියුණු බව" #: constants.py:189 msgid "Capacity" msgstr "ධාරිතාව" sugar-record-activity-82/po/pseudo.po0000644000000000000000000001141011417267661016517 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/sq.po0000644000000000000000000001140111417267661015643 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.3.0\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/qu.po0000644000000000000000000001141111417267661015646 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ig.po0000644000000000000000000001141011417267661015617 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/fa_AF.po0000644000000000000000000001473711417267661016173 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-24 07:53-0400\n" "Last-Translator: Sohaib Obaidi \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "ضبط" #: constants.py:91 msgid "Photo" msgstr "عکس" #: constants.py:92 msgid "Video" msgstr "ویدیو" #: constants.py:93 msgid "Audio" msgstr "صدا" #: constants.py:94 msgid "Time Lapse" msgstr "گذشت زمان" #: constants.py:95 msgid "Animation" msgstr "پویانمایی" #: constants.py:96 msgid "Panorama" msgstr "چشم انداز" #: constants.py:97 msgid "Interview" msgstr "مصاحبه" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s توسط %(2)s" #: constants.py:100 msgid "Title:" msgstr "عنوان:" #: constants.py:101 msgid "Recorder:" msgstr "ضبط کننده:" #: constants.py:102 msgid "Date:" msgstr "تاریخ:" #: constants.py:103 msgid "Tags:" msgstr "برچسبها:" #: constants.py:104 msgid "Saving" msgstr "ذخیره‌سازی" #: constants.py:105 msgid "Finished recording" msgstr "ضبطهای تمام‌شده" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s ساعت، %(1)s دقیقه، %(1)s ثانیه مانده" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s دقیقه، %(1)s ثانیه مانده" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s ساعت مانده" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s دقيقه مانده" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s ثانیه مانده" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ساعت" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s دقیقه" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s ثانیه" #: constants.py:114 msgid "Remove" msgstr "برداشتن" #: constants.py:115 msgid "Stopped recording" msgstr "ضبط متوقف شده" #: constants.py:116 msgid "Copy to clipboard" msgstr "نقل گیری به تخته رسم" #: constants.py:117 msgid "Timer:" msgstr "زمان سنج:" #: constants.py:118 msgid "Duration:" msgstr "مدت:" #: constants.py:119 msgid "Immediate" msgstr "فوری" #: constants.py:122 msgid "Play" msgstr "نواختن" #: constants.py:123 msgid "Pause" msgstr "مکث" #: constants.py:124 msgid "Add frame" msgstr "افزودن قاب" #: constants.py:125 msgid "Remove frame" msgstr "برداشتن قاب" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s قاب در ثانیه" #: constants.py:127 msgid "Quality" msgstr "کیفیت:" #: constants.py:128 msgid "Default" msgstr "قراردادي" #: constants.py:129 msgid "Best" msgstr "بهترين" #: constants.py:130 msgid "High" msgstr "بلند" #: constants.py:131 msgid "Low" msgstr "پست" #: constants.py:132 msgid "Large file" msgstr "پرونده بزرگ" #: constants.py:133 msgid "Small file" msgstr "پرونده کوچک" #: constants.py:134 msgid "Silent" msgstr "سکوت" #: constants.py:135 msgid "Rotate" msgstr "چرخش" #: constants.py:136 msgid "Width" msgstr "عرض" #: constants.py:137 msgid "Height" msgstr "ارتفاع" #: constants.py:138 msgid "Click to take picture" msgstr "برای عکس گرفتن کلیک کن" #: constants.py:139 msgid "Click to add picture" msgstr "برای افزودن عکس کلیک کن" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "در حال دریافت %(1)s از %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "این %(1)s دریافت نمی‌شود" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "حفظ %(1)s در:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s شما پر است" #: constants.py:147 msgid "Journal" msgstr "روزنامه" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "کارت SD" #: constants.py:150 msgid "Preferences" msgstr "اولویت ها" #: constants.py:151 msgid "Free space:" msgstr "فضای خالی" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s عکسها" #: constants.py:154 msgid "Bitrate" msgstr "جریان بت" #: constants.py:155 msgid "Maximum Bitrate" msgstr "بیشترین جریان بت" #: constants.py:156 msgid "Minumum Bitrate" msgstr "کمترین جریان بت" #: constants.py:157 msgid "Manage Bitrate" msgstr "اداره جریان بت" #: constants.py:158 msgid "Border" msgstr "حاشیه" #: constants.py:159 msgid "Center" msgstr "مرکز" #: constants.py:160 msgid "Frames" msgstr "قاب ها" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "کشف اتوماتیکی قاب کلیدی" #: constants.py:162 msgid "Force keyframe" msgstr "قاب کلیدی نفوذ" #: constants.py:163 msgid "Keyframe frequency" msgstr "تناوب قاب کلیدی" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "کمترین فاصله قاب کلیدی" #: constants.py:165 msgid "Keyframe threshold" msgstr "آستانه قاب کلیدی" #: constants.py:166 msgid "Noise Sensitivity" msgstr "حساسیت صدا" #: constants.py:167 msgid "Quick" msgstr "سریع" #: constants.py:168 msgid "Sharpness" msgstr "تیزی" #: constants.py:169 msgid "Capacity" msgstr "ظرفیت" #~ msgid "Best quality" #~ msgstr "بهترین کیفیت" #~ msgid "High quality" #~ msgstr "کیفیت بالا" #~ msgid "Low quality" #~ msgstr "کیفیت پایین" #~ msgid "Your disk is full" #~ msgstr "دسک شما پر است" sugar-record-activity-82/po/fr.po0000644000000000000000000001445311417267661015641 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2010-01-25 07:34+0200\n" "Last-Translator: Chris \n" "Language-Team: LANGUAGE \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Pootle 2.0.1\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Enregistrer" #: constants.py:113 msgid "Photo" msgstr "Photo" #: constants.py:114 msgid "Video" msgstr "Vidéo" #: constants.py:115 msgid "Audio" msgstr "Audio" #: constants.py:116 msgid "Time Lapse" msgstr "Laps de temps" #: constants.py:117 msgid "Animation" msgstr "Animation" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Interview" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s par %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titre :" #: constants.py:123 msgid "Recorder:" msgstr "Enregistreur :" #: constants.py:124 msgid "Date:" msgstr "Date :" #: constants.py:125 msgid "Tags:" msgstr "Étiquettes :" #: constants.py:126 msgid "Saving" msgstr "Sauvegarde" #: constants.py:127 msgid "Finished recording" msgstr "Enregistrement terminé" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s heures, %(2)s minutes, %(1)s secondes restantes" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minutes, %(2)s secondes restantes" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s heures restantes" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minutes restantes" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s secondes restantes" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s heures" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minutes" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s secondes" #: constants.py:136 msgid "Remove" msgstr "Retirer" #: constants.py:137 msgid "Stopped recording" msgstr "Enregistrement arrêté" #: constants.py:138 msgid "Copy to clipboard" msgstr "Copier vers le presse-papier" #: constants.py:139 msgid "Timer:" msgstr "Temporisation :" #: constants.py:140 msgid "Duration:" msgstr "Durée :" #: constants.py:141 msgid "Immediate" msgstr "Immédiat" #: constants.py:142 msgid "Play" msgstr "Lecture" #: constants.py:143 msgid "Pause" msgstr "Pause" #: constants.py:144 msgid "Add frame" msgstr "Ajouter une image" #: constants.py:145 msgid "Remove frame" msgstr "Retirer une image" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s images par seconde" #: constants.py:147 msgid "Quality" msgstr "Qualité" #: constants.py:148 msgid "Default" msgstr "Défaut" #: constants.py:149 msgid "Best" msgstr "Meilleur" #: constants.py:150 msgid "High" msgstr "Haut" #: constants.py:151 msgid "Low" msgstr "Bas" #: constants.py:152 msgid "Large file" msgstr "Fichier volumineux" #: constants.py:153 msgid "Small file" msgstr "Fichier de petite taille" #: constants.py:154 msgid "Silent" msgstr "Muet" #: constants.py:155 msgid "Rotate" msgstr "Pivotement" #: constants.py:156 msgid "Width" msgstr "Largeur" #: constants.py:157 msgid "Height" msgstr "Hauteur" #: constants.py:158 msgid "Click to take picture" msgstr "Cliquer pour prendre une photo" #: constants.py:159 msgid "Click to add picture" msgstr "Cliquer pour ajouter une photo" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Téléchargement de %(1)s sur %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Téléchargement de %(1)s impossible" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Enregistrer %(1)s sur :" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Vous n'avez plus d'espace libre sur %(1)s" #: constants.py:167 msgid "Journal" msgstr "Journal" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD Card" #: constants.py:170 msgid "Preferences" msgstr "Préférences" #: constants.py:171 msgid "Free space:" msgstr "Espace libre :" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s photos" #: constants.py:174 msgid "Bitrate" msgstr "Débit" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Débit maximum" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Débit minimum" #: constants.py:177 msgid "Manage Bitrate" msgstr "Gestion du débit" #: constants.py:178 msgid "Border" msgstr "Bord" #: constants.py:179 msgid "Center" msgstr "Centre" #: constants.py:180 msgid "Frames" msgstr "Images" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Détection automatique des images clés" #: constants.py:182 msgid "Force keyframe" msgstr "Forcer l'image clé" #: constants.py:183 msgid "Keyframe frequency" msgstr "Fréquence des images clés" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Distance minimum entre images clés" #: constants.py:185 msgid "Keyframe threshold" msgstr "Seuil d'images clés" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Sensibilité au bruit" #: constants.py:187 msgid "Quick" msgstr "Rapidité" #: constants.py:188 msgid "Sharpness" msgstr "Définition" #: constants.py:189 msgid "Capacity" msgstr "Capacité" #~ msgid "Best quality" #~ msgstr "Qualité optimale" #~ msgid "High quality" #~ msgstr "Qualité élevée" #~ msgid "Low quality" #~ msgstr "Qualité faible" #~ msgid "Your disk is full" #~ msgstr "Votre disque est saturé" sugar-record-activity-82/po/bi.po0000644000000000000000000001140411417267661015615 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ta.po0000644000000000000000000001141011417267661015624 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-07 13:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/pt_BR.po0000644000000000000000000001427611417267661016243 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-07-09 08:31-0400\n" "Last-Translator: Juliano Bittencourt \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Gravar" #: constants.py:91 msgid "Photo" msgstr "Foto" #: constants.py:92 msgid "Video" msgstr "Vídeo" #: constants.py:93 msgid "Audio" msgstr "Som" #: constants.py:94 msgid "Time Lapse" msgstr "Duração" #: constants.py:95 msgid "Animation" msgstr "Animação" #: constants.py:96 msgid "Panorama" msgstr "Panorama" #: constants.py:97 msgid "Interview" msgstr "Entrevista" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s por %(2)s" #: constants.py:100 msgid "Title:" msgstr "Título:" #: constants.py:101 msgid "Recorder:" msgstr "Gravador:" #: constants.py:102 msgid "Date:" msgstr "Data:" #: constants.py:103 msgid "Tags:" msgstr "Etiquetas:" #: constants.py:104 msgid "Saving" msgstr "Salvando" #: constants.py:105 msgid "Finished recording" msgstr "Gravação terminada" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s horas, %(2)s minutos, %(1)s segundos restantes" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minutos, %(1)s segundos restantes" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s horas restantes" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minutos restantes" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s segundos faltando" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s horas" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minutos" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segundos" #: constants.py:114 msgid "Remove" msgstr "Remover" #: constants.py:115 msgid "Stopped recording" msgstr "Gravação interrompida" #: constants.py:116 msgid "Copy to clipboard" msgstr "Copiar para a prancheta" # I think it's better not to translate this term because it's used by brazilians. #: constants.py:117 msgid "Timer:" msgstr "Timer:" #: constants.py:118 msgid "Duration:" msgstr "Duração:" #: constants.py:119 msgid "Immediate" msgstr "Imediato" #: constants.py:122 msgid "Play" msgstr "Reproduzir" #: constants.py:123 msgid "Pause" msgstr "Pausar" #: constants.py:124 msgid "Add frame" msgstr "Adicionar quadro" #: constants.py:125 msgid "Remove frame" msgstr "Remover quadro" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s quadros por segundo" #: constants.py:127 msgid "Quality" msgstr "Qualidade:" #: constants.py:128 msgid "Default" msgstr "Padrão" #: constants.py:129 msgid "Best" msgstr "Melhor" #: constants.py:130 msgid "High" msgstr "Alta" #: constants.py:131 msgid "Low" msgstr "Baixa" #: constants.py:132 msgid "Large file" msgstr "Arquivo grande" #: constants.py:133 msgid "Small file" msgstr "Arquivo pequeno" #: constants.py:134 msgid "Silent" msgstr "Silencioso" #: constants.py:135 msgid "Rotate" msgstr "Girar" #: constants.py:136 msgid "Width" msgstr "Largura" #: constants.py:137 msgid "Height" msgstr "Altura" #: constants.py:138 msgid "Click to take picture" msgstr "Clique para tirar foto" #: constants.py:139 msgid "Click to add picture" msgstr "Clique para adicionar imagem" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Efetuando o download de %(1)s a partir de %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Não é possível efetuar o download de %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Salvar %(1) para:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Seu %(1)s está cheio" #: constants.py:147 msgid "Journal" msgstr "Diário" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "Cartão SD" #: constants.py:150 msgid "Preferences" msgstr "Preferências" #: constants.py:151 msgid "Free space:" msgstr "Espaço livre:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotos" #: constants.py:154 msgid "Bitrate" msgstr "Bitrate" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Bitrate Máximo" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Bitrate Mínimo" #: constants.py:157 msgid "Manage Bitrate" msgstr "Gerenciar o Bitrate" # Moldura? #: constants.py:158 msgid "Border" msgstr "Borda" #: constants.py:159 msgid "Center" msgstr "Centro" #: constants.py:160 msgid "Frames" msgstr "Quadros" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Detecção automática do quadro chave" #: constants.py:162 msgid "Force keyframe" msgstr "Forçar o quadro chave" #: constants.py:163 msgid "Keyframe frequency" msgstr "Freqüência do quadro chave" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Distância mínima entre os quadro chave" #: constants.py:165 msgid "Keyframe threshold" msgstr "Limite do quadro chave" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Sensibilidade ao Ruído" #: constants.py:167 msgid "Quick" msgstr "Rapidamente" #: constants.py:168 msgid "Sharpness" msgstr "Nitidez" #: constants.py:169 msgid "Capacity" msgstr "Capacidade" #~ msgid "Best quality" #~ msgstr "Melhor qualidade" #~ msgid "High quality" #~ msgstr "Alta qualidade" #~ msgid "Low quality" #~ msgstr "Baixa qualidade" #~ msgid "Your disk is full" #~ msgstr "Seu disco está cheio" sugar-record-activity-82/po/he.po0000644000000000000000000001145111417267661015621 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-12-15 15:01-0500\n" "Last-Translator: Guy Sheffer \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "הקלטה" #: constants.py:113 msgid "Photo" msgstr "צילום" #: constants.py:114 msgid "Video" msgstr "וידאו" #: constants.py:115 msgid "Audio" msgstr "צליל" #: constants.py:116 msgid "Time Lapse" msgstr "השהייה" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ne.po0000644000000000000000000001610011417267661015623 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-30 13:33-0400\n" "Last-Translator: Prabhas Pokharel \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "खिच" #: constants.py:91 msgid "Photo" msgstr "तस्बिर" #: constants.py:92 msgid "Video" msgstr "भिडियो" #: constants.py:93 msgid "Audio" msgstr "आवाज" #: constants.py:94 msgid "Time Lapse" msgstr "गएको समय " #: constants.py:95 msgid "Animation" msgstr "सजिबता" #: constants.py:96 msgid "Panorama" msgstr "सर्वतोव्यापी दृश्य" #: constants.py:97 msgid "Interview" msgstr "अन्तर्वार्ता" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s ले खिचेको %1(s)" #: constants.py:100 msgid "Title:" msgstr "शिर्षक:" #: constants.py:101 msgid "Recorder:" msgstr "रिर्कडर:" #: constants.py:102 msgid "Date:" msgstr "मिति:" #: constants.py:103 msgid "Tags:" msgstr "चिन्ह:" #: constants.py:104 msgid "Saving" msgstr "बचत गर्दै" #: constants.py:105 msgid "Finished recording" msgstr "खिचेर सकियो" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(१) घन्टा,%(२) मिनेट,%(१) सेकेन्ड बाँकी" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(१) मिनेट,%(२) सेकेन्ड बाँकी" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(१) घन्टा बाँकी" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(१) मिनेट बाँकी" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(१) सेकेन्ड बाँकी" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(१) घन्टा" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(१) मिनेट" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(१) सेकेन्ड" # हटाउ is a really better translation and slightly less rude (than निकाल) (agreed). #: constants.py:114 msgid "Remove" msgstr "हटाउ" #: constants.py:115 msgid "Stopped recording" msgstr "खिच्न रोकियो" #: constants.py:116 msgid "Copy to clipboard" msgstr "क्लिपबोर्डमा सार" #: constants.py:117 msgid "Timer:" msgstr "समय सुचक:" #: constants.py:118 msgid "Duration:" msgstr "अवधि:" #: constants.py:119 msgid "Immediate" msgstr "तुरून्त" #: constants.py:122 msgid "Play" msgstr "खेल" #: constants.py:123 msgid "Pause" msgstr "रोक" #: constants.py:124 msgid "Add frame" msgstr "फ्रेम जोड" #: constants.py:125 msgid "Remove frame" msgstr "फ्रेम हटाउ" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s फ्रेम प्रति सेकेण्ड" # this is referring to quality of videos / audios. is गुण appropriate? #: constants.py:127 msgid "Quality" msgstr "गुणस्तर" #: constants.py:128 msgid "Default" msgstr "डिफल्ट" #: constants.py:129 msgid "Best" msgstr "सर्वोत्तम" #: constants.py:130 msgid "High" msgstr "ठुलो" #: constants.py:131 msgid "Low" msgstr "सानो" #: constants.py:132 msgid "Large file" msgstr "ठूलो फाइल" #: constants.py:133 msgid "Small file" msgstr "सानो फाइल" #: constants.py:134 msgid "Silent" msgstr "मौन" #: constants.py:135 msgid "Rotate" msgstr "घुमाउ" #: constants.py:136 msgid "Width" msgstr "चौडाई" #: constants.py:137 msgid "Height" msgstr "उचाई" #: constants.py:138 msgid "Click to take picture" msgstr "तस्बिर लिन क्लिक गर" #: constants.py:139 msgid "Click to add picture" msgstr "तस्बिर थप्न क्लिक गर" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(१) बाट %(२) दाउनलोड गर्दै" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "%(१) दाउनलोड गर्न सकेन" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(१)मा बचाऊ" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "तिम्रो %(1) मा ठाउँ पुगेन" #: constants.py:147 msgid "Journal" msgstr "खाता" #: constants.py:148 msgid "USB" msgstr "युएसबी" #: constants.py:149 msgid "SD Card" msgstr "एसडी कार्ड" #: constants.py:150 msgid "Preferences" msgstr "प्राथमिकता" #: constants.py:151 msgid "Free space:" msgstr "खाली ठाउँ:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)का तस्विरहरु" #: constants.py:154 msgid "Bitrate" msgstr "बिटरेट" #: constants.py:155 msgid "Maximum Bitrate" msgstr "सबभन्दा धेरै बिटरेट" #: constants.py:156 msgid "Minumum Bitrate" msgstr "सबभन्दा थोरै बिटरेट" #: constants.py:157 msgid "Manage Bitrate" msgstr "बिटरेट मिलाउ" #: constants.py:158 msgid "Border" msgstr "घेरा" #: constants.py:159 msgid "Center" msgstr "बीच" #: constants.py:160 msgid "Frames" msgstr "फ्रेमहरु" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "अटोमेटिक किफ्रेम डिटेक्सन्" #: constants.py:162 msgid "Force keyframe" msgstr "फोर्स किफ्रेम" #: constants.py:163 msgid "Keyframe frequency" msgstr "किफ्रेम फ्रिकोयन्सी" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "िकफ्रेम नियुन दुरी " #: constants.py:165 msgid "Keyframe threshold" msgstr "किफ्रम थ्रेसहोल्ड" #: constants.py:166 msgid "Noise Sensitivity" msgstr "नोइज सेन्सिटिभिटि" #: constants.py:167 msgid "Quick" msgstr "छिटो" #: constants.py:168 msgid "Sharpness" msgstr "कडापन" #: constants.py:169 msgid "Capacity" msgstr "क्षमता" sugar-record-activity-82/po/pl.po0000644000000000000000000001306411417267661015642 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-11-28 21:58+0000\n" "Last-Translator: Wiktor Idzikowski \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Nagraj" #: constants.py:91 msgid "Photo" msgstr "Zdjęcie" #: constants.py:92 msgid "Video" msgstr "Wideo" #: constants.py:93 msgid "Audio" msgstr "Dźwięk" #: constants.py:94 msgid "Time Lapse" msgstr "Upływ czasu" #: constants.py:95 msgid "Animation" msgstr "Animacja" #: constants.py:96 msgid "Panorama" msgstr "Panorama" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s wykonane przez %(2)s" #: constants.py:100 msgid "Title:" msgstr "Tytuł:" #: constants.py:101 msgid "Recorder:" msgstr "Nagrywający:" #: constants.py:102 msgid "Date:" msgstr "Data:" #: constants.py:103 msgid "Tags:" msgstr "Tagi:" #: constants.py:104 msgid "Saving" msgstr "Zapisywanie" #: constants.py:105 msgid "Finished recording" msgstr "Nagrywanie zakończone" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "zostały %(1)s minuty, %(1)s sekundy " #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "zostały %(1)s sekundy" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "zostały %(1)s sekundy" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "zostały %(1)s sekundy" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minuty" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s sekundy" #: constants.py:114 msgid "Remove" msgstr "Usuń" #: constants.py:115 msgid "Stopped recording" msgstr "Nagrywanie zatrzymane" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopiuj do schowka" #: constants.py:117 msgid "Timer:" msgstr "Stoper:" #: constants.py:118 msgid "Duration:" msgstr "Czas trwania:" #: constants.py:119 msgid "Immediate" msgstr "Natychmiast" #: constants.py:122 msgid "Play" msgstr "Odtwórz" #: constants.py:123 msgid "Pause" msgstr "Pauza" #: constants.py:124 msgid "Add frame" msgstr "Dodaj klatkę" #: constants.py:125 msgid "Remove frame" msgstr "Usuń klatkę" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s klatki na sekundę" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "Jakość:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "Duży plik" #: constants.py:133 msgid "Small file" msgstr "Mały plik" #: constants.py:134 msgid "Silent" msgstr "Cicho" #: constants.py:135 msgid "Rotate" msgstr "Obróć" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "Kliknij aby zrobić zdjęcie" #: constants.py:139 msgid "Click to add picture" msgstr "Kliknij aby dodać zdjęcie" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Pobieranie %(1)s od %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Nie można pobrać tego %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" #~ msgid "Best quality" #~ msgstr "Najlepsza jakość" #~ msgid "High quality" #~ msgstr "Wysoka jakość" #~ msgid "Low quality" #~ msgstr "Niska jakość" sugar-record-activity-82/po/mvo.po0000644000000000000000000001141311417267661016024 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/tr.po0000644000000000000000000001356211417267661015657 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-10-06 10:03-0400\n" "Last-Translator: abdullah kocabas \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Kayıt" #: constants.py:113 msgid "Photo" msgstr "Fotoğraf" #: constants.py:114 msgid "Video" msgstr "Video" #: constants.py:115 msgid "Audio" msgstr "Ses" #: constants.py:116 msgid "Time Lapse" msgstr "Gecikme" #: constants.py:117 msgid "Animation" msgstr "Canlandırma" #: constants.py:118 msgid "Panorama" msgstr "Genel görünüm" #: constants.py:119 msgid "Interview" msgstr "Röportaj" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s den %(1)s" #: constants.py:122 msgid "Title:" msgstr "Başlık:" #: constants.py:123 msgid "Recorder:" msgstr "Kayıt aleti:" #: constants.py:124 msgid "Date:" msgstr "Tarih:" #: constants.py:125 msgid "Tags:" msgstr "Etiket:" #: constants.py:126 msgid "Saving" msgstr "Kaydetme" #: constants.py:127 msgid "Finished recording" msgstr "Kayıt tamamlandı" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s saat, %(2)s dakika, %(3)s saniye kaldı" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s dakika, %(2)s saniye kaldı" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1) saat kaldı" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s dakika kaldı" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s saniye kaldı" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s saat" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s dakika" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s saniye" #: constants.py:136 msgid "Remove" msgstr "Kaldır" #: constants.py:137 msgid "Stopped recording" msgstr "Kayıt durdu" #: constants.py:138 msgid "Copy to clipboard" msgstr "Klasöre kopyala" #: constants.py:139 msgid "Timer:" msgstr "Süre ölçer:" #: constants.py:140 msgid "Duration:" msgstr "Süre:" #: constants.py:141 msgid "Immediate" msgstr "Hemen" #: constants.py:142 msgid "Play" msgstr "Oynat" #: constants.py:143 msgid "Pause" msgstr "Ara" #: constants.py:144 msgid "Add frame" msgstr "Çerçeve ekle" #: constants.py:145 msgid "Remove frame" msgstr "Çerçeveyi kaldır" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "saniyede %(1)s çerçeve " #: constants.py:147 msgid "Quality" msgstr "Nitelik" #: constants.py:148 msgid "Default" msgstr "Hata" #: constants.py:149 msgid "Best" msgstr "En iyi" #: constants.py:150 msgid "High" msgstr "Yüksek" #: constants.py:151 msgid "Low" msgstr "Düşük" #: constants.py:152 msgid "Large file" msgstr "Büyük dosya" #: constants.py:153 msgid "Small file" msgstr "Küçük dosya" #: constants.py:154 msgid "Silent" msgstr "Sessiz" #: constants.py:155 msgid "Rotate" msgstr "Döndür" #: constants.py:156 msgid "Width" msgstr "Genişlik" #: constants.py:157 msgid "Height" msgstr "Yükseklik" #: constants.py:158 msgid "Click to take picture" msgstr "Resim çekmek için tıkla" #: constants.py:159 msgid "Click to add picture" msgstr "Resim eklemek için tıkla" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s nin %(1)s yükleniyor" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "%(1)s yüklenemiyor" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "%(1)s 'i kaydet:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s dolu" #: constants.py:167 msgid "Journal" msgstr "Günlük" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD kartı" #: constants.py:170 msgid "Preferences" msgstr "Tercihler" #: constants.py:171 msgid "Free space:" msgstr "Boş alan:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1) resimler" #: constants.py:174 msgid "Bitrate" msgstr "Ses ölçüm birimi" #: constants.py:175 msgid "Maximum Bitrate" msgstr "En yüksek ses birimi" #: constants.py:176 msgid "Minumum Bitrate" msgstr "En düşük ses birimi" #: constants.py:177 msgid "Manage Bitrate" msgstr "Ses birimini ayarla" #: constants.py:178 msgid "Border" msgstr "Sınır" #: constants.py:179 msgid "Center" msgstr "Merkez" #: constants.py:180 msgid "Frames" msgstr "Çerçeveler" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Otomatik çerçeve arama" #: constants.py:182 msgid "Force keyframe" msgstr "Çerçeveyi zorlama" #: constants.py:183 msgid "Keyframe frequency" msgstr "Çerçeve sıklığı" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Çerçevenin en az uzaklığı" #: constants.py:185 msgid "Keyframe threshold" msgstr "çerçeve eşiği" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Ses duyarlılığı" #: constants.py:187 msgid "Quick" msgstr "Hızlı" #: constants.py:188 msgid "Sharpness" msgstr "Netlik" #: constants.py:189 msgid "Capacity" msgstr "Kapasite" sugar-record-activity-82/po/nl.po0000644000000000000000000001401511417267661015635 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-08-25 16:26-0400\n" "Last-Translator: Myckel Habets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Opnemen" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Film" #: constants.py:115 msgid "Audio" msgstr "Geluid" #: constants.py:116 msgid "Time Lapse" msgstr "Tijdsverloop" #: constants.py:117 msgid "Animation" msgstr "Animatie" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Interview" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s gemaakt door %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titel:" #: constants.py:123 msgid "Recorder:" msgstr "Opgenomen door:" #: constants.py:124 msgid "Date:" msgstr "Datum:" #: constants.py:125 msgid "Tags:" msgstr "Labels:" #: constants.py:126 msgid "Saving" msgstr "Bewaren" #: constants.py:127 msgid "Finished recording" msgstr "Klaar met opnemen" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s uren, %(2)s minuten, %(3)s seconden resterend" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minuten, %(2)s seconden resterend" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s uren resterend" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minuten resterend" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s seconden resterend" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s uren" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minuten" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s seconden" #: constants.py:136 msgid "Remove" msgstr "Verwijderen" #: constants.py:137 msgid "Stopped recording" msgstr "Gestopt met opnemen" #: constants.py:138 msgid "Copy to clipboard" msgstr "Kopiëren naar klembord" #: constants.py:139 msgid "Timer:" msgstr "Aftelklok:" #: constants.py:140 msgid "Duration:" msgstr "Duur:" #: constants.py:141 msgid "Immediate" msgstr "Rechtstreeks" #: constants.py:142 msgid "Play" msgstr "Afspelen" #: constants.py:143 msgid "Pause" msgstr "Pauze" #: constants.py:144 msgid "Add frame" msgstr "Beeldje toevoegen" # Beeldje is vermoedelijk geen correct jargon #: constants.py:145 msgid "Remove frame" msgstr "Beeldje verwijderen" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s beelden per seconde" #: constants.py:147 msgid "Quality" msgstr "Kwaliteit" #: constants.py:148 msgid "Default" msgstr "Standaard" #: constants.py:149 msgid "Best" msgstr "Beste" #: constants.py:150 msgid "High" msgstr "Hoog" #: constants.py:151 msgid "Low" msgstr "Laag" #: constants.py:152 msgid "Large file" msgstr "Groot bestand" #: constants.py:153 msgid "Small file" msgstr "Klein bestand" #: constants.py:154 msgid "Silent" msgstr "Stil" #: constants.py:155 msgid "Rotate" msgstr "Draaien" #: constants.py:156 msgid "Width" msgstr "Breedte" #: constants.py:157 msgid "Height" msgstr "Hoogte" #: constants.py:158 msgid "Click to take picture" msgstr "Klik om een foto te maken" #: constants.py:159 msgid "Click to add picture" msgstr "Klik om de afbeelding toe te voegen" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Downloaden van %(1)s van %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Kan deze %(1)s niet downloaden" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Sla %(1)s op in:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Je %(1)s is vol" #: constants.py:167 msgid "Journal" msgstr "Dagboek" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD kaart" #: constants.py:170 msgid "Preferences" msgstr "Voorkeuren" #: constants.py:171 msgid "Free space:" msgstr "Vrije ruimte:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s foto's" #: constants.py:174 msgid "Bitrate" msgstr "Bitratio" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Maximum bitratio" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Minimum bitratio" #: constants.py:177 msgid "Manage Bitrate" msgstr "Bitratio beheren" #: constants.py:178 msgid "Border" msgstr "Rand" #: constants.py:179 msgid "Center" msgstr "Midden" #: constants.py:180 msgid "Frames" msgstr "Kaders" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Automatisch sleutelkader detectie" #: constants.py:182 msgid "Force keyframe" msgstr "Forceer sleutelkader" #: constants.py:183 msgid "Keyframe frequency" msgstr "Sleutelkader frequentie" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Sleutelkader minimum afstand" #: constants.py:185 msgid "Keyframe threshold" msgstr "Sleutelkader drempelwaarde" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Ruisgevoeligheid" #: constants.py:187 msgid "Quick" msgstr "Snel" #: constants.py:188 msgid "Sharpness" msgstr "Scherpheid" #: constants.py:189 msgid "Capacity" msgstr "Capaciteit" sugar-record-activity-82/po/mn.po0000644000000000000000000001571311417267661015644 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-09-08 12:41-0400\n" "Last-Translator: Odontsetseg Bat-Erdene \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Бичлэг хийх" #: constants.py:113 msgid "Photo" msgstr "Зураг" #: constants.py:114 msgid "Video" msgstr "Видео" #: constants.py:115 msgid "Audio" msgstr "Дуу" #: constants.py:116 msgid "Time Lapse" msgstr "Хугацааны хурдасгуур" #: constants.py:117 msgid "Animation" msgstr "Хөдөлгөөнт зураг" #: constants.py:118 msgid "Panorama" msgstr "Панорам" #: constants.py:119 msgid "Interview" msgstr "Ярилцлага" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s-гын %(1)s" #: constants.py:122 msgid "Title:" msgstr "Гарчиг:" #: constants.py:123 msgid "Recorder:" msgstr "Дуу хураагуур:" #: constants.py:124 msgid "Date:" msgstr "Огноо:" #: constants.py:125 msgid "Tags:" msgstr "Шошго:" #: constants.py:126 msgid "Saving" msgstr "Хадгалж байна" #: constants.py:127 msgid "Finished recording" msgstr "Бичлэг хийж дууслаа" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s цаг, %(2)s минут, %(3)s секунд үлдлээ" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s минут, %(2)s секунд үлдлээ" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s цаг үлдлээ" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s минут үлдлээ" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s секунд үлдлээ" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s цаг" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s минут" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s секунд" #: constants.py:136 msgid "Remove" msgstr "Устгах" #: constants.py:137 msgid "Stopped recording" msgstr "Бичлэгийг зогсоолоо" #: constants.py:138 msgid "Copy to clipboard" msgstr "Самбарт хуулах" #: constants.py:139 msgid "Timer:" msgstr "Тоолуур:" #: constants.py:140 msgid "Duration:" msgstr "Үргэлжлэх хугацаа:" #: constants.py:141 msgid "Immediate" msgstr "Яаралтай" #: constants.py:142 msgid "Play" msgstr "Үзэх" #: constants.py:143 msgid "Pause" msgstr "Завсарлах" #: constants.py:144 msgid "Add frame" msgstr "Хүрээ нэмэх" #: constants.py:145 msgid "Remove frame" msgstr "Хүрээг арилгах" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "Секунд тутамд %(1)s кадр" #: constants.py:147 msgid "Quality" msgstr "Чанар" #: constants.py:148 msgid "Default" msgstr "Ердийн" #: constants.py:149 msgid "Best" msgstr "Хамгийн сайн" #: constants.py:150 msgid "High" msgstr "Өндөр" #: constants.py:151 msgid "Low" msgstr "Нам" #: constants.py:152 msgid "Large file" msgstr "Том файл" #: constants.py:153 msgid "Small file" msgstr "Жижиг файл" #: constants.py:154 msgid "Silent" msgstr "Дуугүй" #: constants.py:155 msgid "Rotate" msgstr "Эргүүлэх" #: constants.py:156 msgid "Width" msgstr "Өргөн" #: constants.py:157 msgid "Height" msgstr "Өндөр" #: constants.py:158 msgid "Click to take picture" msgstr "Зураг авахдаа энд дарна уу" #: constants.py:159 msgid "Click to add picture" msgstr "Зураг нэмэхдээ энд дарна уу" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s-ээс %(1)s-ийг татаж байна " # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Энэ %(1)s-г татаж чадахгүй байна" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "%(1)s-ийг хадгалах хавтас:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Таны %(1)s дүүрэн байна" #: constants.py:167 msgid "Journal" msgstr "Бүртгэл" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD карт" #: constants.py:170 msgid "Preferences" msgstr "Тохиргоо" #: constants.py:171 msgid "Free space:" msgstr "Сул зай:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s зураг" #: constants.py:174 msgid "Bitrate" msgstr "Бит-н хурд" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Хамгийн их бит-н хурд" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Хамгийн бага бит-н хурд" #: constants.py:177 msgid "Manage Bitrate" msgstr "Бит-н хурдыг тохируулах" #: constants.py:178 msgid "Border" msgstr "Хүрээ" #: constants.py:179 msgid "Center" msgstr "Төв" #: constants.py:180 msgid "Frames" msgstr "Кадрууд" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Үндсэн кадрыг автоматаар олох" #: constants.py:182 msgid "Force keyframe" msgstr "Үндсэн кадрыг оноох" #: constants.py:183 msgid "Keyframe frequency" msgstr "Үндсэн кадрын давтамж" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Үндсэн кадрын хоорондын хамгийн бага зай" #: constants.py:185 msgid "Keyframe threshold" msgstr "Үндсэн кадрын хязгаар" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Шуугиан мэдрэгч" #: constants.py:187 msgid "Quick" msgstr "Хурдан" #: constants.py:188 msgid "Sharpness" msgstr "Тодрол" #: constants.py:189 msgid "Capacity" msgstr "Багтаамж" #~ msgid "Best quality" #~ msgstr "Хамгийн сайн чанар" #~ msgid "High quality" #~ msgstr "Өндөр чанар" #~ msgid "Low quality" #~ msgstr "Бага чанар" #~ msgid "Your disk is full" #~ msgstr "Таны хадгалах ой дүүрсэн байна" sugar-record-activity-82/po/bn.po0000644000000000000000000001674711417267661015641 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Khandakar Mujahidul Islam , 2007. msgid "" msgstr "" "Project-Id-Version: Update1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-12-21 19:06+0000\n" "Last-Translator: Khandakar Mujahidul Islam \n" "Language-Team: Bengali \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "রেকর্ড" #: constants.py:91 msgid "Photo" msgstr "ফটো" #: constants.py:92 msgid "Video" msgstr "ভিডিও" #: constants.py:93 msgid "Audio" msgstr "অডিও" #: constants.py:94 msgid "Time Lapse" msgstr "সময় সীমা" #: constants.py:95 msgid "Animation" msgstr "অ্যানিমেশন" #: constants.py:96 msgid "Panorama" msgstr "প্যানারোমা" #: constants.py:97 msgid "Interview" msgstr "সাক্ষাৎকার" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2) এর %(1)" #: constants.py:100 msgid "Title:" msgstr "শিরোনাম:" #: constants.py:101 msgid "Recorder:" msgstr "রেকর্ডার:" #: constants.py:102 msgid "Date:" msgstr "তারিখ:" #: constants.py:103 msgid "Tags:" msgstr "ট্যাগ:" #: constants.py:104 msgid "Saving" msgstr "সেইভ করা হচ্ছে" #: constants.py:105 msgid "Finished recording" msgstr "রেকর্ডিং শেষ হয়েছে" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s ঘন্টা, %(2)s মিনিট, %(1)s সেকেন্ড বাকী আছে" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s মিনিট, %(1)s সেকেন্ড বাকী আছে" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s সেকেন্ড বাকী আছে" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s মিনিট বাকী আছে" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s সেকেন্ড বাকী আছে" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ঘন্টা" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s মিনিট" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s সেকেন্ড" #: constants.py:114 msgid "Remove" msgstr "মোছো" #: constants.py:115 msgid "Stopped recording" msgstr "থামানো রেকর্ডিং" #: constants.py:116 msgid "Copy to clipboard" msgstr "ক্লিপবোর্ডে কপি করো" #: constants.py:117 msgid "Timer:" msgstr "সময় গণনাকারী:" #: constants.py:118 msgid "Duration:" msgstr "সময়সীমা:" #: constants.py:119 msgid "Immediate" msgstr "শীঘ্রই" #: constants.py:122 msgid "Play" msgstr "চালাও" #: constants.py:123 msgid "Pause" msgstr "স্থগিত করো" #: constants.py:124 msgid "Add frame" msgstr "ফ্রেম যোগ করো" #: constants.py:125 msgid "Remove frame" msgstr "ফ্রেম মোছো" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "প্রতি সেকেন্ডে %(1)s ফ্রেম" #: constants.py:127 msgid "Quality" msgstr "মান" #: constants.py:128 msgid "Default" msgstr "ডিফল্ট" #: constants.py:129 msgid "Best" msgstr "সেরা" #: constants.py:130 msgid "High" msgstr "উচ্চ" #: constants.py:131 msgid "Low" msgstr "নিম্ন" #: constants.py:132 msgid "Large file" msgstr "বড় ফাইল" #: constants.py:133 msgid "Small file" msgstr "ছোট ফাইল" #: constants.py:134 msgid "Silent" msgstr "নিরব" #: constants.py:135 msgid "Rotate" msgstr "ঘোরাও" #: constants.py:136 msgid "Width" msgstr "প্রশস্ত" #: constants.py:137 msgid "Height" msgstr "উচ্চতা" #: constants.py:138 msgid "Click to take picture" msgstr "ছবি তোলার জন্য ক্লিক করো" #: constants.py:139 msgid "Click to add picture" msgstr "ছবি যোগ করার জন্য ক্লিক করো" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s থেকে %(1)s ডাউনলোড করা হচ্ছে" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "এই %(1)s ডাউনলোড করতে পারে নি" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(1) সংরক্ষণ করো:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "আপনার %(1)s ভরে গেছে" #: constants.py:147 msgid "Journal" msgstr "জার্নাল" #: constants.py:148 msgid "USB" msgstr "ইউএসবি" #: constants.py:149 msgid "SD Card" msgstr "এসডি কার্ড" #: constants.py:150 msgid "Preferences" msgstr "পছন্দসমূহ" #: constants.py:151 msgid "Free space:" msgstr "খালি জায়গা:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s ফটো" #: constants.py:154 msgid "Bitrate" msgstr "বিটরেট" #: constants.py:155 msgid "Maximum Bitrate" msgstr "সর্বোচ্চ বিটরেট" #: constants.py:156 msgid "Minumum Bitrate" msgstr "সর্বনিম্ন বিটরেট" #: constants.py:157 msgid "Manage Bitrate" msgstr "বিটরেট ব্যবস্থাপনা" #: constants.py:158 msgid "Border" msgstr "সীমা" #: constants.py:159 msgid "Center" msgstr "মধ্য" #: constants.py:160 msgid "Frames" msgstr "ফ্রেম" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "স্বয়ক্রিয় কীফ্রেম সনাক্তকরণ" #: constants.py:162 msgid "Force keyframe" msgstr "কীফ্রেমে জোর" #: constants.py:163 msgid "Keyframe frequency" msgstr "কীফ্রেম কম্পাংক" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "কীফ্রেম সর্বনিম্ন দুরত্ব" #: constants.py:165 msgid "Keyframe threshold" msgstr "কীফ্রেম থ্রেশল্ড" #: constants.py:166 msgid "Noise Sensitivity" msgstr "কোলাহল স্পর্শকাতরতা" #: constants.py:167 msgid "Quick" msgstr "দ্রুত" #: constants.py:168 msgid "Sharpness" msgstr "তীক্ষ্ণতা" #: constants.py:169 msgid "Capacity" msgstr "ক্ষমতা" #, python-format #~ msgid "%(1)s minutes, %(1)s seconds remaining" #~ msgstr "%(1)s মিনিট, %(1)s সেকেন্ড বাকী আছে" #~ msgid "Quality:" #~ msgstr "মান:" #~ msgid "Best quality" #~ msgstr "সেরা মান" #~ msgid "High quality" #~ msgstr "উচ্চ মান" #~ msgid "Low quality" #~ msgstr "নিম্ন মান" sugar-record-activity-82/po/pa.po0000644000000000000000000001141111417267661015621 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/mg.po0000644000000000000000000001140411417267661015626 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/af.po0000644000000000000000000001240311417267661015611 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-06-20 19:18-0400\n" "Last-Translator: Morgan Collett \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Opneem" #: constants.py:91 msgid "Photo" msgstr "Foto" #: constants.py:92 msgid "Video" msgstr "Video" #: constants.py:93 msgid "Audio" msgstr "Klank" #: constants.py:94 msgid "Time Lapse" msgstr "Tydverloop" #: constants.py:95 msgid "Animation" msgstr "Animasie" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "Onderhoud" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "Titel:" #: constants.py:101 msgid "Recorder:" msgstr "Opnemer:" #: constants.py:102 msgid "Date:" msgstr "Datum:" #: constants.py:103 msgid "Tags:" msgstr "Etikette:" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "Klaar met opname" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s uur, %(2)s minute, %(1)s sekondes oor" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minute, %(2)s sekondes oor" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s uur oor" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minute oor" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s sekondes oor" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s uur" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minute" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s sekondes" #: constants.py:114 msgid "Remove" msgstr "Verwyder" #: constants.py:115 msgid "Stopped recording" msgstr "Opname gestop" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopieer na knipbord" #: constants.py:117 msgid "Timer:" msgstr "Tydreëlaar:" #: constants.py:118 msgid "Duration:" msgstr "Duur:" #: constants.py:119 msgid "Immediate" msgstr "Onmiddelik" #: constants.py:122 msgid "Play" msgstr "Speel" #: constants.py:123 msgid "Pause" msgstr "Pouse" #: constants.py:124 msgid "Add frame" msgstr "Voeg raam by" #: constants.py:125 msgid "Remove frame" msgstr "Verwyder raam" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s rame per sekonde" #: constants.py:127 msgid "Quality" msgstr "Kwaliteit" #: constants.py:128 msgid "Default" msgstr "Verstek" #: constants.py:129 msgid "Best" msgstr "Beste" #: constants.py:130 msgid "High" msgstr "Hoog" #: constants.py:131 msgid "Low" msgstr "Laag" #: constants.py:132 msgid "Large file" msgstr "Groot lêer" #: constants.py:133 msgid "Small file" msgstr "Klein lêer" #: constants.py:134 msgid "Silent" msgstr "Stil" #: constants.py:135 msgid "Rotate" msgstr "Wentel" #: constants.py:136 msgid "Width" msgstr "Wydte" #: constants.py:137 msgid "Height" msgstr "Hoogte" #: constants.py:138 msgid "Click to take picture" msgstr "Kliek om foto te neem" #: constants.py:139 msgid "Click to add picture" msgstr "Kliek om foto by te voeg" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format #, fuzzy msgid "%(1)s photos" msgstr "%(1)s uur" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/is.po0000644000000000000000000001246611417267661015647 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Taka upp" #: constants.py:91 msgid "Photo" msgstr "Mynd" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "Hljóð" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1) eftir %(2)" #: constants.py:100 msgid "Title:" msgstr "Titill:" #: constants.py:101 msgid "Recorder:" msgstr "Taka upp:" #: constants.py:102 msgid "Date:" msgstr "Dagsettning:" #: constants.py:103 msgid "Tags:" msgstr "Merki:" #: constants.py:104 msgid "Saving" msgstr "Vista" #: constants.py:105 msgid "Finished recording" msgstr "Endaði upptöku" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1) mínúndur, %(1) sekúndur eftir" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "%(1) sekúndur eftir" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "%(1) sekúndur eftir" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1) sekúndur eftir" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1) mínúndur" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1) sekúndur" #: constants.py:114 msgid "Remove" msgstr "Fjarlægja" #: constants.py:115 msgid "Stopped recording" msgstr "Enda upptöku" #: constants.py:116 msgid "Copy to clipboard" msgstr "Afrita á spjaldið" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "Spila" #: constants.py:123 msgid "Pause" msgstr "Bið" #: constants.py:124 msgid "Add frame" msgstr "Bæta við römmum" #: constants.py:125 msgid "Remove frame" msgstr "Fjarlægja ramma" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1) rammar á sekúndu" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "Gæði:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "Stór skrá" #: constants.py:133 msgid "Small file" msgstr "Lítil skrá" #: constants.py:134 msgid "Silent" msgstr "Hljótt" #: constants.py:135 msgid "Rotate" msgstr "Snúa" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "Smelltu til að taka mynd" #: constants.py:139 msgid "Click to add picture" msgstr "Smelltu til að bæta við mynd" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Sæki %(1) frá %(2)" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Gat ekki sótt þetta %(1)" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/pap.po0000644000000000000000000001141311417267661016003 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/mk.po0000644000000000000000000001407111417267661015635 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-11-24 19:12+0000\n" "Last-Translator: Arangel Angov \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 || n%10==1 ? 0 : 1;\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Снимај" #: constants.py:91 msgid "Photo" msgstr "Слика" #: constants.py:92 msgid "Video" msgstr "Видео" #: constants.py:93 msgid "Audio" msgstr "Аудио" #: constants.py:94 msgid "Time Lapse" msgstr "Времетраење" #: constants.py:95 msgid "Animation" msgstr "Анимација" #: constants.py:96 msgid "Panorama" msgstr "Панорама" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s од %(2)s" #: constants.py:100 msgid "Title:" msgstr "Наслов:" #: constants.py:101 msgid "Recorder:" msgstr "Снимач:" #: constants.py:102 msgid "Date:" msgstr "Датум:" #: constants.py:103 msgid "Tags:" msgstr "Ознаки:" #: constants.py:104 msgid "Saving" msgstr "Зачувувам" #: constants.py:105 msgid "Finished recording" msgstr "Снимањето е завршено" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "преостанато %(1)s минути, %(1)s секунди" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "преостанато %(1)s секунди" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "преостанато %(1)s секунди" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "преостанато %(1)s секунди" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s минути" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s секунди" #: constants.py:114 msgid "Remove" msgstr "Отстрани" #: constants.py:115 msgid "Stopped recording" msgstr "Снимањето е прекинато" #: constants.py:116 msgid "Copy to clipboard" msgstr "Копирај во табла со исечоци" #: constants.py:117 msgid "Timer:" msgstr "Тајмер:" #: constants.py:118 msgid "Duration:" msgstr "Времетраење:" #: constants.py:119 msgid "Immediate" msgstr "Веднаш" #: constants.py:122 msgid "Play" msgstr "Пушти" #: constants.py:123 msgid "Pause" msgstr "Пауза" #: constants.py:124 msgid "Add frame" msgstr "Додај рамка" #: constants.py:125 msgid "Remove frame" msgstr "Отстрани рамка" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s рамки во секунда" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "Квалитет:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "Голема датотека" #: constants.py:133 msgid "Small file" msgstr "Мала датотека" #: constants.py:134 msgid "Silent" msgstr "Тивко" #: constants.py:135 msgid "Rotate" msgstr "Ротирај" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "Кликни за да сликаш" #: constants.py:139 msgid "Click to add picture" msgstr "Кликни за да додадеш слика" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Преземам %(1)s од %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Не можам да ја преземам оваа %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" #~ msgid "Best quality" #~ msgstr "Најдобар квалитет" #~ msgid "High quality" #~ msgstr "Висок квалитет" #~ msgid "Low quality" #~ msgstr "Низок квалитет" sugar-record-activity-82/po/de.po0000644000000000000000000001524211417267661015617 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-05-04 18:03-0400\n" "Last-Translator: Markus Schlager \n" "Language-Team: LANGUAGE \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.2.1\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Aufnehmen" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Video" #: constants.py:115 msgid "Audio" msgstr "Audio" #: constants.py:116 msgid "Time Lapse" msgstr "Zeitraffer" #: constants.py:117 msgid "Animation" msgstr "Animation" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Interview" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s von %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titel:" #: constants.py:123 msgid "Recorder:" msgstr "Rekorder:" #: constants.py:124 msgid "Date:" msgstr "Datum:" #: constants.py:125 msgid "Tags:" msgstr "Stichworte:" #: constants.py:126 msgid "Saving" msgstr "Speichern" #: constants.py:127 msgid "Finished recording" msgstr "Beendete Aufnahme" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s Stunden, %(2)s Minuten, %(3)s Sekunden verbleibend" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s Minuten, %(2)s Sekunden verbleibend" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s Stunden verbleibend" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s Minuten verbleibend" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s Sekunden verbleibend" # Hours, not photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s Stunden" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s Minuten" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s Sekunden" #: constants.py:136 msgid "Remove" msgstr "Entfernen" #: constants.py:137 msgid "Stopped recording" msgstr "Gestoppte Aufnahme" #: constants.py:138 msgid "Copy to clipboard" msgstr "In Zwischenablage kopieren" #: constants.py:139 msgid "Timer:" msgstr "Timer:" #: constants.py:140 msgid "Duration:" msgstr "Dauer:" #: constants.py:141 msgid "Immediate" msgstr "Augenblicklich" #: constants.py:142 msgid "Play" msgstr "Wiedergabe" #: constants.py:143 msgid "Pause" msgstr "Pause" #: constants.py:144 msgid "Add frame" msgstr "Frame hinzufügen" #: constants.py:145 msgid "Remove frame" msgstr "Frame entfernen" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s Frames pro Sekunde" #: constants.py:147 msgid "Quality" msgstr "Qualität" #: constants.py:148 msgid "Default" msgstr "Voreinstellung" #: constants.py:149 msgid "Best" msgstr "Am Besten" #: constants.py:150 msgid "High" msgstr "Hoch" #: constants.py:151 msgid "Low" msgstr "Niedrig" #: constants.py:152 msgid "Large file" msgstr "Große Datei" #: constants.py:153 msgid "Small file" msgstr "Kleine Datei" #: constants.py:154 msgid "Silent" msgstr "Leise" #: constants.py:155 msgid "Rotate" msgstr "Drehen" #: constants.py:156 msgid "Width" msgstr "Breite" #: constants.py:157 msgid "Height" msgstr "Höhe" #: constants.py:158 msgid "Click to take picture" msgstr "Klicken, um ein Bild aufzunehmen" #: constants.py:159 msgid "Click to add picture" msgstr "Klicken, um ein Bild hinzuzufügen" # TRANS: Downloading Photo from Mary # (Markus S.) war 'Herunterladen %(1)s von %(2)s' #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Lade %(1)s von %(2)s herunter" # TRANS: Cannot download this Photo # (Markus S.) war 'Herunterladen unmöglich von %(1)s' #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Herunterladen von %(1)s fehlgeschlagen" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "%(1)s speichern nach:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Dein %(1)s ist voll" #: constants.py:167 msgid "Journal" msgstr "Journal" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD-Karte" #: constants.py:170 msgid "Preferences" msgstr "Einstellungen" #: constants.py:171 msgid "Free space:" msgstr "Freier Speicher:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s Fotos" #: constants.py:174 msgid "Bitrate" msgstr "Bitrate" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Maximale Bitrate" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Minimale Bitrate" #: constants.py:177 msgid "Manage Bitrate" msgstr "Bitrate verwalten" #: constants.py:178 msgid "Border" msgstr "Rand" #: constants.py:179 msgid "Center" msgstr "Zentrum" #: constants.py:180 msgid "Frames" msgstr "Frames" # http://de.wikipedia.org/wiki/Schl%C3%BCsselbildanimation #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Automatische Feststellung der Schlüsselbilder" # http://de.wikipedia.org/wiki/Schl%C3%BCsselbildanimation #: constants.py:182 msgid "Force keyframe" msgstr "Schlüsselbild erzwingen" # http://de.wikipedia.org/wiki/Schl%C3%BCsselbildanimation #: constants.py:183 msgid "Keyframe frequency" msgstr "Schlüsselbild- Frequenz" # http://de.wikipedia.org/wiki/Schl%C3%BCsselbildanimation #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Minimaler Schlüsselbildabstand" # http://de.wikipedia.org/wiki/Schl%C3%BCsselbildanimation #: constants.py:185 msgid "Keyframe threshold" msgstr "Schlüsselbild-Schwelle" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Rauschempfindlichkeit" #: constants.py:187 msgid "Quick" msgstr "Schnell" #: constants.py:188 msgid "Sharpness" msgstr "Schärfe" # ??? #: constants.py:189 msgid "Capacity" msgstr "Kapazität" #~ msgid "Best quality" #~ msgstr "Höchste Qualität" #~ msgid "High quality" #~ msgstr "Hohe Qualität" #~ msgid "Low quality" #~ msgstr "Niedrige Qualität" #~ msgid "Your disk is full" #~ msgstr "Der Speicher ist voll" sugar-record-activity-82/po/nb.po0000644000000000000000000001215311417267661015624 0ustar rootroot# translation of record-activity.po to Norsk bokmål # Kent Dahl , 2008. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. msgid "" msgstr "" "Project-Id-Version: record-activity\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-07-26 13:53+0200\n" "Last-Translator: Kent Dahl \n" "Language-Team: Norsk bokmål \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Opptaker" #: constants.py:91 msgid "Photo" msgstr "Fotografi" #: constants.py:92 msgid "Video" msgstr "Film" #: constants.py:93 msgid "Audio" msgstr "Lyd" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "Animasjon" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "Intervju" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "Tittel:" #: constants.py:101 msgid "Recorder:" msgstr "Opptaker:" #: constants.py:102 msgid "Date:" msgstr "Dato:" #: constants.py:103 msgid "Tags:" msgstr "Merkelapper:" #: constants.py:104 msgid "Saving" msgstr "Lagrer" #: constants.py:105 msgid "Finished recording" msgstr "Opptak ferdi" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "Fjern" #: constants.py:115 msgid "Stopped recording" msgstr "Stoppet opptak" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopier til utklippstavle" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "Varighet:" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "Spill av" #: constants.py:123 msgid "Pause" msgstr "Pause" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "Kvalitet" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "Best" #: constants.py:130 msgid "High" msgstr "Høy" #: constants.py:131 msgid "Low" msgstr "Lav" #: constants.py:132 msgid "Large file" msgstr "Stor fil" #: constants.py:133 msgid "Small file" msgstr "Liten fil" #: constants.py:134 msgid "Silent" msgstr "Stille" #: constants.py:135 msgid "Rotate" msgstr "Roter" #: constants.py:136 msgid "Width" msgstr "Bredde" #: constants.py:137 msgid "Height" msgstr "Høyde" #: constants.py:138 msgid "Click to take picture" msgstr "Klikk for å ta bilde" #: constants.py:139 msgid "Click to add picture" msgstr "Klikke for å legge til bilde" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/zh_TW.po0000644000000000000000000001367511417267661016272 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-10-01 09:39-0400\n" "Last-Translator: Yuan Chao \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "紀錄" #: constants.py:113 msgid "Photo" msgstr "照片" #: constants.py:114 msgid "Video" msgstr "影像" #: constants.py:115 msgid "Audio" msgstr "聲音" #: constants.py:116 msgid "Time Lapse" msgstr "時間長度" #: constants.py:117 msgid "Animation" msgstr "動畫" #: constants.py:118 msgid "Panorama" msgstr "寬景圖" #: constants.py:119 msgid "Interview" msgstr "訪談" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s 拍攝的 %(1)s" #: constants.py:122 msgid "Title:" msgstr "標題:" #: constants.py:123 msgid "Recorder:" msgstr "紀錄者:" #: constants.py:124 msgid "Date:" msgstr "日期:" #: constants.py:125 msgid "Tags:" msgstr "標籤:" #: constants.py:126 msgid "Saving" msgstr "儲存中" #: constants.py:127 msgid "Finished recording" msgstr "已完成紀錄" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "剩餘 %(1)s 小時 %(2)s 分 %(3)s 秒鐘" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "剩餘 %(1)s 分 %(2)s 秒鐘" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "剩餘 %(1)s 小時" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "剩餘 %(1)s 分鐘" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "剩餘 %(1)s 秒鐘" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s 小時" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s分" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s秒" #: constants.py:136 msgid "Remove" msgstr "移除" #: constants.py:137 msgid "Stopped recording" msgstr "停止紀錄" #: constants.py:138 msgid "Copy to clipboard" msgstr "複製到剪貼簿" #: constants.py:139 msgid "Timer:" msgstr "計時器:" #: constants.py:140 msgid "Duration:" msgstr "長度:" #: constants.py:141 msgid "Immediate" msgstr "立即" #: constants.py:142 msgid "Play" msgstr "播放" #: constants.py:143 msgid "Pause" msgstr "暫停" #: constants.py:144 msgid "Add frame" msgstr "增加畫格" #: constants.py:145 msgid "Remove frame" msgstr "移除畫格" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "每秒%(1)s格畫面" #: constants.py:147 msgid "Quality" msgstr "品質" #: constants.py:148 msgid "Default" msgstr "預設" #: constants.py:149 msgid "Best" msgstr "最佳" #: constants.py:150 msgid "High" msgstr "高" #: constants.py:151 msgid "Low" msgstr "低" #: constants.py:152 msgid "Large file" msgstr "大檔案" #: constants.py:153 msgid "Small file" msgstr "小檔案" #: constants.py:154 msgid "Silent" msgstr "靜音" #: constants.py:155 msgid "Rotate" msgstr "旋轉" #: constants.py:156 msgid "Width" msgstr "寬度" #: constants.py:157 msgid "Height" msgstr "高度" #: constants.py:158 msgid "Click to take picture" msgstr "點選拍攝照片" #: constants.py:159 msgid "Click to add picture" msgstr "點選增加照片" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "下載 %(1)s 自 (2)%s." # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "無法下載 %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "將%(1)s儲存到:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s已無剩餘空間" #: constants.py:167 msgid "Journal" msgstr "日誌" #: constants.py:168 msgid "USB" msgstr "USB隨身碟" #: constants.py:169 msgid "SD Card" msgstr "SD記憶卡" #: constants.py:170 msgid "Preferences" msgstr "偏好設定" #: constants.py:171 msgid "Free space:" msgstr "剩餘空間:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s張相片" #: constants.py:174 msgid "Bitrate" msgstr "流量" #: constants.py:175 msgid "Maximum Bitrate" msgstr "最高流量" #: constants.py:176 msgid "Minumum Bitrate" msgstr "最低流量" #: constants.py:177 msgid "Manage Bitrate" msgstr "調整畫質流量" #: constants.py:178 msgid "Border" msgstr "邊緣" #: constants.py:179 msgid "Center" msgstr "中央" #: constants.py:180 msgid "Frames" msgstr "畫格" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "自動關鍵格偵測" #: constants.py:182 msgid "Force keyframe" msgstr "強制指定關鍵格" #: constants.py:183 msgid "Keyframe frequency" msgstr "關鍵格頻率" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "最短關鍵格間距" #: constants.py:185 msgid "Keyframe threshold" msgstr "關鍵格臨界值" #: constants.py:186 msgid "Noise Sensitivity" msgstr "雜訊感度" #: constants.py:187 msgid "Quick" msgstr "快速" #: constants.py:188 msgid "Sharpness" msgstr "清晰度" #: constants.py:189 msgid "Capacity" msgstr "容量" #~ msgid "Best quality" #~ msgstr "最佳品質" #~ msgid "High quality" #~ msgstr "高品質" #~ msgid "Low quality" #~ msgstr "低品質" #~ msgid "Your disk is full" #~ msgstr "" sugar-record-activity-82/po/sk.po0000644000000000000000000001140411417267661015640 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/dz.po0000644000000000000000000001141111417267661015636 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/hu.po0000644000000000000000000001140411417267661015637 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/pis.po0000644000000000000000000001205611417267661016022 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-06-17 19:43-0400\n" "Last-Translator: Phillip Pukefenua \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "rekot" #: constants.py:91 msgid "Photo" msgstr "foto" #: constants.py:92 msgid "Video" msgstr "Vidio" #: constants.py:93 msgid "Audio" msgstr "Saon" #: constants.py:94 msgid "Time Lapse" msgstr "Taem hem finis" #: constants.py:95 msgid "Animation" msgstr "Saon wetem foto" #: constants.py:96 msgid "Panorama" msgstr "Sem samting" #: constants.py:97 msgid "Interview" msgstr "Intaviu" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "Taetol" #: constants.py:101 msgid "Recorder:" msgstr "Rekota" #: constants.py:102 msgid "Date:" msgstr "Deit" #: constants.py:103 msgid "Tags:" msgstr "Tacks" #: constants.py:104 msgid "Saving" msgstr "Sevim" #: constants.py:105 msgid "Finished recording" msgstr "Finis rekot" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "1 aoa, 2 minits, 1 sekon left" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "1 minit, 2 sekon left" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "1 aoa left" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "1 aoa left" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "1 sekon left" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "1 aoa" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "1 minit" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "1 sekon" #: constants.py:114 msgid "Remove" msgstr "Aotim" #: constants.py:115 msgid "Stopped recording" msgstr "Stop rekot" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopim go lo klipbot" #: constants.py:117 msgid "Timer:" msgstr "Taema" #: constants.py:118 msgid "Duration:" msgstr "Hao long" #: constants.py:119 msgid "Immediate" msgstr "Tis taem" #: constants.py:122 msgid "Play" msgstr "Plei" #: constants.py:123 msgid "Pause" msgstr "Poos" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format #, fuzzy msgid "%(1)s photos" msgstr "1 aoa" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ja.po0000644000000000000000000001464211417267661015624 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-08-28 21:47-0400\n" "Last-Translator: korakurider \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Record" #: constants.py:113 msgid "Photo" msgstr "写真" #: constants.py:114 msgid "Video" msgstr "ビデオ" #: constants.py:115 msgid "Audio" msgstr "音声" #: constants.py:116 msgid "Time Lapse" msgstr "時間経過" #: constants.py:117 msgid "Animation" msgstr "アニメーション" #: constants.py:118 msgid "Panorama" msgstr "パノラマ" #: constants.py:119 msgid "Interview" msgstr "インタビュー" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s (記録: %(2)s)" #: constants.py:122 msgid "Title:" msgstr "タイトル:" #: constants.py:123 msgid "Recorder:" msgstr "記録者:" #: constants.py:124 msgid "Date:" msgstr "日時:" #: constants.py:125 msgid "Tags:" msgstr "タグ:" #: constants.py:126 msgid "Saving" msgstr "保存しています" #: constants.py:127 msgid "Finished recording" msgstr "記録を終了しました" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "残り %(1)s 時間, %(2)s 分, %(3)s 秒" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "残り %(1)s分, %(2)s秒" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "残り %(1)s 時間" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "残り %(1)s 分" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "残り %(1)s秒" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s 時間" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s 分" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s 秒" #: constants.py:136 msgid "Remove" msgstr "削除" #: constants.py:137 msgid "Stopped recording" msgstr "記録を中止しました" #: constants.py:138 msgid "Copy to clipboard" msgstr "クリップボードにコピー" #: constants.py:139 msgid "Timer:" msgstr "タイマー:" #: constants.py:140 msgid "Duration:" msgstr "収録時間:" #: constants.py:141 msgid "Immediate" msgstr "今すぐ" #: constants.py:142 msgid "Play" msgstr "再生" #: constants.py:143 msgid "Pause" msgstr "一時停止" #: constants.py:144 msgid "Add frame" msgstr "フレームを追加" #: constants.py:145 msgid "Remove frame" msgstr "フレームを削除" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s フレーム/秒" #: constants.py:147 msgid "Quality" msgstr "品質:" #: constants.py:148 msgid "Default" msgstr "デフォルト" #: constants.py:149 msgid "Best" msgstr "最高" #: constants.py:150 msgid "High" msgstr "高" #: constants.py:151 msgid "Low" msgstr "低" #: constants.py:152 msgid "Large file" msgstr "大きなファイル" #: constants.py:153 msgid "Small file" msgstr "小さなファイル" #: constants.py:154 msgid "Silent" msgstr "無音" #: constants.py:155 msgid "Rotate" msgstr "回転" #: constants.py:156 msgid "Width" msgstr "幅" #: constants.py:157 msgid "Height" msgstr "高さ" #: constants.py:158 msgid "Click to take picture" msgstr "写真を撮るにはクリックしてください" #: constants.py:159 msgid "Click to add picture" msgstr "写真を追加するにはクリックしてください" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s から %(1)s をダウンロードしています" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "%(1)s をダウンロードできません" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "%(1)s の保存先:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "あなたの%(1)s が満杯です" #: constants.py:167 msgid "Journal" msgstr "ジャーナル" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SDカード" #: constants.py:170 msgid "Preferences" msgstr "設定" #: constants.py:171 msgid "Free space:" msgstr "空き容量:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s 枚の写真" #: constants.py:174 msgid "Bitrate" msgstr "ビットレート" #: constants.py:175 msgid "Maximum Bitrate" msgstr "最大ビットレート" #: constants.py:176 msgid "Minumum Bitrate" msgstr "最小ビットレート" #: constants.py:177 msgid "Manage Bitrate" msgstr "ビットレートの管理" #: constants.py:178 msgid "Border" msgstr "境界線" #: constants.py:179 msgid "Center" msgstr "中央" #: constants.py:180 msgid "Frames" msgstr "フレーム" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "キーフレームの自動感知" #: constants.py:182 msgid "Force keyframe" msgstr "キーフレームの強制" #: constants.py:183 msgid "Keyframe frequency" msgstr "キーフレームの頻度" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "キーフレームの最小間隔" #: constants.py:185 msgid "Keyframe threshold" msgstr "キーフレームのしきい値" #: constants.py:186 msgid "Noise Sensitivity" msgstr "ノイズ感度" #: constants.py:187 msgid "Quick" msgstr "高速" #: constants.py:188 msgid "Sharpness" msgstr "シャープネス" #: constants.py:189 msgid "Capacity" msgstr "容量" #, fuzzy #~ msgid "Best quality" #~ msgstr "最高品質" #, fuzzy #~ msgid "High quality" #~ msgstr "高品質" #, fuzzy #~ msgid "Low quality" #~ msgstr "低品質" #, fuzzy #~ msgid "Your disk is full" #~ msgstr "ディスクが満杯です。" sugar-record-activity-82/po/sl.po0000644000000000000000000001357211417267661015651 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-07-09 08:52-0400\n" "Last-Translator: Denis Oštir \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Snemalnik" #: constants.py:91 msgid "Photo" msgstr "Fotografiraj" #: constants.py:92 msgid "Video" msgstr "Snemaj video" #: constants.py:93 msgid "Audio" msgstr "Snemaj zvok" #: constants.py:94 msgid "Time Lapse" msgstr "Časovni zamik" #: constants.py:95 msgid "Animation" msgstr "Animacija" #: constants.py:96 msgid "Panorama" msgstr "Panorama" #: constants.py:97 msgid "Interview" msgstr "Intervju" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s posnel %(2)s" #: constants.py:100 msgid "Title:" msgstr "Naslov:" #: constants.py:101 msgid "Recorder:" msgstr "Snemalec:" #: constants.py:102 msgid "Date:" msgstr "Datum:" #: constants.py:103 msgid "Tags:" msgstr "Oznake:" #: constants.py:104 msgid "Saving" msgstr "Shranjujem" #: constants.py:105 msgid "Finished recording" msgstr "Končal snemanje" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "Ostane še %(1)s ur, %(2)s minut, %(1)s sekund snemalnega časa" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "Ostane še %(1)s minut, %(2)s sekund snemalnega časa" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "Ostane še %(1)s ur snemalnega časa" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "Ostane še %(1)s minut snemalnega časa" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "Ostane še %(1) sekund snemalnega časa" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ur" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minut" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s sekund" #: constants.py:114 msgid "Remove" msgstr "Odstrani" #: constants.py:115 msgid "Stopped recording" msgstr "Snemanje ustavljeno" #: constants.py:116 msgid "Copy to clipboard" msgstr "Kopiraj na namizje" #: constants.py:117 msgid "Timer:" msgstr "Štoparica:" #: constants.py:118 msgid "Duration:" msgstr "Trajanje:" #: constants.py:119 msgid "Immediate" msgstr "Takojšnje" #: constants.py:122 msgid "Play" msgstr "Predvajaj" #: constants.py:123 msgid "Pause" msgstr "Premor" #: constants.py:124 msgid "Add frame" msgstr "Dodaj sličico" #: constants.py:125 msgid "Remove frame" msgstr "Odstrani sličico" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s sličic na sekundo" #: constants.py:127 msgid "Quality" msgstr "Kakovost" #: constants.py:128 msgid "Default" msgstr "Prednastavljena" #: constants.py:129 msgid "Best" msgstr "Najboljša" #: constants.py:130 msgid "High" msgstr "Visoka" #: constants.py:131 msgid "Low" msgstr "Nizka" #: constants.py:132 msgid "Large file" msgstr "Velika datoteka" #: constants.py:133 msgid "Small file" msgstr "Majhna datoteka" #: constants.py:134 msgid "Silent" msgstr "Tiho" #: constants.py:135 msgid "Rotate" msgstr "Zasuči" #: constants.py:136 msgid "Width" msgstr "Širina" #: constants.py:137 msgid "Height" msgstr "Višina" #: constants.py:138 msgid "Click to take picture" msgstr "Pritisni za fotografiranje" #: constants.py:139 msgid "Click to add picture" msgstr "Pritisni za dodajanje slike" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Prenašam %(1)s od %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Ne morem prenesti %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Shrani %(1) na:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Tvoj %(1) je poln:" #: constants.py:147 msgid "Journal" msgstr "Beležka" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "SD-kartica" # a obstaja kak boljši izraz? #: constants.py:150 msgid "Preferences" msgstr "Preference" #: constants.py:151 msgid "Free space:" msgstr "Prost pomnilnik:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotografij" #: constants.py:154 msgid "Bitrate" msgstr "Bitrate" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Največji bitrate" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Najmanjši bitrate" #: constants.py:157 msgid "Manage Bitrate" msgstr "Upravljaj z bitrate" #: constants.py:158 msgid "Border" msgstr "Rob" #: constants.py:159 msgid "Center" msgstr "Sredina" #: constants.py:160 msgid "Frames" msgstr "Slike" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Samodejno zaznavanje ključnih slik" #: constants.py:162 msgid "Force keyframe" msgstr "Nastavi ključno sliko" #: constants.py:163 msgid "Keyframe frequency" msgstr "Pogostost ključnih slik" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Najmanjša oddaljenost ključnih slik" #: constants.py:165 msgid "Keyframe threshold" msgstr "Nivo ključnih slik" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Občutljivost na šum" #: constants.py:167 msgid "Quick" msgstr "Hitro" #: constants.py:168 msgid "Sharpness" msgstr "Ostrina" #: constants.py:169 msgid "Capacity" msgstr "Kapaciteta" sugar-record-activity-82/po/th.po0000644000000000000000000001442111417267661015640 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-12-10 05:49+0000\n" "Last-Translator: Manatsawin \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "บันทึก" #: constants.py:91 msgid "Photo" msgstr "รูปถ่าย" #: constants.py:92 msgid "Video" msgstr "รูปภาพ" #: constants.py:93 msgid "Audio" msgstr "เสียง" #: constants.py:94 msgid "Time Lapse" msgstr "เวลาผ่านไป" #: constants.py:95 msgid "Animation" msgstr "ภาพเคลื่อนไหว" #: constants.py:96 msgid "Panorama" msgstr "ภาพมุมกว้าง" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s โดย %(2)s" #: constants.py:100 msgid "Title:" msgstr "ชื่อเรื่อง:" #: constants.py:101 msgid "Recorder:" msgstr "ตัวบันทึก:" #: constants.py:102 msgid "Date:" msgstr "วันที่:" #: constants.py:103 msgid "Tags:" msgstr "ป้าย:" #: constants.py:104 msgid "Saving" msgstr "กำลังบันทึก" #: constants.py:105 msgid "Finished recording" msgstr "เสร็จสิ้นการบันทึก" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "เหลืออยู่ $(1)s นาที %(1)s วินาที" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "เหลืออยู่ %(1)s วินาที" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "เหลืออยู่ %(1)s วินาที" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "เหลืออยู่ %(1)s วินาที" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s นาที" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s วินาที" #: constants.py:114 msgid "Remove" msgstr "ลบ" #: constants.py:115 msgid "Stopped recording" msgstr "หยุดการบันทึก" #: constants.py:116 msgid "Copy to clipboard" msgstr "คัดลอกลงคลิปบอร์ด" #: constants.py:117 msgid "Timer:" msgstr "จับเวลา:" #: constants.py:118 msgid "Duration:" msgstr "ระยะเวลา:" #: constants.py:119 msgid "Immediate" msgstr "ทันที" #: constants.py:122 msgid "Play" msgstr "เล่น" #: constants.py:123 msgid "Pause" msgstr "หยุดชั่วคราว" #: constants.py:124 msgid "Add frame" msgstr "เพิ่มเฟรม" #: constants.py:125 msgid "Remove frame" msgstr "ลบเฟรม" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s เฟรมต่อวินาที" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "คุณภาพ:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "ไฟล์ใหญ่" #: constants.py:133 msgid "Small file" msgstr "ไฟล์เล็ก" #: constants.py:134 msgid "Silent" msgstr "เงียบ" #: constants.py:135 msgid "Rotate" msgstr "หมุน" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "คลิกเพื่อถ่ายภาพ" #: constants.py:139 msgid "Click to add picture" msgstr "คลิกเพื่อเพิ่มภาพ" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "กำลังดาวน์โหลด $(%)s จาก $(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "ไม่สามารถดาวน์โหลด $(i)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" #~ msgid "Best quality" #~ msgstr "คุณภาพดีที่สุด" #~ msgid "High quality" #~ msgstr "คุณภาพสูง" #~ msgid "Low quality" #~ msgstr "คุณภาพต่ำ" sugar-record-activity-82/po/na.po0000644000000000000000000001140411417267661015621 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/it.po0000644000000000000000000001426111417267661015643 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-04-30 12:49-0400\n" "Last-Translator: Carlo Falciola \n" "Language-Team: LANGUAGE \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.2.1\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Registra" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Video" #: constants.py:115 msgid "Audio" msgstr "Audio" #: constants.py:116 msgid "Time Lapse" msgstr "Intervallo di tempo" #: constants.py:117 msgid "Animation" msgstr "Animazione" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Intervista" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s di %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titolo:" #: constants.py:123 msgid "Recorder:" msgstr "Registratore:" #: constants.py:124 msgid "Date:" msgstr "Data:" #: constants.py:125 msgid "Tags:" msgstr "Etichette:" #: constants.py:126 msgid "Saving" msgstr "Scrittura" #: constants.py:127 msgid "Finished recording" msgstr "Registrazione terminata" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s ore, %(2)s minuti, %(3)s secondi rimanenti" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minuti, %(2)s secondi rimanenti" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s ore rimanenti" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minuti rimanenti" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s secondi rimanenti" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s ore" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minuti" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s secondi" #: constants.py:136 msgid "Remove" msgstr "Rimuovi" #: constants.py:137 msgid "Stopped recording" msgstr "Registrazione interrotta" #: constants.py:138 msgid "Copy to clipboard" msgstr "Copia negli appunti" #: constants.py:139 msgid "Timer:" msgstr "Timer:" #: constants.py:140 msgid "Duration:" msgstr "Durata:" #: constants.py:141 msgid "Immediate" msgstr "Immediata" #: constants.py:142 msgid "Play" msgstr "Mostra" #: constants.py:143 msgid "Pause" msgstr "Pausa" #: constants.py:144 msgid "Add frame" msgstr "Aggiungi fotogramma" #: constants.py:145 msgid "Remove frame" msgstr "Rimuovi fotogramma" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s fotogrammi al secondo" #: constants.py:147 msgid "Quality" msgstr "Qualità" #: constants.py:148 msgid "Default" msgstr "Base" #: constants.py:149 msgid "Best" msgstr "Ottima" #: constants.py:150 msgid "High" msgstr "Alta" #: constants.py:151 msgid "Low" msgstr "Bassa" #: constants.py:152 msgid "Large file" msgstr "File grande" #: constants.py:153 msgid "Small file" msgstr "File piccolo" #: constants.py:154 msgid "Silent" msgstr "Muto" #: constants.py:155 msgid "Rotate" msgstr "Ruota" #: constants.py:156 msgid "Width" msgstr "Larghezza" #: constants.py:157 msgid "Height" msgstr "Altezza" #: constants.py:158 msgid "Click to take picture" msgstr "Premi per fotografare" #: constants.py:159 msgid "Click to add picture" msgstr "Premi per aggiungere una foto" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Scaricando %(1)s da %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Impossibile scaricare questa %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Salva %(1)s in:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Il tuo %(1)s è pieno" #: constants.py:167 msgid "Journal" msgstr "Diario" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "SD Card" #: constants.py:170 msgid "Preferences" msgstr "Preferenze" #: constants.py:171 msgid "Free space:" msgstr "Spazio libero:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s foto" #: constants.py:174 msgid "Bitrate" msgstr "Bitrate" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Massimo Bitrate" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Minimo Bitrate" #: constants.py:177 msgid "Manage Bitrate" msgstr "Gestione Bitrate" #: constants.py:178 msgid "Border" msgstr "Bordo" #: constants.py:179 msgid "Center" msgstr "Centro" #: constants.py:180 msgid "Frames" msgstr "Fotogrammi" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Identificazione automatica dei fotogrammi" #: constants.py:182 msgid "Force keyframe" msgstr "Forza cambioscena" #: constants.py:183 msgid "Keyframe frequency" msgstr "Frequenza cambioscena" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Distanza minima fra cambioscena" #: constants.py:185 msgid "Keyframe threshold" msgstr "Soglia di cambioscena" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Sensibilità al Rumore" #: constants.py:187 msgid "Quick" msgstr "Rapido" #: constants.py:188 msgid "Sharpness" msgstr "Nitidezza" #: constants.py:189 msgid "Capacity" msgstr "Capacità" #~ msgid "Best quality" #~ msgstr "Qualità ottima" #~ msgid "High quality" #~ msgstr "Qualità alta" #~ msgid "Low quality" #~ msgstr "Qualità bassa" #~ msgid "Your disk is full" #~ msgstr "Il disco è pieno" sugar-record-activity-82/po/fil.po0000644000000000000000000001140111417267661015772 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.3.0\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/vi.po0000644000000000000000000001352611417267661015650 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-02-18 03:40-0500\n" "Last-Translator: Clytie Siddall \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Thu" #: constants.py:113 msgid "Photo" msgstr "Ảnh" #: constants.py:114 msgid "Video" msgstr "Phim" #: constants.py:115 msgid "Audio" msgstr "Âm thanh" #: constants.py:116 msgid "Time Lapse" msgstr "Khoảng thời gian" #: constants.py:117 msgid "Animation" msgstr "Hoạt cảnh" #: constants.py:118 msgid "Panorama" msgstr "Cảnh quay lia" #: constants.py:119 msgid "Interview" msgstr "Nói chuyện riêng" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s bởi %(2)s" #: constants.py:122 msgid "Title:" msgstr "Tựa đề:" #: constants.py:123 msgid "Recorder:" msgstr "Người thu :" #: constants.py:124 msgid "Date:" msgstr "Ngày:" #: constants.py:125 msgid "Tags:" msgstr "Thẻ:" #: constants.py:126 msgid "Saving" msgstr "Đang lưu" #: constants.py:127 msgid "Finished recording" msgstr "Hoàn tất thu" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s giờ, %(2)s phút, %(3)s giây còn lại" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s phút, %(2)s giây còn lại" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s giờ còn lại" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s phút còn lại" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s giây còn lại" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s giờ" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s phút" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s giây" #: constants.py:136 msgid "Remove" msgstr "Bỏ" #: constants.py:137 msgid "Stopped recording" msgstr "Thu bị dừng" #: constants.py:138 msgid "Copy to clipboard" msgstr "Chép vào bảng nháp" #: constants.py:139 msgid "Timer:" msgstr "Đếm thời gian:" #: constants.py:140 msgid "Duration:" msgstr "Thời lượng:" #: constants.py:141 msgid "Immediate" msgstr "Ngay lập tức" #: constants.py:142 msgid "Play" msgstr "Phát" #: constants.py:143 msgid "Pause" msgstr "Tạm dừng" #: constants.py:144 msgid "Add frame" msgstr "Thêm khung" #: constants.py:145 msgid "Remove frame" msgstr "Bỏ khung" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s khung mỗi giây" #: constants.py:147 msgid "Quality" msgstr "Chất lượng" #: constants.py:148 msgid "Default" msgstr "Mặc định" #: constants.py:149 msgid "Best" msgstr "Tốt nhất" #: constants.py:150 msgid "High" msgstr "Cao" #: constants.py:151 msgid "Low" msgstr "Thấp" #: constants.py:152 msgid "Large file" msgstr "Tập tin lớn" #: constants.py:153 msgid "Small file" msgstr "Tập tin nhỏ" #: constants.py:154 msgid "Silent" msgstr "Im lặng" #: constants.py:155 msgid "Rotate" msgstr "Xoay" #: constants.py:156 msgid "Width" msgstr "Bề rộng" #: constants.py:157 msgid "Height" msgstr "Bề cao" #: constants.py:158 msgid "Click to take picture" msgstr "Bấm để chụp ảnh" #: constants.py:159 msgid "Click to add picture" msgstr "Bấm để thêm ảnh" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Đang tải %(1)s xuống %(2)s" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Không thể tải về %(1)s này" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Lưu %(1)s vào :" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s đầy" #: constants.py:167 msgid "Journal" msgstr "Nhật ký" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "Bo mạch SD" #: constants.py:170 msgid "Preferences" msgstr "Tuỳ thích" #: constants.py:171 msgid "Free space:" msgstr "Chỗ trống:" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "ảnh %(1)s" #: constants.py:174 msgid "Bitrate" msgstr "Tỷ lệ bit" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Tỷ lệ bit tối đa" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Tỷ lệ bit tối thiểu" #: constants.py:177 msgid "Manage Bitrate" msgstr "Quản lý tỷ lệ bit" #: constants.py:178 msgid "Border" msgstr "Viền" #: constants.py:179 msgid "Center" msgstr "Tâm" #: constants.py:180 msgid "Frames" msgstr "Khung" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Tự động phát hiện khung khoá" #: constants.py:182 msgid "Force keyframe" msgstr "Buộc khung khoá" #: constants.py:183 msgid "Keyframe frequency" msgstr "Tần số khung khoá" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Khoảng cách khung khoá tối thiểu" #: constants.py:185 msgid "Keyframe threshold" msgstr "Ngưỡng khung khoá" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Độ nhạy nhiễu" #: constants.py:187 msgid "Quick" msgstr "Nhanh" #: constants.py:188 msgid "Sharpness" msgstr "Độ sắc nét" #: constants.py:189 msgid "Capacity" msgstr "Khả năng" sugar-record-activity-82/po/zh_CN.po0000644000000000000000000001352211417267661016227 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-01-03 12:28+0000\n" "Last-Translator: Yuan Chao \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "纪录" #: constants.py:91 msgid "Photo" msgstr "照片" #: constants.py:92 msgid "Video" msgstr "视频" #: constants.py:93 msgid "Audio" msgstr "音频" #: constants.py:94 msgid "Time Lapse" msgstr "时间长度" #: constants.py:95 msgid "Animation" msgstr "动画" #: constants.py:96 msgid "Panorama" msgstr "宽景图" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(2)s 拍摄的 %(1)s" #: constants.py:100 msgid "Title:" msgstr "标题:" #: constants.py:101 msgid "Recorder:" msgstr "纪录者:" #: constants.py:102 msgid "Date:" msgstr "日期:" #: constants.py:103 msgid "Tags:" msgstr "标签:" #: constants.py:104 msgid "Saving" msgstr "保存中" #: constants.py:105 msgid "Finished recording" msgstr "完成记录" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "剩余 %(1)s 分 %(1)s 秒" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "剩余 %(1)s 秒" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "剩余 %(1)s 秒" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "剩余 %(1)s 秒" # TRANS: 7 photos #: constants.py:111 #, python-format #, fuzzy msgid "%(1)s hours" msgstr "%(1)s 个照片" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s 分" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s 秒" #: constants.py:114 msgid "Remove" msgstr "删除" #: constants.py:115 msgid "Stopped recording" msgstr "停止记录" #: constants.py:116 msgid "Copy to clipboard" msgstr "复制到剪贴板" #: constants.py:117 msgid "Timer:" msgstr "计时器:" #: constants.py:118 msgid "Duration:" msgstr "长度:" #: constants.py:119 msgid "Immediate" msgstr "立即" #: constants.py:122 msgid "Play" msgstr "播放" #: constants.py:123 msgid "Pause" msgstr "暂停" #: constants.py:124 msgid "Add frame" msgstr "增加帧" #: constants.py:125 msgid "Remove frame" msgstr "删除帧" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "每秒 %(1)s 格帧" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "质量:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "大文件" #: constants.py:133 msgid "Small file" msgstr "小文件" #: constants.py:134 msgid "Silent" msgstr "无声" #: constants.py:135 msgid "Rotate" msgstr "旋转" #: constants.py:136 msgid "Width" msgstr "宽度" #: constants.py:137 msgid "Height" msgstr "高度" #: constants.py:138 msgid "Click to take picture" msgstr "点选拍摄照片" #: constants.py:139 msgid "Click to add picture" msgstr "点选增加照片" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "下载 %(1)s 自 %(2)s." #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "无法下载 %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "将%(1)保存到:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s已无剩余空间" #: constants.py:147 msgid "Journal" msgstr "增加到日志" #: constants.py:148 msgid "USB" msgstr "U盘" #: constants.py:149 msgid "SD Card" msgstr "SD卡" #: constants.py:150 msgid "Preferences" msgstr "使用偏好" #: constants.py:151 msgid "Free space:" msgstr "剩余空间" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s 个照片" #: constants.py:154 msgid "Bitrate" msgstr "码率" #: constants.py:155 msgid "Maximum Bitrate" msgstr "最高码率" #: constants.py:156 msgid "Minumum Bitrate" msgstr "最低码率" #: constants.py:157 msgid "Manage Bitrate" msgstr "管理码率" #: constants.py:158 msgid "Border" msgstr "边界" #: constants.py:159 msgid "Center" msgstr "中心" #: constants.py:160 msgid "Frames" msgstr "帧" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "自动关键帧探测" #: constants.py:162 msgid "Force keyframe" msgstr "强制关键帧" #: constants.py:163 msgid "Keyframe frequency" msgstr "关键帧频率" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "关键帧最短距离" #: constants.py:165 msgid "Keyframe threshold" msgstr "关键帧阈值" #: constants.py:166 msgid "Noise Sensitivity" msgstr "噪声敏感度" #: constants.py:167 msgid "Quick" msgstr "快速" #: constants.py:168 msgid "Sharpness" msgstr "清晰度" #: constants.py:169 msgid "Capacity" msgstr "容量" #~ msgid "Best quality" #~ msgstr "最佳质量" #~ msgid "High quality" #~ msgstr "高质量" #~ msgid "Low quality" #~ msgstr "低质量" #~ msgid "Your disk is full" #~ msgstr "你的空间已满" sugar-record-activity-82/po/bg.po0000644000000000000000000001665611417267661015631 0ustar rootroot# Bulgarian translation of PACKAGE. # Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Alexander Todorov , 2008. # , fuzzy # # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-02-07 08:23-0500\n" "Last-Translator: Alexander Todorov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Запис" #: constants.py:91 msgid "Photo" msgstr "Снимка" #: constants.py:92 msgid "Video" msgstr "Видео" #: constants.py:93 msgid "Audio" msgstr "Звук" #: constants.py:94 msgid "Time Lapse" msgstr "Интервал от време" #: constants.py:95 msgid "Animation" msgstr "Анимация" #: constants.py:96 msgid "Panorama" msgstr "Панорама" #: constants.py:97 msgid "Interview" msgstr "Интервю" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s от %(2)s" #: constants.py:100 msgid "Title:" msgstr "Заглавие:" #: constants.py:101 msgid "Recorder:" msgstr "Записал:" #: constants.py:102 msgid "Date:" msgstr "Дата:" #: constants.py:103 msgid "Tags:" msgstr "Етикети:" #: constants.py:104 msgid "Saving" msgstr "Запазване" #: constants.py:105 msgid "Finished recording" msgstr "Край на записа" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "Остават %(1)s часа, %(2)s минути, %(1)s секунди" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "Остават %(1)s минути, %(2)s секунди" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "Остават %(1)s часа" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "Остават %(1)s минути" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "Остават %(1)s секунди" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s часа" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s минути" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s секунди" #: constants.py:114 msgid "Remove" msgstr "Изтриване" #: constants.py:115 msgid "Stopped recording" msgstr "Записът е спрян" #: constants.py:116 msgid "Copy to clipboard" msgstr "Копиране в паметта" #: constants.py:117 msgid "Timer:" msgstr "Хронометър:" #: constants.py:118 msgid "Duration:" msgstr "Продължителност:" #: constants.py:119 msgid "Immediate" msgstr "Веднага" #: constants.py:122 msgid "Play" msgstr "Начало" #: constants.py:123 msgid "Pause" msgstr "Пауза" #: constants.py:124 msgid "Add frame" msgstr "Добавяне на кадър" #: constants.py:125 msgid "Remove frame" msgstr "Премахване на кадър" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s кадри в секунда" #: constants.py:127 msgid "Quality" msgstr "Качество" #: constants.py:128 msgid "Default" msgstr "По подразбиране" #: constants.py:129 msgid "Best" msgstr "Най-добро" #: constants.py:130 msgid "High" msgstr "Добро" #: constants.py:131 msgid "Low" msgstr "Лошо" #: constants.py:132 msgid "Large file" msgstr "Голям файл" #: constants.py:133 msgid "Small file" msgstr "Малък файл" #: constants.py:134 msgid "Silent" msgstr "Без звук" # да се повтаря едно и също отново и отново може би #: constants.py:135 msgid "Rotate" msgstr "Завъртане" #: constants.py:136 msgid "Width" msgstr "Ширина" #: constants.py:137 msgid "Height" msgstr "Височина" #: constants.py:138 msgid "Click to take picture" msgstr "Натиснете, за да направите снимка" #: constants.py:139 msgid "Click to add picture" msgstr "Натиснете, за да добавите снимка" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Изтегляне на %(1)s от %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Изтеглянето на %(1)s е невъзможно" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Запис на %(1) в:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Вашият %(1)s е пълен" #: constants.py:147 msgid "Journal" msgstr "Дневник" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "SD карта" #: constants.py:150 msgid "Preferences" msgstr "Предпочитания" #: constants.py:151 msgid "Free space:" msgstr "Свободно място:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s снимки" #: constants.py:154 msgid "Bitrate" msgstr "Пропускателна способност" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Максимална ПС" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Минимална ПС" #: constants.py:157 msgid "Manage Bitrate" msgstr "Управление на ПС" # picture border? #: constants.py:158 msgid "Border" msgstr "Рамка" #: constants.py:159 msgid "Center" msgstr "Център" #: constants.py:160 msgid "Frames" msgstr "Кадри" # да не е като при фотоапаратите с автоматичен фокус? #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Автоматично определяне на ключов кадър" #: constants.py:162 msgid "Force keyframe" msgstr "Използване на ключов кадър" #: constants.py:163 msgid "Keyframe frequency" msgstr "Честота на ключов кадър" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Минимално разстояние на ключов кадър" #: constants.py:165 msgid "Keyframe threshold" msgstr "Праг на ключов кадър" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Чувствителност към шума" #: constants.py:167 msgid "Quick" msgstr "Бързо" # острота на образа, както при телевизорите? някой да има БГ телевизор? #: constants.py:168 msgid "Sharpness" msgstr "Острота" #: constants.py:169 msgid "Capacity" msgstr "Капацитет" #, python-format #~ msgid "%(1)s minutes, %(1)s seconds remaining" #~ msgstr "Остават %(1)s минути, %(1)s секунди" #~ msgid "Quality:" #~ msgstr "Качество:" #~ msgid "Best quality" #~ msgstr "Отлично качество" #~ msgid "High quality" #~ msgstr "Високо качество" #~ msgid "Low quality" #~ msgstr "Ниско качество" #~ msgid "Your disk is full" #~ msgstr "Дискът е пълен" sugar-record-activity-82/po/ru.po0000644000000000000000000001562211417267661015657 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2007-12-23 09:00+0000\n" "Last-Translator: Maxim Osipov \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Записать" #: constants.py:91 msgid "Photo" msgstr "Фото" #: constants.py:92 msgid "Video" msgstr "Видео" #: constants.py:93 msgid "Audio" msgstr "Аудио" #: constants.py:94 msgid "Time Lapse" msgstr "Промежуток Времени" #: constants.py:95 msgid "Animation" msgstr "Анимация" #: constants.py:96 msgid "Panorama" msgstr "Панорама" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s на %(2)s" #: constants.py:100 msgid "Title:" msgstr "Название:" #: constants.py:101 msgid "Recorder:" msgstr "Записал:" #: constants.py:102 msgid "Date:" msgstr "Дата:" #: constants.py:103 msgid "Tags:" msgstr "Метки" #: constants.py:104 msgid "Saving" msgstr "Сохраняется" #: constants.py:105 msgid "Finished recording" msgstr "Запись завершена" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "Осталось %(1)s минут, %(1)s секунд" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "Осталось %(1)s секунд" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "Осталось %(1)s секунд" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "Осталось %(1)s секунд" # TRANS: 7 photos #: constants.py:111 #, python-format #, fuzzy msgid "%(1)s hours" msgstr "%(1)s фотографий" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s минут" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s секунд" #: constants.py:114 msgid "Remove" msgstr "Удалить" #: constants.py:115 msgid "Stopped recording" msgstr "Запись остановлена" #: constants.py:116 msgid "Copy to clipboard" msgstr "Копировать в буфер" #: constants.py:117 msgid "Timer:" msgstr "Таймер:" #: constants.py:118 msgid "Duration:" msgstr "Длительность:" #: constants.py:119 msgid "Immediate" msgstr "Немедленно" #: constants.py:122 msgid "Play" msgstr "Запуск" #: constants.py:123 msgid "Pause" msgstr "Пауза" #: constants.py:124 msgid "Add frame" msgstr "Добавить кадр" #: constants.py:125 msgid "Remove frame" msgstr "Удалить кадр" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s кадров в секунду" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "Качество:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "Большой файл" #: constants.py:133 msgid "Small file" msgstr "Маленький файл" #: constants.py:134 msgid "Silent" msgstr "Тихий" #: constants.py:135 msgid "Rotate" msgstr "Повернуть" #: constants.py:136 msgid "Width" msgstr "Ширина" #: constants.py:137 msgid "Height" msgstr "Высота" #: constants.py:138 msgid "Click to take picture" msgstr "Нажмите для съемки" #: constants.py:139 msgid "Click to add picture" msgstr "Нажмите для добавления картинки" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Загружается %(1)s из %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Не могу загрузить %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Сохранить %(1) в:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Диск %(1)s полон" #: constants.py:147 msgid "Journal" msgstr "Журнал" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "SD Карта" #: constants.py:150 msgid "Preferences" msgstr "Предпочтения" #: constants.py:151 msgid "Free space:" msgstr "Свободное место:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s фотографий" #: constants.py:154 msgid "Bitrate" msgstr "Битрейт" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Максимальный битрейт" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Минимальный битрейт" #: constants.py:157 msgid "Manage Bitrate" msgstr "Изменить битрейт" #: constants.py:158 msgid "Border" msgstr "Граница" #: constants.py:159 msgid "Center" msgstr "Центр" #: constants.py:160 msgid "Frames" msgstr "Рамки" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Автоматическое определение ключевого фрейма" #: constants.py:162 msgid "Force keyframe" msgstr "Использовать ключевой фрейм" #: constants.py:163 msgid "Keyframe frequency" msgstr "Частота ключевого фрейма" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Минимальная дистанция ключевого фрейма" #: constants.py:165 msgid "Keyframe threshold" msgstr "Порог ключевого фрейма" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Шумовая Чувствительность" #: constants.py:167 msgid "Quick" msgstr "Быстро" #: constants.py:168 msgid "Sharpness" msgstr "Четкость" #: constants.py:169 msgid "Capacity" msgstr "Емкость" #~ msgid "Best quality" #~ msgstr "Отличное качество" #~ msgid "High quality" #~ msgstr "Высокое качество" #~ msgid "Low quality" #~ msgstr "Низкое качество" #~ msgid "Your disk is full" #~ msgstr "Диск полон" sugar-record-activity-82/po/ar.po0000644000000000000000000001536611417267661015640 0ustar rootroot# translation of record-activity.po to Arabic # Khaled Hosny , 2007, 2010. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. msgid "" msgstr "" "Project-Id-Version: record-activity\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2010-02-19 18:24+0300\n" "Last-Translator: Khaled Hosny \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "X-Generator: Virtaal 0.5.2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "سجّل" #: constants.py:113 msgid "Photo" msgstr "صورة" #: constants.py:114 msgid "Video" msgstr "فيديو" #: constants.py:115 msgid "Audio" msgstr "صوت" #: constants.py:116 msgid "Time Lapse" msgstr "الوقت المنقضي" #: constants.py:117 msgid "Animation" msgstr "رسوم متحركة" #: constants.py:118 msgid "Panorama" msgstr "بانوراما" #: constants.py:119 msgid "Interview" msgstr "مقابلة" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s من %(2)s" #: constants.py:122 msgid "Title:" msgstr "العنوان:" #: constants.py:123 msgid "Recorder:" msgstr "المُسجِّل:" #: constants.py:124 msgid "Date:" msgstr "التاريخ:" #: constants.py:125 msgid "Tags:" msgstr "الوسوم:" #: constants.py:126 msgid "Saving" msgstr "يحفظ" #: constants.py:127 msgid "Finished recording" msgstr "اكتمل التسجيل" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "بقي %(1)s ساعات، و %(2)s دقائق و %(3)s ثوان" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "بقي %(1)s دقائق و %(2)s ثوان" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "بقي %(1)s ساعات" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "بقي %(1)s دقائق" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "بقي %(1)s ثوان" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s ساعات" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s دقائق" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s ثوان" #: constants.py:136 msgid "Remove" msgstr "أزِل" #: constants.py:137 msgid "Stopped recording" msgstr "توقّف التسجيل" #: constants.py:138 msgid "Copy to clipboard" msgstr "انسخ للحافظة" #: constants.py:139 msgid "Timer:" msgstr "المُؤقِّت:" #: constants.py:140 msgid "Duration:" msgstr "المدّة:" #: constants.py:141 msgid "Immediate" msgstr "حالا" #: constants.py:142 msgid "Play" msgstr "شغّل" #: constants.py:143 msgid "Pause" msgstr "قف مؤقتا" #: constants.py:144 msgid "Add frame" msgstr "أضِف إطارًا" #: constants.py:145 msgid "Remove frame" msgstr "أزِل إطارًا" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s إطار في الثانية" #: constants.py:147 msgid "Quality" msgstr "الجودة" #: constants.py:148 msgid "Default" msgstr "المبدئي" #: constants.py:149 msgid "Best" msgstr "الأفضل" #: constants.py:150 msgid "High" msgstr "عالية" #: constants.py:151 msgid "Low" msgstr "منخفضة" #: constants.py:152 msgid "Large file" msgstr "ملف كبير" #: constants.py:153 msgid "Small file" msgstr "ملف صغير" #: constants.py:154 msgid "Silent" msgstr "صامت" #: constants.py:155 msgid "Rotate" msgstr "أدِر" #: constants.py:156 msgid "Width" msgstr "العرض" #: constants.py:157 msgid "Height" msgstr "الارتفاع" #: constants.py:158 msgid "Click to take picture" msgstr "انقر لتأخذ صورة" #: constants.py:159 msgid "Click to add picture" msgstr "انقر لتضيف صورة" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "يُنزِّل %(1)s من %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "تعذّر تنزيل %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "احفظ %(1)s في:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "ال%(1)s ممتلئ" #: constants.py:167 msgid "Journal" msgstr "اليوميات" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "بطاقة الذاكرة" #: constants.py:170 msgid "Preferences" msgstr "التفضيلات" #: constants.py:171 msgid "Free space:" msgstr "المساحة الخالية:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s صور" #: constants.py:174 msgid "Bitrate" msgstr "معدل البتات" #: constants.py:175 msgid "Maximum Bitrate" msgstr "أقصى معدل بتات" #: constants.py:176 msgid "Minumum Bitrate" msgstr "أدنى معدل بتات" #: constants.py:177 msgid "Manage Bitrate" msgstr "أدِر معدّل البتات" #: constants.py:178 msgid "Border" msgstr "الحد" #: constants.py:179 msgid "Center" msgstr "المركز" #: constants.py:180 msgid "Frames" msgstr "الإطارات" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "تعرف آلي على الإطار الأساسي" #: constants.py:182 msgid "Force keyframe" msgstr "افرِض الإطار الأساسي" #: constants.py:183 msgid "Keyframe frequency" msgstr "سرعة الإطار الأساسي" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "أقل فاصل بين الإطار الأساسي" #: constants.py:185 msgid "Keyframe threshold" msgstr "عتبة الإطار الأساسي" #: constants.py:186 msgid "Noise Sensitivity" msgstr "الحساسية للضوضاء" #: constants.py:187 msgid "Quick" msgstr "سريع" #: constants.py:188 msgid "Sharpness" msgstr "الوضوح" #: constants.py:189 msgid "Capacity" msgstr "السِّعة" #~ msgid "Best quality" #~ msgstr "أفضل جودة" #~ msgid "High quality" #~ msgstr "جودة عالية" #~ msgid "Low quality" #~ msgstr "جودة منخفضة" #~ msgid "Your disk is full" #~ msgstr "القرص ممتلئ" sugar-record-activity-82/po/ml.po0000644000000000000000000001141111417267661015631 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/sd.po0000644000000000000000000001141311417267661015631 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/kos.po0000644000000000000000000001140111417267661016014 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.3.0\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ps.po0000644000000000000000000001525511417267661015655 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-12 05:09-0400\n" "Last-Translator: Usman Mansoor Ansari \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "ریکارډ" #: constants.py:91 msgid "Photo" msgstr "انځور" #: constants.py:92 msgid "Video" msgstr "لیدیز" #: constants.py:93 msgid "Audio" msgstr "اوریز" #: constants.py:94 msgid "Time Lapse" msgstr "تېر-مهال" #: constants.py:95 msgid "Animation" msgstr "سېلن" #: constants.py:96 msgid "Panorama" msgstr "هراړخیزه منظره" #: constants.py:97 msgid "Interview" msgstr "مرکه" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s پر %(2)s" #: constants.py:100 msgid "Title:" msgstr "سرلیک:" #: constants.py:101 msgid "Recorder:" msgstr "ثبتونکی:" #: constants.py:102 msgid "Date:" msgstr "نیټه:" #: constants.py:103 msgid "Tags:" msgstr "وروستۍ برخې:" #: constants.py:104 msgid "Saving" msgstr "ساتنه" #: constants.py:105 msgid "Finished recording" msgstr "رېکارډونه پای ته ورسېده" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s ساعتونه, %(2)s دقیقې, %(1)s ثانیې پاتې دي" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s دقیقې، %(1)s ثانیې پاتې" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "٪(1)s ثانیې پاتې دي" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s دقیقې پاتې دي" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "٪(1)s ثانیې پاتې دي" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(۱)s ساعته" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "٪(1)s دقیقې" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "٪(1)s ثانیې" #: constants.py:114 msgid "Remove" msgstr "لرکول" #: constants.py:115 msgid "Stopped recording" msgstr "ركارډ تم كړئ" #: constants.py:116 msgid "Copy to clipboard" msgstr "ټوټه دړې ته لمېسل" #: constants.py:117 msgid "Timer:" msgstr "مهالښود:" #: constants.py:118 msgid "Duration:" msgstr "موده" #: constants.py:119 msgid "Immediate" msgstr "سمدستي" #: constants.py:122 msgid "Play" msgstr "غږول" #: constants.py:123 msgid "Pause" msgstr "ځنډ" #: constants.py:124 msgid "Add frame" msgstr "چوکاټ زیاتول" #: constants.py:125 msgid "Remove frame" msgstr "چوکاټ لرکول" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "٪(1)s چوکاټه پر ثانیه" #: constants.py:127 msgid "Quality" msgstr "څرنګتیا" #: constants.py:128 msgid "Default" msgstr "تلواله" #: constants.py:129 msgid "Best" msgstr "ترټولو غوره" #: constants.py:130 msgid "High" msgstr "لوړ" #: constants.py:131 msgid "Low" msgstr "ټیټ" #: constants.py:132 msgid "Large file" msgstr "لویه دوتنه" #: constants.py:133 msgid "Small file" msgstr "وړه دوتنه" #: constants.py:134 msgid "Silent" msgstr "غلي-چوپ" #: constants.py:135 msgid "Rotate" msgstr "چورلول" #: constants.py:136 msgid "Width" msgstr "پلنولې" #: constants.py:137 msgid "Height" msgstr "لوړوالې" #: constants.py:138 msgid "Click to take picture" msgstr "انځور کښنې لپاره ټک کړﺉ" #: constants.py:139 msgid "Click to add picture" msgstr "انځور زیاتوونې لپاره ټک وکړﺉ" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "رالېښل %(1)s له %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "دا %(1)s نشي رالېښل کېدای" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "ساتل %(۱) په:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "ستاسې (۱)% بشپړ دى" #: constants.py:147 msgid "Journal" msgstr "ورځپاڼه" #: constants.py:148 msgid "USB" msgstr "یو.اېس.بي" #: constants.py:149 msgid "SD Card" msgstr "اېس.ډي کارټ" #: constants.py:150 msgid "Preferences" msgstr "غوره توبونه" #: constants.py:151 msgid "Free space:" msgstr "خپلواكه تشه:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(۱)s انځورونه" #: constants.py:154 msgid "Bitrate" msgstr "بېټرېټ" #: constants.py:155 msgid "Maximum Bitrate" msgstr "تر ټولو زيات بېټرېټ" #: constants.py:156 msgid "Minumum Bitrate" msgstr "تر ټولو لږ بېټرېټ" #: constants.py:157 msgid "Manage Bitrate" msgstr "بېټرېټ سمبالول" #: constants.py:158 msgid "Border" msgstr "برید" #: constants.py:159 msgid "Center" msgstr "منځول" #: constants.py:160 msgid "Frames" msgstr "چوکاټونه" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "خپلکارى كليدي چوكاټ موندونكې" #: constants.py:162 msgid "Force keyframe" msgstr "ځواك كليدي چوكاټ" #: constants.py:163 msgid "Keyframe frequency" msgstr "د كليدي چوكاټ فرېكوينسي" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "د كليدي چوكاټ ترټولو لږ واټن" #: constants.py:165 msgid "Keyframe threshold" msgstr "د كليدي چوكاټ درشل" #: constants.py:166 msgid "Noise Sensitivity" msgstr "د شورماشور حساسيت" #: constants.py:167 msgid "Quick" msgstr "ژر" #: constants.py:168 msgid "Sharpness" msgstr "ځيږوالې" #: constants.py:169 msgid "Capacity" msgstr "ضرفيت" #~ msgid "Best quality" #~ msgstr "ښه څرنګتیا" #~ msgid "High quality" #~ msgstr "لوړه څرنګتیا" #~ msgid "Low quality" #~ msgstr "ټیټه څرنګتیا" #~ msgid "Your disk is full" #~ msgstr "ستاسې ټیکلی ډک دی" sugar-record-activity-82/po/pt.po0000644000000000000000000001424611417267661015655 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-02-20 15:53-0500\n" "Last-Translator: Eduardo H. Silva \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Gravar" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Vídeo" #: constants.py:115 msgid "Audio" msgstr "Audio" #: constants.py:116 msgid "Time Lapse" msgstr "Lapso de Tempo" #: constants.py:117 msgid "Animation" msgstr "Animação" #: constants.py:118 msgid "Panorama" msgstr "Panorama" #: constants.py:119 msgid "Interview" msgstr "Entrevista" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s por %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titulo:" #: constants.py:123 msgid "Recorder:" msgstr "Criador:" #: constants.py:124 msgid "Date:" msgstr "Data:" #: constants.py:125 msgid "Tags:" msgstr "Etiquetas:" #: constants.py:126 msgid "Saving" msgstr "Guardando" #: constants.py:127 msgid "Finished recording" msgstr "Gravação terminada" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s horas, %(2)s minutos, %(3)s segundos restantes" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minutos, %(1)s segundos restantes" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s horas restantes" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minutos restantes" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s segundos restantes" # TRANS: 7 photos #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s horas" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minutos" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segundos" #: constants.py:136 msgid "Remove" msgstr "Remover" #: constants.py:137 msgid "Stopped recording" msgstr "Parou a gravação" #: constants.py:138 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: constants.py:139 msgid "Timer:" msgstr "Temporizador:" #: constants.py:140 msgid "Duration:" msgstr "Duração:" #: constants.py:141 msgid "Immediate" msgstr "Imediato" #: constants.py:142 msgid "Play" msgstr "Tocar" #: constants.py:143 msgid "Pause" msgstr "Pausar" #: constants.py:144 msgid "Add frame" msgstr "Adicionar frame" #: constants.py:145 msgid "Remove frame" msgstr "Remover frame" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s frames por segundo" #: constants.py:147 msgid "Quality" msgstr "Qualidade:" #: constants.py:148 msgid "Default" msgstr "Predefinição" #: constants.py:149 msgid "Best" msgstr "Melhor" #: constants.py:150 msgid "High" msgstr "Alta" #: constants.py:151 msgid "Low" msgstr "Baixa" #: constants.py:152 msgid "Large file" msgstr "Ficheiro grande" #: constants.py:153 msgid "Small file" msgstr "Ficheiro pequeno" #: constants.py:154 msgid "Silent" msgstr "Silencioso" #: constants.py:155 msgid "Rotate" msgstr "Rodar" #: constants.py:156 msgid "Width" msgstr "Largura" #: constants.py:157 msgid "Height" msgstr "Altura" #: constants.py:158 msgid "Click to take picture" msgstr "Clica para tirar foto" #: constants.py:159 msgid "Click to add picture" msgstr "Clica para adicionar foto" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Transferindo %(1)s de %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Não foi possível transferir %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Gravar %(1) para:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "O teu %(1)s está cheio" #: constants.py:167 msgid "Journal" msgstr "Diário" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "Cartão SD" #: constants.py:170 msgid "Preferences" msgstr "Preferências" #: constants.py:171 msgid "Free space:" msgstr "Espaço livre:" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotografias" #: constants.py:174 msgid "Bitrate" msgstr "Bitrate" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Bitrate Máximo" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Bitrate Mínimo" #: constants.py:177 msgid "Manage Bitrate" msgstr "Gerir Bitrate" #: constants.py:178 msgid "Border" msgstr "Borda" #: constants.py:179 msgid "Center" msgstr "Centro" #: constants.py:180 msgid "Frames" msgstr "Frames" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Detecção automática de keyframe" #: constants.py:182 msgid "Force keyframe" msgstr "Forçar keyframe" #: constants.py:183 msgid "Keyframe frequency" msgstr "Frequência de keyframe" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Distância mínima de keyframe" #: constants.py:185 msgid "Keyframe threshold" msgstr "Limiar de keyframe" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Sensibilidade ao Barulho" #: constants.py:187 msgid "Quick" msgstr "Rápido" #: constants.py:188 msgid "Sharpness" msgstr "Nitidez" #: constants.py:189 msgid "Capacity" msgstr "Capacidade" #~ msgid "Best quality" #~ msgstr "Melhor qualidade" #~ msgid "High quality" #~ msgstr "Alta qualidade" #~ msgid "Low quality" #~ msgstr "Baixa qualidade" #~ msgid "Your disk is full" #~ msgstr "O teu disco está cheio" sugar-record-activity-82/po/cpp.po0000644000000000000000000001140411417267661016005 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/el.po0000644000000000000000000001661611417267661015635 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-07-05 05:28-0400\n" "Last-Translator: Γιάννης Κασκαμανίδης \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Εγγραφή" #: constants.py:91 msgid "Photo" msgstr "Φωτογραφία" #: constants.py:92 msgid "Video" msgstr "Βίντεο" #: constants.py:93 msgid "Audio" msgstr "Ήχος" #: constants.py:94 msgid "Time Lapse" msgstr "Πέρασμα χρόνου" #: constants.py:95 msgid "Animation" msgstr "Κίνηση" #: constants.py:96 msgid "Panorama" msgstr "Πανόραμα" #: constants.py:97 msgid "Interview" msgstr "Συνέντευξη" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s από την %(2)s" #: constants.py:100 msgid "Title:" msgstr "Τίτλος:" #: constants.py:101 msgid "Recorder:" msgstr "Εγγραφέας Ήχου:" #: constants.py:102 msgid "Date:" msgstr "Ημερομηνία:" #: constants.py:103 msgid "Tags:" msgstr "Ετικέτες:" #: constants.py:104 msgid "Saving" msgstr "Αποθηκεύω" #: constants.py:105 msgid "Finished recording" msgstr "Η εγγραφή ολοκληρώθηκε" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s ώρες, %(2)s λεπτά, %(1)s δευτερόλεπτα απομένουν" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s λεπτά, %(1)s δευτερόλεπτα απομένουν" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s ώρες απομένουν" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s λεπτά απομένουν" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s δευτερόλεπτα απομένουν" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s ώρες" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s λεπτά" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s δευτερόλεπτα" #: constants.py:114 msgid "Remove" msgstr "Αφαίρεση" #: constants.py:115 msgid "Stopped recording" msgstr "Η εγγραφή σταμάτησε" #: constants.py:116 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" #: constants.py:117 msgid "Timer:" msgstr "Χρονόμετρο:" #: constants.py:118 msgid "Duration:" msgstr "Διάρκεια:" #: constants.py:119 msgid "Immediate" msgstr "Αμέσως" #: constants.py:122 msgid "Play" msgstr "Αναπαραγωγή" #: constants.py:123 msgid "Pause" msgstr "Παύση" #: constants.py:124 msgid "Add frame" msgstr "Προσθήκη πλαισίου" #: constants.py:125 msgid "Remove frame" msgstr "Αφαίρεση πλαισίου" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s πλαίσια ανά δευτερόλεπτο" #: constants.py:127 msgid "Quality" msgstr "Ποιότητα" #: constants.py:128 msgid "Default" msgstr "Προκαθορισμένο" #: constants.py:129 msgid "Best" msgstr "Βέλτιστο" #: constants.py:130 msgid "High" msgstr "Υψηλό" #: constants.py:131 msgid "Low" msgstr "Χαμηλό" #: constants.py:132 msgid "Large file" msgstr "Μεγάλο αρχείο" #: constants.py:133 msgid "Small file" msgstr "Μικρό αρχείο" #: constants.py:134 msgid "Silent" msgstr "Σιωπηλός" #: constants.py:135 msgid "Rotate" msgstr "Περιστροφή" #: constants.py:136 msgid "Width" msgstr "Πλάτος" #: constants.py:137 msgid "Height" msgstr "Ύψος" #: constants.py:138 msgid "Click to take picture" msgstr "Κλικ για να πάρεις εικόνα" #: constants.py:139 msgid "Click to add picture" msgstr "Κλικ για να προσθέσεις εικόνα" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Κατέβασμα %(1)s από %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "Αδυνατώ να το κατεβάσω %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Σώσε την %(1) στο:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "Τo %(1)s σας είναι γεμάτo" #: constants.py:147 msgid "Journal" msgstr "Ημερολόγιο" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "Κάρτα SD" #: constants.py:150 msgid "Preferences" msgstr "Προτιμήσεις" #: constants.py:151 msgid "Free space:" msgstr "Ελεύθερος χώρος:" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s φωτογραφίες" #: constants.py:154 msgid "Bitrate" msgstr "Ρυθμός μετάδοσης bit" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Μέγιστος ρυθμός μετάδοσης bit" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Ελάχιστος ρυθμός μετάδοσης bit" #: constants.py:157 msgid "Manage Bitrate" msgstr "Διαχείριση ρυθμού μετάδοσης bit" #: constants.py:158 msgid "Border" msgstr "Περίγραμμα" #: constants.py:159 msgid "Center" msgstr "Κέντρο" # Είναι οι εικόνες που σχηματίζουν την ταινία (την κίνηση) π.χ. 25 πλαίσια ανα δεπτερόλεπτο ή π.χ. 25 καρέ ανά δεπτερόλεπτο #: constants.py:160 msgid "Frames" msgstr "Καρέ" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Αυτόματος εντοπισμός καρέ-κλειδιών" #: constants.py:162 msgid "Force keyframe" msgstr "Εξαναγκασμός καρέ-κλειδιού" #: constants.py:163 msgid "Keyframe frequency" msgstr "Συχνότητα καρέ-κλειδιών" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Ελάχιστη απόσταση καρέ-κλειδιών" #: constants.py:165 msgid "Keyframe threshold" msgstr "Κατώφλι καρέ-κλειδιών" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Ευαισθησία θορύβου" #: constants.py:167 msgid "Quick" msgstr "Γρήγορο" #: constants.py:168 msgid "Sharpness" msgstr "Οξύτητα" #: constants.py:169 msgid "Capacity" msgstr "Χωρητικότητα" #~ msgid "Best quality" #~ msgstr "Βέλτιστη ποιότητα" #~ msgid "High quality" #~ msgstr "Υψηλή ποιότητα" #~ msgid "Low quality" #~ msgstr "Χαμηλή ποιότητα" #~ msgid "Your disk is full" #~ msgstr "Ο δίσκος σου είναι γεμάτος" sugar-record-activity-82/po/tzo.po0000644000000000000000000001140111417267661016034 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.3.0\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/fa.po0000644000000000000000000001472711417267661015624 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-01-09 08:58+0000\n" "Last-Translator: Sohaib Obaidi \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Pootle 1.0.2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "ضبط" #: constants.py:91 msgid "Photo" msgstr "عکس" #: constants.py:92 msgid "Video" msgstr "ویدیو" #: constants.py:93 msgid "Audio" msgstr "صدا" #: constants.py:94 msgid "Time Lapse" msgstr "گذشت زمان" #: constants.py:95 msgid "Animation" msgstr "پویانمایی" #: constants.py:96 msgid "Panorama" msgstr " چشم انداز" #: constants.py:97 msgid "Interview" msgstr "" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s در %(2)s" #: constants.py:100 msgid "Title:" msgstr "عنوان:" #: constants.py:101 msgid "Recorder:" msgstr "ضبط کننده:" #: constants.py:102 msgid "Date:" msgstr "تاریخ:" #: constants.py:103 msgid "Tags:" msgstr "برچسبها:" #: constants.py:104 msgid "Saving" msgstr "ذخیره‌سازی" #: constants.py:105 msgid "Finished recording" msgstr "ضبطهای تمام‌شده" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format #, fuzzy msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s دقیقه %(1)s ثانیه مانده" #: constants.py:108 #, python-format #, fuzzy msgid "%(1)s hours remaining" msgstr "%(1)s ثانیه مانده" #: constants.py:109 #, python-format #, fuzzy msgid "%(1)s minutes remaining" msgstr "%(1)s ثانیه مانده" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s ثانیه مانده" # TRANS: 7 photos #: constants.py:111 #, python-format #, fuzzy msgid "%(1)s hours" msgstr "%(1)s عکسها" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s دقیقه" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s ثانیه" #: constants.py:114 msgid "Remove" msgstr "برداشتن" #: constants.py:115 msgid "Stopped recording" msgstr "ضبط متوقف شده" #: constants.py:116 msgid "Copy to clipboard" msgstr "کپی به حافظه" #: constants.py:117 msgid "Timer:" msgstr "زمان سنج:" #: constants.py:118 msgid "Duration:" msgstr "مدت:" #: constants.py:119 msgid "Immediate" msgstr "فوری" #: constants.py:122 msgid "Play" msgstr "نواختن" #: constants.py:123 msgid "Pause" msgstr "مکث" #: constants.py:124 msgid "Add frame" msgstr "افزودن قاب" #: constants.py:125 msgid "Remove frame" msgstr "برداشتن قاب" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s قاب در ثانیه" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "کیفیت:" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "پرونده بزرگ" #: constants.py:133 msgid "Small file" msgstr "پرونده کوچک" #: constants.py:134 msgid "Silent" msgstr "سکوت" #: constants.py:135 msgid "Rotate" msgstr "چرخش" #: constants.py:136 msgid "Width" msgstr "عرض" #: constants.py:137 msgid "Height" msgstr "ارتفاع" #: constants.py:138 msgid "Click to take picture" msgstr "برای عکس گرفتن کلیک کن" #: constants.py:139 msgid "Click to add picture" msgstr "برای افزودن عکس کلیک کن" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "در حال دریافت %(1)s از %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "این %(1)s دریافت نمی‌شود" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(1)s ثبت شد در:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "%(1)s شما پر است" #: constants.py:147 msgid "Journal" msgstr "روزنامه" #: constants.py:148 msgid "USB" msgstr "مسیر فراگیر مسلسلUniversal Serial Bus" #: constants.py:149 msgid "SD Card" msgstr "کارت SD" #: constants.py:150 msgid "Preferences" msgstr "اولویت ها" #: constants.py:151 msgid "Free space:" msgstr "فضای خالی" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s عکسها" #: constants.py:154 msgid "Bitrate" msgstr "شرح جریان بت" #: constants.py:155 msgid "Maximum Bitrate" msgstr "بیشترین شرح جریان بت" #: constants.py:156 msgid "Minumum Bitrate" msgstr "کمترین شرح جریان بت" #: constants.py:157 msgid "Manage Bitrate" msgstr "اداره شرح جریان بت" #: constants.py:158 msgid "Border" msgstr "حاشیه" #: constants.py:159 msgid "Center" msgstr "مرکز" #: constants.py:160 msgid "Frames" msgstr "قاب ها" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "کشف اتوماتیکی قاب کلیدی" #: constants.py:162 msgid "Force keyframe" msgstr "قاب کلیدی نفوذ" #: constants.py:163 msgid "Keyframe frequency" msgstr "تناوب قاب کلیدی" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "کمترین فاصله قاب کلیدی" #: constants.py:165 msgid "Keyframe threshold" msgstr "آستانه قاب کلیدی" #: constants.py:166 msgid "Noise Sensitivity" msgstr "حساسیت صدا" #: constants.py:167 msgid "Quick" msgstr "سریع" #: constants.py:168 msgid "Sharpness" msgstr "تیزی" #: constants.py:169 msgid "Capacity" msgstr "ظرفیت" #~ msgid "Best quality" #~ msgstr "بهترین کیفیت" #~ msgid "High quality" #~ msgstr "کیفیت بالا" #~ msgid "Low quality" #~ msgstr "کیفیت پایین" #~ msgid "Your disk is full" #~ msgstr "دسک شما پر است" sugar-record-activity-82/po/tpi.po0000644000000000000000000001141311417267661016017 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/sv.po0000644000000000000000000001334411417267661015660 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2009-01-11 14:47-0500\n" "Last-Translator: Nicci Manns \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Spela in" #: constants.py:113 msgid "Photo" msgstr "Foto" #: constants.py:114 msgid "Video" msgstr "Video" #: constants.py:115 msgid "Audio" msgstr "Ljud" #: constants.py:116 msgid "Time Lapse" msgstr "Tidslängd" #: constants.py:117 msgid "Animation" msgstr "Animering" #: constants.py:118 msgid "Panorama" msgstr "Panoramavy" #: constants.py:119 msgid "Interview" msgstr "Intervju " #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s av %(2)s" #: constants.py:122 msgid "Title:" msgstr "Titel:" #: constants.py:123 msgid "Recorder:" msgstr "Inspelare:" #: constants.py:124 msgid "Date:" msgstr "Datum:" #: constants.py:125 msgid "Tags:" msgstr "Nyckelord:" #: constants.py:126 msgid "Saving" msgstr "Sparar" #: constants.py:127 msgid "Finished recording" msgstr "Inspelning klar" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s timmar, %(2)s minuter och %(3)s sekunder återstår" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minuter och %(2)s sekunder återstår" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s timmar återstår" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s minuter återstår" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s sekunder återstår" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s timmar" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minuter" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s sekunder" #: constants.py:136 msgid "Remove" msgstr "Ta bort" #: constants.py:137 msgid "Stopped recording" msgstr "Slutade spela in" #: constants.py:138 msgid "Copy to clipboard" msgstr "Kopiera till kopieringsminne" #: constants.py:139 msgid "Timer:" msgstr "Tid:" #: constants.py:140 msgid "Duration:" msgstr "Varaktighet:" #: constants.py:141 msgid "Immediate" msgstr "Direkt" #: constants.py:142 msgid "Play" msgstr "Spela upp" #: constants.py:143 msgid "Pause" msgstr "Pausa" #: constants.py:144 msgid "Add frame" msgstr "Lägg till bild" #: constants.py:145 msgid "Remove frame" msgstr "Ta bort bild" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s bilder per sekund" #: constants.py:147 msgid "Quality" msgstr "Kvalite" #: constants.py:148 msgid "Default" msgstr "Standard" #: constants.py:149 msgid "Best" msgstr "Bästa" #: constants.py:150 msgid "High" msgstr "Högsta" #: constants.py:151 msgid "Low" msgstr "Lägsta" #: constants.py:152 msgid "Large file" msgstr "Stor fil" #: constants.py:153 msgid "Small file" msgstr "Liten fil" #: constants.py:154 msgid "Silent" msgstr "Tyst" #: constants.py:155 msgid "Rotate" msgstr "Vrid" #: constants.py:156 msgid "Width" msgstr "Bredd" #: constants.py:157 msgid "Height" msgstr "Höjd" #: constants.py:158 msgid "Click to take picture" msgstr "Klicka för att ta ett foto" #: constants.py:159 msgid "Click to add picture" msgstr "Klicka för att lägga till bild" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Laddar ned %(1)s från %(2)s" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Kunde inte ladda ned %(1)s" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "Sparar %(1)s till:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Din %(1)s är full" #: constants.py:167 msgid "Journal" msgstr "Dagbok" #: constants.py:168 msgid "USB" msgstr "USB-minne" #: constants.py:169 msgid "SD Card" msgstr "SD-kort" #: constants.py:170 msgid "Preferences" msgstr "Inställningar" #: constants.py:171 msgid "Free space:" msgstr "Ledigt utrymme:" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s foton" #: constants.py:174 msgid "Bitrate" msgstr "Bitrate" #: constants.py:175 msgid "Maximum Bitrate" msgstr "Maximal bitrate" #: constants.py:176 msgid "Minumum Bitrate" msgstr "Minimal bitrate" #: constants.py:177 msgid "Manage Bitrate" msgstr "Hantera bitrate" #: constants.py:178 msgid "Border" msgstr "Kant" #: constants.py:179 msgid "Center" msgstr "Centrera" #: constants.py:180 msgid "Frames" msgstr "Ramar" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Automatisk Nyckelbildsdetektering" #: constants.py:182 msgid "Force keyframe" msgstr "Tvinga skapande av nyckelbild" #: constants.py:183 msgid "Keyframe frequency" msgstr "Nyckelbildsfrekvens" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Minimalt avstånd mellan nyckelbilder" #: constants.py:185 msgid "Keyframe threshold" msgstr "Nyckelbildströskelvärde" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Bruskänslighet" #: constants.py:187 msgid "Quick" msgstr "Snabb" #: constants.py:188 msgid "Sharpness" msgstr "Skarphet" #: constants.py:189 msgid "Capacity" msgstr "Kapacitet" sugar-record-activity-82/po/te.po0000644000000000000000000001742111417267661015640 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-07-24 13:53+0100\n" "Last-Translator: Satyanarayana Murthy Saladi \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 #: constants.py:90 msgid "Record" msgstr "రికార్డు చేయి" #: constants.py:91 msgid "Photo" msgstr "పటము" #: constants.py:92 msgid "Video" msgstr "చలనచిత్రము" #: constants.py:93 msgid "Audio" msgstr "ధ్వని" #: constants.py:94 msgid "Time Lapse" msgstr "కాలక్రమేణా" #: constants.py:95 msgid "Animation" msgstr "ఊహా చలనచిత్రము" #: constants.py:96 msgid "Panorama" msgstr "పనోరమా" #: constants.py:97 msgid "Interview" msgstr "సంభాషణ" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s బై %(2)s" #: constants.py:100 msgid "Title:" msgstr "పీఠిక:" #: constants.py:101 msgid "Recorder:" msgstr "రికార్డరు:" #: constants.py:102 msgid "Date:" msgstr "తేదీ: " #: constants.py:103 msgid "Tags:" msgstr "గుర్తింపు చీటీలు :" #: constants.py:104 msgid "Saving" msgstr "బద్రపరచుతున్నా" #: constants.py:105 msgid "Finished recording" msgstr "రికార్డింగు పూర్తయినది" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s నిమిషాలు, %(1)s సెకనులు మిగిలిఉన్నాయి" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s సెకనులు మిగిలిఉన్నాయి" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s సెకనులు మిగిలిఉన్నాయి" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s సెకనులు మిగిలిఉన్నాయి" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s చిత్రములు" #: constants.py:112 #: constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s నిమిషాలు" #: constants.py:113 #: constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s సెకనులు" #: constants.py:114 msgid "Remove" msgstr "తీసివేయి" #: constants.py:115 msgid "Stopped recording" msgstr "రికార్డింగు ఆగినది" #: constants.py:116 msgid "Copy to clipboard" msgstr "క్లిప్ బోర్డ్ కు నకలు చేయి" #: constants.py:117 msgid "Timer:" msgstr "టైమరు:" #: constants.py:118 msgid "Duration:" msgstr "సమయము:" #: constants.py:119 msgid "Immediate" msgstr "వెంటనే" #: constants.py:122 msgid "Play" msgstr "ఆడు" #: constants.py:123 msgid "Pause" msgstr "ఆపు" #: constants.py:124 msgid "Add frame" msgstr "ఫ్రేము చేర్చు" #: constants.py:125 msgid "Remove frame" msgstr "ఫ్రేము తీసివేయి" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "సెకనునుకు %(1)s ఫ్రేములు" #: constants.py:127 #, fuzzy msgid "Quality" msgstr "నాణ్యత:" #: constants.py:128 msgid "Default" msgstr "అప్రమేయం" #: constants.py:129 msgid "Best" msgstr "అత్యుత్తమం" #: constants.py:130 msgid "High" msgstr "ఉత్తమమైన" #: constants.py:131 msgid "Low" msgstr "తక్కువైన" #: constants.py:132 msgid "Large file" msgstr "పెద్ద ఫైలు" #: constants.py:133 msgid "Small file" msgstr "చిన్న ఫైలు" #: constants.py:134 msgid "Silent" msgstr "మౌనము" #: constants.py:135 msgid "Rotate" msgstr "తిప్పు" #: constants.py:136 msgid "Width" msgstr "వెడల్పు" #: constants.py:137 msgid "Height" msgstr "ఎత్తు" #: constants.py:138 msgid "Click to take picture" msgstr "చిత్రం తీయడానికి నొక్కు" #: constants.py:139 msgid "Click to add picture" msgstr "చిత్రం కలపడానికి నొక్కు" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "%(2)s నుండి %(1)s దిగుమతి జరుగుతుంది" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "ఈ %(1)s దిగుమతి కుదరదు" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "%(1) ను ఇక్కడకు బద్రపరుస్తున్నా:" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "మీ %(1)s నిండుగా ఉన్నది" #: constants.py:147 msgid "Journal" msgstr "పద్దు" #: constants.py:148 msgid "USB" msgstr "యు ఎస్ బి(USB)" #: constants.py:149 msgid "SD Card" msgstr "ఎస్ డి కార్డ్(SD Card)" #: constants.py:150 msgid "Preferences" msgstr "ఇష్టాలు" #: constants.py:151 msgid "Free space:" msgstr "ఖాళీ జాగా" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s చిత్రములు" #: constants.py:154 msgid "Bitrate" msgstr "బిట్ రేట్" #: constants.py:155 msgid "Maximum Bitrate" msgstr "గరిష్ట బిట్ రేట్" #: constants.py:156 msgid "Minumum Bitrate" msgstr "కనిష్ట బిట్ రేట్" #: constants.py:157 msgid "Manage Bitrate" msgstr "బిట్ రేట్ ను నియంత్రించు" #: constants.py:158 msgid "Border" msgstr "అంచు" #: constants.py:159 msgid "Center" msgstr "మద్యలో" #: constants.py:160 msgid "Frames" msgstr "ఫ్రేములు" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "దానంతట దానిగా కీ ఫ్రేమ్ శోధన" #: constants.py:162 msgid "Force keyframe" msgstr "కీ ఫ్రేమ్ చొప్పించు" #: constants.py:163 msgid "Keyframe frequency" msgstr "కీ ఫ్రేమ్ ఫ్రీక్వెంసీ" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "కీ ఫ్రేమ్ అతితక్కువ దూరం" #: constants.py:165 msgid "Keyframe threshold" msgstr "కీ ఫ్రేమ్ పతాక స్థాయి" #: constants.py:166 msgid "Noise Sensitivity" msgstr "గోల గ్రాహ్యత" #: constants.py:167 msgid "Quick" msgstr "త్వరగా" #: constants.py:168 msgid "Sharpness" msgstr "పదును" #: constants.py:169 msgid "Capacity" msgstr "సామర్ధ్యం" #~ msgid "Best quality" #~ msgstr "మరీమంచి నాణ్యత" #~ msgid "High quality" #~ msgstr "మంచి నాణ్యత" #~ msgid "Low quality" #~ msgstr "తక్కువ నాణ్యత" #~ msgid "Your disk is full" #~ msgstr "డిస్క్ నిండుగా ఉంది " sugar-record-activity-82/po/rw.po0000644000000000000000000001405411417267661015657 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-07-31 12:18+0200\n" "Last-Translator: GASHAYIJA Guillaume \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Gufatamajwi" #: constants.py:113 msgid "Photo" msgstr "ifoto" #: constants.py:114 msgid "Video" msgstr "Isohora mashusho" #: constants.py:115 msgid "Audio" msgstr "Isohora majwi" #: constants.py:116 msgid "Time Lapse" msgstr "igihe cyarangiye" #: constants.py:117 msgid "Animation" msgstr "kwerekana amashusho muburyo bunyuranamo" #: constants.py:118 msgid "Panorama" msgstr "panorama" #: constants.py:119 msgid "Interview" msgstr "isuzumabumenyi" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s na %(2)s" #: constants.py:122 msgid "Title:" msgstr "umutwe w`amagambo" #: constants.py:123 msgid "Recorder:" msgstr "Igifata amajwi" #: constants.py:124 msgid "Date:" msgstr "Itariki" #: constants.py:125 msgid "Tags:" msgstr "Tags:" #: constants.py:126 msgid "Saving" msgstr "kubika" #: constants.py:127 msgid "Finished recording" msgstr "kurangiza gufata amajwi" #: constants.py:128 #, python-format #, fuzzy msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s amasaha, %(2)s iminota, %(1)s amasegonda asigaye" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s iminota, %(2)s amasegonda asigaye" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s amasaha asigaye" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "%(1)s iminota isigaye" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "%(1)s amasegonda asigaye" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s amasaha" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s iminota" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s amasegonda" #: constants.py:136 msgid "Remove" msgstr "Kuraho" #: constants.py:137 msgid "Stopped recording" msgstr "guhagarika gufata amajwi" #: constants.py:138 msgid "Copy to clipboard" msgstr "Koporora ushyire ku kibaho" #: constants.py:139 msgid "Timer:" msgstr "ikintu kigendera kugihe" #: constants.py:140 msgid "Duration:" msgstr "igihe" #: constants.py:141 msgid "Immediate" msgstr "akokanya" #: constants.py:142 msgid "Play" msgstr "gukina" #: constants.py:143 msgid "Pause" msgstr "Guhagarika by`akanya gato" #: constants.py:144 msgid "Add frame" msgstr "Ongeraho frame" #: constants.py:145 msgid "Remove frame" msgstr "Kuraho frame" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s frames ku isegonda" #: constants.py:147 msgid "Quality" msgstr "Imimerere y`ikintu" #: constants.py:148 msgid "Default" msgstr "ikintu kiri muburyo butemewe" #: constants.py:149 msgid "Best" msgstr "ikiza" #: constants.py:150 msgid "High" msgstr "Hejuru" #: constants.py:151 msgid "Low" msgstr "Hasi" #: constants.py:152 msgid "Large file" msgstr "Ububiko bunini" #: constants.py:153 msgid "Small file" msgstr "Ububiko buto" #: constants.py:154 msgid "Silent" msgstr "Guceceka" #: constants.py:155 msgid "Rotate" msgstr "kuzengurutsa" #: constants.py:156 msgid "Width" msgstr "ubugari" #: constants.py:157 msgid "Height" msgstr "Ubuhagarike" #: constants.py:158 msgid "Click to take picture" msgstr "Kanda ufate ifoto" #: constants.py:159 msgid "Click to add picture" msgstr "Kanda wongereho ifoto" # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Kura kuri mudasobwa %(1)s kuva %(2)s" # TRANS: Cannot download this Photo #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "Ntibishoboka kuva kuri mudasobwa %(1)s" # TRANS: Save Photo to: #. TRANS: Save Photo to: #: constants.py:165 #, python-format #, fuzzy msgid "Save %(1)s to:" msgstr "Bika %(1) to:" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "Iicyawer %(1)s kiruzuye" #: constants.py:167 msgid "Journal" msgstr "Ikinyamakuru" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "iIkarita ya SD" #: constants.py:170 msgid "Preferences" msgstr "Ibyo wifuza" #: constants.py:171 msgid "Free space:" msgstr "Umwanya urimo ubusa" # TRANS: 7 photos #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "%(1)s Ifoto" #: constants.py:174 msgid "Bitrate" msgstr "Bitrate" #: constants.py:175 msgid "Maximum Bitrate" msgstr " Bitrate nini" #: constants.py:176 msgid "Minumum Bitrate" msgstr " Bitrate ntoya" #: constants.py:177 msgid "Manage Bitrate" msgstr "Manage Bitrate" #: constants.py:178 msgid "Border" msgstr "Umupaka" #: constants.py:179 msgid "Center" msgstr "Ihuriro" #: constants.py:180 msgid "Frames" msgstr "Frames" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "Automatic Keyframe detection" #: constants.py:182 msgid "Force keyframe" msgstr "Force Keyframe" #: constants.py:183 msgid "Keyframe frequency" msgstr "Keyframe frequency" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "Keyframe intera ntoya" #: constants.py:185 msgid "Keyframe threshold" msgstr "Keyframe trreshold" #: constants.py:186 msgid "Noise Sensitivity" msgstr "Urusakur rwumvikana" #: constants.py:187 msgid "Quick" msgstr "Vuba" #: constants.py:188 msgid "Sharpness" msgstr "Gutyara" #: constants.py:189 msgid "Capacity" msgstr "ubushobozi" sugar-record-activity-82/po/tvl.po0000644000000000000000000001140111417267661016025 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.3.0\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ms.po0000644000000000000000000001140411417267661015642 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ca.po0000644000000000000000000001455511417267661015620 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: 2008-03-15 13:47-0400\n" "Last-Translator: Jaume \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "Gravar" #: constants.py:91 msgid "Photo" msgstr "Fotografia" #: constants.py:92 msgid "Video" msgstr "Vídeo" #: constants.py:93 msgid "Audio" msgstr "Àudio" # cal context aqui #: constants.py:94 msgid "Time Lapse" msgstr "Lapsus de temps" #: constants.py:95 msgid "Animation" msgstr "Animació" #: constants.py:96 msgid "Panorama" msgstr "Panorama" #: constants.py:97 msgid "Interview" msgstr "Entrevista" # TRANS: photo by photographer, e.g., "Photo by Mary" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "%(1)s de %(2)s" #: constants.py:100 msgid "Title:" msgstr "Títol:" #: constants.py:101 msgid "Recorder:" msgstr "Gravadora:" #: constants.py:102 msgid "Date:" msgstr "Data:" #: constants.py:103 msgid "Tags:" msgstr "Etiquetes:" #: constants.py:104 msgid "Saving" msgstr "Desant" #: constants.py:105 msgid "Finished recording" msgstr "Acabada la gravació" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "Queden %(1)s hores, %(2)s minuts, %(1)s segons" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "queden %(1)s minuts, %(1)s segons" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "queden %(1)s segons" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "Queden %(1)s minuts" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "queden %(1)s segons" # TRANS: 7 photos #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "%(1)s hores" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minuts" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segons" #: constants.py:114 msgid "Remove" msgstr "Elimina" #: constants.py:115 msgid "Stopped recording" msgstr "Gravació aturada" #: constants.py:116 msgid "Copy to clipboard" msgstr "Copia al porta-retalls" #: constants.py:117 msgid "Timer:" msgstr "Temps:" #: constants.py:118 msgid "Duration:" msgstr "Durada:" #: constants.py:119 msgid "Immediate" msgstr "Immediat" #: constants.py:122 msgid "Play" msgstr "Arrenca" #: constants.py:123 msgid "Pause" msgstr "Pausa" #: constants.py:124 msgid "Add frame" msgstr "Afegir capa" #: constants.py:125 msgid "Remove frame" msgstr "Eliminar capa" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "%(1)s capes per segon" #: constants.py:127 msgid "Quality" msgstr "Qualitat:" #: constants.py:128 msgid "Default" msgstr "Per defecte" #: constants.py:129 msgid "Best" msgstr "Millor" #: constants.py:130 msgid "High" msgstr "Alt" #: constants.py:131 msgid "Low" msgstr "Baix" #: constants.py:132 msgid "Large file" msgstr "Fitxer gran" #: constants.py:133 msgid "Small file" msgstr "Fitxer petit" #: constants.py:134 msgid "Silent" msgstr "Silenci" #: constants.py:135 msgid "Rotate" msgstr "Girar" #: constants.py:136 msgid "Width" msgstr "Amplada" #: constants.py:137 msgid "Height" msgstr "Alçada" #: constants.py:138 msgid "Click to take picture" msgstr "Clic per fer una fotografia" #: constants.py:139 msgid "Click to add picture" msgstr "Clic per afegir una fotografia" # aqui calen els articles: descarregant un/una ... del/de li ... # TRANS: Downloading Photo from Mary #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "Descarregant %(1)s de %(2)s" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "No es pot descarregar aquest/ta %(1)s" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "Desa %(1)s a:" # aqui suposo q el context el masculí #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "El teu %(1)s es ple" #: constants.py:147 msgid "Journal" msgstr "Diari" #: constants.py:148 msgid "USB" msgstr "USB" #: constants.py:149 msgid "SD Card" msgstr "Tarja SD" #: constants.py:150 msgid "Preferences" msgstr "Preferències" #: constants.py:151 msgid "Free space:" msgstr "Espai lliure" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "%(1)s fotos" # He deixat bitrate, en compte d'opcions com: velocitat de bits #: constants.py:154 msgid "Bitrate" msgstr "Bitrate" #: constants.py:155 msgid "Maximum Bitrate" msgstr "Bitrate màxima" #: constants.py:156 msgid "Minumum Bitrate" msgstr "Bitrate mínima" #: constants.py:157 msgid "Manage Bitrate" msgstr "Edita la Bitrate" #: constants.py:158 msgid "Border" msgstr "Vora" #: constants.py:159 msgid "Center" msgstr "Centrar" # si es refereix a frames per segon, la traduccio seria Imatges, sino, seria Capes #: constants.py:160 msgid "Frames" msgstr "Imatges" # PROPOSTA de traduccio: KEYFRAME per IMATGE AMB MARCA #: constants.py:161 msgid "Automatic keyframe detection" msgstr "Deteccio automàtica d'imatges amb marca" #: constants.py:162 msgid "Force keyframe" msgstr "Força imatge amb marca" #: constants.py:163 msgid "Keyframe frequency" msgstr "Freqüènca d'imatges amb marca" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "Distància mínima d'imatges amb marca" #: constants.py:165 msgid "Keyframe threshold" msgstr "Llindar d'imatges amb marca" #: constants.py:166 msgid "Noise Sensitivity" msgstr "Sensibilitat del soroll" #: constants.py:167 msgid "Quick" msgstr "Ràpid" #: constants.py:168 msgid "Sharpness" msgstr "Agudesa" #: constants.py:169 msgid "Capacity" msgstr "Capacitat" #~ msgid "Best quality" #~ msgstr "Millor qualitat" #~ msgid "High quality" #~ msgstr "Alta qualitat" #~ msgid "Low quality" #~ msgstr "Baixa qualitat" #~ msgid "Your disk is full" #~ msgstr "El teu disc dur és ple" sugar-record-activity-82/po/ko.po0000644000000000000000000001141011417267661015631 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ay.po0000644000000000000000000001237211417267661015641 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. msgid "" msgstr "" "Project-Id-Version: .82 Sept 08 AY\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: 2008-09-13 16:58-0400\n" "Last-Translator: OLPC-Bolivia\n" "Language-Team: OLE Bolivia \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" "X-Poedit-Language: Aymara\n" "X-Poedit-Country: BOLIVIA\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "Imaña" #: constants.py:113 msgid "Photo" msgstr "Phutugraphia" #: constants.py:114 msgid "Video" msgstr "Salta" #: constants.py:115 msgid "Audio" msgstr "Arsu" #: constants.py:116 msgid "Time Lapse" msgstr "Qawqha pachas" #: constants.py:117 msgid "Animation" msgstr "Unuqiyawi" #: constants.py:118 msgid "Panorama" msgstr "Qhana uñjkaya" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "Imataxiwa" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "%(1)s uranaka, %(2)s minutunaka, %(3)s segundonaka phaltkis uka" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "%(1)s minutunaka, %(2)s segundonaka phaltkis uka" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "%(1)s uranaka phaltkis uka" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr " %(1)s minutunaka phaltkis uka" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr " %(1)s segundonaka phaltkis uka" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "%(1)s uranaka" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "%(1)s minutonaka" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "%(1)s segundonaka" #: constants.py:136 msgid "Remove" msgstr "Apaqaña" #: constants.py:137 msgid "Stopped recording" msgstr "Imawi sayt'ayaña" #: constants.py:138 msgid "Copy to clipboard" msgstr "Wayaqar qillqaqaña" #: constants.py:139 msgid "Timer:" msgstr "Pacha mirt'añ uka:" #: constants.py:140 msgid "Duration:" msgstr "Qawqha pacha:" #: constants.py:141 msgid "Immediate" msgstr "Añchhichhitpacha" #: constants.py:142 msgid "Play" msgstr "Warariyaña" #: constants.py:143 msgid "Pause" msgstr "Suyt'ayaña" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "USB" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format #, fuzzy msgid "%(1)s photos" msgstr "%(1)s uranaka" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/ug.po0000644000000000000000000001140411417267661015636 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-08-19 17:10-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.1.1rc4\n" #: activity/activity.info:2 constants.py:112 msgid "Record" msgstr "" #: constants.py:113 msgid "Photo" msgstr "" #: constants.py:114 msgid "Video" msgstr "" #: constants.py:115 msgid "Audio" msgstr "" #: constants.py:116 msgid "Time Lapse" msgstr "" #: constants.py:117 msgid "Animation" msgstr "" #: constants.py:118 msgid "Panorama" msgstr "" #: constants.py:119 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:121 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:122 msgid "Title:" msgstr "" #: constants.py:123 msgid "Recorder:" msgstr "" #: constants.py:124 msgid "Date:" msgstr "" #: constants.py:125 msgid "Tags:" msgstr "" #: constants.py:126 msgid "Saving" msgstr "" #: constants.py:127 msgid "Finished recording" msgstr "" #: constants.py:128 #, python-format msgid "%(1)s hours, %(2)s minutes, %(3)s seconds remaining" msgstr "" #: constants.py:129 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:130 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:131 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:132 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:133 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:134 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:135 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:136 msgid "Remove" msgstr "" #: constants.py:137 msgid "Stopped recording" msgstr "" #: constants.py:138 msgid "Copy to clipboard" msgstr "" #: constants.py:139 msgid "Timer:" msgstr "" #: constants.py:140 msgid "Duration:" msgstr "" #: constants.py:141 msgid "Immediate" msgstr "" #: constants.py:142 msgid "Play" msgstr "" #: constants.py:143 msgid "Pause" msgstr "" #: constants.py:144 msgid "Add frame" msgstr "" #: constants.py:145 msgid "Remove frame" msgstr "" #: constants.py:146 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:147 msgid "Quality" msgstr "" #: constants.py:148 msgid "Default" msgstr "" #: constants.py:149 msgid "Best" msgstr "" #: constants.py:150 msgid "High" msgstr "" #: constants.py:151 msgid "Low" msgstr "" #: constants.py:152 msgid "Large file" msgstr "" #: constants.py:153 msgid "Small file" msgstr "" #: constants.py:154 msgid "Silent" msgstr "" #: constants.py:155 msgid "Rotate" msgstr "" #: constants.py:156 msgid "Width" msgstr "" #: constants.py:157 msgid "Height" msgstr "" #: constants.py:158 msgid "Click to take picture" msgstr "" #: constants.py:159 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:161 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:163 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:165 #, python-format msgid "Save %(1)s to:" msgstr "" #: constants.py:166 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:167 msgid "Journal" msgstr "" #: constants.py:168 msgid "USB" msgstr "" #: constants.py:169 msgid "SD Card" msgstr "" #: constants.py:170 msgid "Preferences" msgstr "" #: constants.py:171 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:173 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:174 msgid "Bitrate" msgstr "" #: constants.py:175 msgid "Maximum Bitrate" msgstr "" #: constants.py:176 msgid "Minumum Bitrate" msgstr "" #: constants.py:177 msgid "Manage Bitrate" msgstr "" #: constants.py:178 msgid "Border" msgstr "" #: constants.py:179 msgid "Center" msgstr "" #: constants.py:180 msgid "Frames" msgstr "" #: constants.py:181 msgid "Automatic keyframe detection" msgstr "" #: constants.py:182 msgid "Force keyframe" msgstr "" #: constants.py:183 msgid "Keyframe frequency" msgstr "" #: constants.py:184 msgid "Keyframe minimum distance" msgstr "" #: constants.py:185 msgid "Keyframe threshold" msgstr "" #: constants.py:186 msgid "Noise Sensitivity" msgstr "" #: constants.py:187 msgid "Quick" msgstr "" #: constants.py:188 msgid "Sharpness" msgstr "" #: constants.py:189 msgid "Capacity" msgstr "" sugar-record-activity-82/po/yo.po0000644000000000000000000001141111417267661015650 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/po/am.po0000644000000000000000000001141011417267661015615 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-20 09:20-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Translate Toolkit 1.0.1\n" #: activity/activity.info:2 constants.py:90 msgid "Record" msgstr "" #: constants.py:91 msgid "Photo" msgstr "" #: constants.py:92 msgid "Video" msgstr "" #: constants.py:93 msgid "Audio" msgstr "" #: constants.py:94 msgid "Time Lapse" msgstr "" #: constants.py:95 msgid "Animation" msgstr "" #: constants.py:96 msgid "Panorama" msgstr "" #: constants.py:97 msgid "Interview" msgstr "" #. TRANS: photo by photographer, e.g., "Photo by Mary" #: constants.py:99 #, python-format msgid "%(1)s by %(2)s" msgstr "" #: constants.py:100 msgid "Title:" msgstr "" #: constants.py:101 msgid "Recorder:" msgstr "" #: constants.py:102 msgid "Date:" msgstr "" #: constants.py:103 msgid "Tags:" msgstr "" #: constants.py:104 msgid "Saving" msgstr "" #: constants.py:105 msgid "Finished recording" msgstr "" #: constants.py:106 #, python-format msgid "%(1)s hours, %(2)s minutes, %(1)s seconds remaining" msgstr "" #: constants.py:107 #, python-format msgid "%(1)s minutes, %(2)s seconds remaining" msgstr "" #: constants.py:108 #, python-format msgid "%(1)s hours remaining" msgstr "" #: constants.py:109 #, python-format msgid "%(1)s minutes remaining" msgstr "" #: constants.py:110 #, python-format msgid "%(1)s seconds remaining" msgstr "" #: constants.py:111 #, python-format msgid "%(1)s hours" msgstr "" #: constants.py:112 constants.py:121 #, python-format msgid "%(1)s minutes" msgstr "" #: constants.py:113 constants.py:120 #, python-format msgid "%(1)s seconds" msgstr "" #: constants.py:114 msgid "Remove" msgstr "" #: constants.py:115 msgid "Stopped recording" msgstr "" #: constants.py:116 msgid "Copy to clipboard" msgstr "" #: constants.py:117 msgid "Timer:" msgstr "" #: constants.py:118 msgid "Duration:" msgstr "" #: constants.py:119 msgid "Immediate" msgstr "" #: constants.py:122 msgid "Play" msgstr "" #: constants.py:123 msgid "Pause" msgstr "" #: constants.py:124 msgid "Add frame" msgstr "" #: constants.py:125 msgid "Remove frame" msgstr "" #: constants.py:126 #, python-format msgid "%(1)s frames per second" msgstr "" #: constants.py:127 msgid "Quality" msgstr "" #: constants.py:128 msgid "Default" msgstr "" #: constants.py:129 msgid "Best" msgstr "" #: constants.py:130 msgid "High" msgstr "" #: constants.py:131 msgid "Low" msgstr "" #: constants.py:132 msgid "Large file" msgstr "" #: constants.py:133 msgid "Small file" msgstr "" #: constants.py:134 msgid "Silent" msgstr "" #: constants.py:135 msgid "Rotate" msgstr "" #: constants.py:136 msgid "Width" msgstr "" #: constants.py:137 msgid "Height" msgstr "" #: constants.py:138 msgid "Click to take picture" msgstr "" #: constants.py:139 msgid "Click to add picture" msgstr "" #. TRANS: Downloading Photo from Mary #: constants.py:141 #, python-format msgid "Downloading %(1)s from %(2)s" msgstr "" #. TRANS: Cannot download this Photo #: constants.py:143 #, python-format msgid "Cannot download this %(1)s" msgstr "" #. TRANS: Save Photo to: #: constants.py:145 msgid "Save %(1) to:" msgstr "" #: constants.py:146 #, python-format msgid "Your %(1)s is full" msgstr "" #: constants.py:147 msgid "Journal" msgstr "" #: constants.py:148 msgid "USB" msgstr "" #: constants.py:149 msgid "SD Card" msgstr "" #: constants.py:150 msgid "Preferences" msgstr "" #: constants.py:151 msgid "Free space:" msgstr "" #. TRANS: 7 photos #: constants.py:153 #, python-format msgid "%(1)s photos" msgstr "" #: constants.py:154 msgid "Bitrate" msgstr "" #: constants.py:155 msgid "Maximum Bitrate" msgstr "" #: constants.py:156 msgid "Minumum Bitrate" msgstr "" #: constants.py:157 msgid "Manage Bitrate" msgstr "" #: constants.py:158 msgid "Border" msgstr "" #: constants.py:159 msgid "Center" msgstr "" #: constants.py:160 msgid "Frames" msgstr "" #: constants.py:161 msgid "Automatic keyframe detection" msgstr "" #: constants.py:162 msgid "Force keyframe" msgstr "" #: constants.py:163 msgid "Keyframe frequency" msgstr "" #: constants.py:164 msgid "Keyframe minimum distance" msgstr "" #: constants.py:165 msgid "Keyframe threshold" msgstr "" #: constants.py:166 msgid "Noise Sensitivity" msgstr "" #: constants.py:167 msgid "Quick" msgstr "" #: constants.py:168 msgid "Sharpness" msgstr "" #: constants.py:169 msgid "Capacity" msgstr "" sugar-record-activity-82/glive.py0000644000000000000000000006325411417267661015737 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import os import gtk import pygtk pygtk.require('2.0') import sys import gst import gst.interfaces import pygst pygst.require('0.10') import time import threading import gobject gobject.threads_init() from sugar.activity.activity import get_bundle_path import logging from instance import Instance from constants import Constants import record import utils import ui logger = logging.getLogger('record:glive.py') OGG_TRAITS = { 0: { 'width': 160, 'height': 120, 'quality': 16 }, 1: { 'width': 400, 'height': 300, 'quality': 16 } } THUMB_STUB = gtk.gdk.pixbuf_new_from_file( os.path.join(get_bundle_path(), 'gfx', 'stub.png')) def _does_camera_present(): v4l2src = gst.element_factory_make('v4l2src') if v4l2src.props.device_name is None: return False, False # Figure out if we can place a framerate limit on the v4l2 element, which # in theory will make it all the way down to the hardware. # ideally, we should be able to do this by checking caps. However, I can't # find a way to do this (at this time, XO-1 cafe camera driver doesn't # support framerate changes, but gstreamer caps suggest otherwise) pipeline = gst.Pipeline() caps = gst.Caps("video/x-raw-yuv,framerate=10/1") fsink = gst.element_factory_make("fakesink") pipeline.add(v4l2src, fsink) v4l2src.link(fsink, caps) can_limit_framerate = pipeline.set_state(gst.STATE_PAUSED) != gst.STATE_CHANGE_FAILURE pipeline.set_state(gst.STATE_NULL) return True, can_limit_framerate camera_presents, can_limit_framerate = _does_camera_present() class Glive: def __init__(self, pca): self.window = None self.ca = pca self._eos_cb = None self.playing = False self.picExposureOpen = False self.AUDIO_TRANSCODE_ID = 0 self.TRANSCODE_ID = 0 self.VIDEO_TRANSCODE_ID = 0 self.PHOTO_MODE_PHOTO = 0 self.PHOTO_MODE_AUDIO = 1 self.TRANSCODE_UPDATE_INTERVAL = 200 self.VIDEO_WIDTH_SMALL = 160 self.VIDEO_HEIGHT_SMALL = 120 self.VIDEO_FRAMERATE_SMALL = 10 self.VIDEO_WIDTH_LARGE = 200 self.VIDEO_HEIGHT_LARGE = 150 self.VIDEO_FRAMERATE_SMALL = 10 self.pipeline = gst.Pipeline("my-pipeline") self.createPhotoBin() self.createAudioBin() self.createVideoBin() self.createPipeline() self.thumbPipes = [] self.muxPipes = [] bus = self.pipeline.get_bus() bus.enable_sync_message_emission() bus.add_signal_watch() self.SYNC_ID = bus.connect('sync-message::element', self._onSyncMessageCb) self.MESSAGE_ID = bus.connect('message', self._onMessageCb) def createPhotoBin ( self ): queue = gst.element_factory_make("queue", "pbqueue") queue.set_property("leaky", True) queue.set_property("max-size-buffers", 1) colorspace = gst.element_factory_make("ffmpegcolorspace", "pbcolorspace") jpeg = gst.element_factory_make("jpegenc", "pbjpeg") sink = gst.element_factory_make("fakesink", "pbsink") self.HANDOFF_ID = sink.connect("handoff", self.copyPic) sink.set_property("signal-handoffs", True) self.photobin = gst.Bin("photobin") self.photobin.add(queue, colorspace, jpeg, sink) gst.element_link_many(queue, colorspace, jpeg, sink) pad = queue.get_static_pad("sink") self.photobin.add_pad(gst.GhostPad("sink", pad)) def createAudioBin ( self ): src = gst.element_factory_make("alsasrc", "absrc") # attempt to use direct access to the 0,0 device, solving some A/V # sync issues src.set_property("device", "plughw:0,0") hwdev_available = src.set_state(gst.STATE_PAUSED) != gst.STATE_CHANGE_FAILURE src.set_state(gst.STATE_NULL) if not hwdev_available: src.set_property("device", "default") srccaps = gst.Caps("audio/x-raw-int,rate=16000,channels=1,depth=16") # guarantee perfect stream, important for A/V sync rate = gst.element_factory_make("audiorate") # without a buffer here, gstreamer struggles at the start of the # recording and then the A/V sync is bad for the whole video # (possibly a gstreamer/ALSA bug -- even if it gets caught up, it # should be able to resync without problem) queue = gst.element_factory_make("queue", "audioqueue") queue.set_property("leaky", True) # prefer fresh data queue.set_property("max-size-time", 5000000000) # 5 seconds queue.set_property("max-size-buffers", 500) queue.connect("overrun", self.log_queue_overrun) enc = gst.element_factory_make("wavenc", "abenc") sink = gst.element_factory_make("filesink", "absink") sink.set_property("location", os.path.join(Instance.instancePath, "output.wav")) self.audiobin = gst.Bin("audiobin") self.audiobin.add(src, rate, queue, enc, sink) src.link(rate, srccaps) gst.element_link_many(rate, queue, enc, sink) def createVideoBin ( self ): queue = gst.element_factory_make("queue", "videoqueue") queue.set_property("max-size-time", 5000000000) # 5 seconds queue.set_property("max-size-bytes", 33554432) # 32mb queue.connect("overrun", self.log_queue_overrun) scale = gst.element_factory_make("videoscale", "vbscale") scalecapsfilter = gst.element_factory_make("capsfilter", "scalecaps") scalecaps = gst.Caps('video/x-raw-yuv,width='+str(self.VIDEO_WIDTH_SMALL)+',height='+str(self.VIDEO_HEIGHT_SMALL)) scalecapsfilter.set_property("caps", scalecaps) colorspace = gst.element_factory_make("ffmpegcolorspace", "vbcolorspace") enc = gst.element_factory_make("theoraenc", "vbenc") enc.set_property("quality", 16) mux = gst.element_factory_make("oggmux", "vbmux") sink = gst.element_factory_make("filesink", "vbfile") sink.set_property("location", os.path.join(Instance.instancePath, "output.ogg")) self.videobin = gst.Bin("videobin") self.videobin.add(queue, scale, scalecapsfilter, colorspace, enc, mux, sink) queue.link(scale) scale.link_pads(None, scalecapsfilter, "sink") scalecapsfilter.link_pads("src", colorspace, None) gst.element_link_many(colorspace, enc, mux, sink) pad = queue.get_static_pad("sink") self.videobin.add_pad(gst.GhostPad("sink", pad)) def cfgVideoBin (self, quality, width, height): vbenc = self.videobin.get_by_name("vbenc") vbenc.set_property("quality", 16) scaps = self.videobin.get_by_name("scalecaps") scaps.set_property("caps", gst.Caps("video/x-raw-yuv,width=%d,height=%d" % (width, height))) def createPipeline ( self ): src = gst.element_factory_make("v4l2src", "camsrc") try: # old gst-plugins-good does not have this property src.set_property("queue-size", 2) except: pass # if possible, it is important to place the framerate limit directly # on the v4l2src so that it gets communicated all the way down to the # camera level if can_limit_framerate: srccaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1') else: srccaps = gst.Caps('video/x-raw-yuv') # we attempt to limit the framerate on the v4l2src directly, but we # can't trust this: perhaps we are falling behind in our capture, # or maybe the kernel driver doesn't provide the exact framerate. # the videorate element guarantees a perfect framerate and is important # for A/V sync because OGG does not store timestamps, it just stores # the FPS value. rate = gst.element_factory_make("videorate") ratecaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1') tee = gst.element_factory_make("tee", "tee") queue = gst.element_factory_make("queue", "dispqueue") # prefer fresh frames queue.set_property("leaky", True) queue.set_property("max-size-buffers", 2) self.pipeline.add(src, rate, tee, queue) src.link(rate, srccaps) rate.link(tee, ratecaps) tee.link(queue) xvsink = gst.element_factory_make("xvimagesink", "xvsink") xv_available = xvsink.set_state(gst.STATE_PAUSED) != gst.STATE_CHANGE_FAILURE xvsink.set_state(gst.STATE_NULL) if xv_available: # http://thread.gmane.org/gmane.comp.video.gstreamer.devel/29644 xvsink.set_property("sync", False) self.pipeline.add(xvsink) queue.link(xvsink) else: cspace = gst.element_factory_make("ffmpegcolorspace") xsink = gst.element_factory_make("ximagesink") # http://thread.gmane.org/gmane.comp.video.gstreamer.devel/29644 xsink.set_property("sync", False) self.pipeline.add(cspace, xsink) gst.element_link_many(queue, cspace, xsink) def log_queue_overrun(self, queue): cbuffers = queue.get_property("current-level-buffers") cbytes = queue.get_property("current-level-bytes") ctime = queue.get_property("current-level-time") logger.error("Buffer overrun in %s (%d buffers, %d bytes, %d time)" % (queue.get_name(), cbuffers, cbytes, ctime)) def thumbPipe(self): return self.thumbPipes[ len(self.thumbPipes)-1 ] def thumbEl(self, name): return self.thumbPipe().get_by_name(name) def muxPipe(self): return self.muxPipes[ len(self.muxPipes)-1 ] def muxEl(self, name): return self.muxPipe().get_by_name(name) def play(self): if not camera_presents: return self.pipeline.set_state(gst.STATE_PLAYING) self.playing = True def pause(self): self.pipeline.set_state(gst.STATE_PAUSED) self.playing = False def stop(self): self.pipeline.set_state(gst.STATE_NULL) self.playing = False def is_playing(self): return self.playing def idlePlayElement(self, element): element.set_state(gst.STATE_PLAYING) return False def stopRecordingAudio( self ): self.audiobin.set_state(gst.STATE_NULL) self.pipeline.remove(self.audiobin) gobject.idle_add( self.stoppedRecordingAudio ) def stoppedRecordingVideo(self): if ( len(self.thumbPipes) > 0 ): thumbline = self.thumbPipes[len(self.thumbPipes)-1] thumbline.get_by_name('thumbFakesink').disconnect(self.THUMB_HANDOFF_ID) oggFilepath = os.path.join(Instance.instancePath, "output.ogg") #ogv if (not os.path.exists(oggFilepath)): self.record = False self.ca.m.cannotSaveVideo() self.ca.m.stoppedRecordingVideo() return oggSize = os.path.getsize(oggFilepath) if (oggSize <= 0): self.record = False self.ca.m.cannotSaveVideo() self.ca.m.stoppedRecordingVideo() return line = 'filesrc location=' + str(oggFilepath) + ' name=thumbFilesrc ! oggdemux name=thumbOggdemux ! theoradec name=thumbTheoradec ! tee name=thumbTee ! queue name=thumbQueue ! ffmpegcolorspace name=thumbFfmpegcolorspace ! jpegenc name=thumbJPegenc ! fakesink name=thumbFakesink' thumbline = gst.parse_launch(line) thumbQueue = thumbline.get_by_name('thumbQueue') thumbQueue.set_property("leaky", True) thumbQueue.set_property("max-size-buffers", 1) thumbTee = thumbline.get_by_name('thumbTee') thumbFakesink = thumbline.get_by_name('thumbFakesink') self.THUMB_HANDOFF_ID = thumbFakesink.connect("handoff", self.copyThumbPic) thumbFakesink.set_property("signal-handoffs", True) self.thumbPipes.append(thumbline) self.thumbExposureOpen = True gobject.idle_add( self.idlePlayElement, thumbline ) def stoppedRecordingAudio( self ): record.Record.log.debug("stoppedRecordingAudio") if (self.audioPixbuf != None): audioFilepath = os.path.join(Instance.instancePath, "output.wav")#self.el("audioFilesink").get_property("location") if (not os.path.exists(audioFilepath)): self.record = False self.ca.m.cannotSaveVideo() return wavSize = os.path.getsize(audioFilepath) if (wavSize <= 0): self.record = False self.ca.m.cannotSaveVideo() return self.ca.ui.setPostProcessPixBuf(self.audioPixbuf) line = 'filesrc location=' + str(audioFilepath) + ' name=audioFilesrc ! wavparse name=audioWavparse ! audioconvert name=audioAudioconvert ! vorbisenc name=audioVorbisenc ! oggmux name=audioOggmux ! filesink name=audioFilesink' audioline = gst.parse_launch(line) taglist = self.getTags(Constants.TYPE_AUDIO) base64AudioSnapshot = utils.getStringFromPixbuf(self.audioPixbuf) taglist[gst.TAG_EXTENDED_COMMENT] = "coverart="+str(base64AudioSnapshot) vorbisEnc = audioline.get_by_name('audioVorbisenc') vorbisEnc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL) audioFilesink = audioline.get_by_name('audioFilesink') audioOggFilepath = os.path.join(Instance.instancePath, "output.ogg") audioFilesink.set_property("location", audioOggFilepath ) audioBus = audioline.get_bus() audioBus.add_signal_watch() self.AUDIO_TRANSCODE_ID = audioBus.connect('message', self._onMuxedAudioMessageCb, audioline) self.TRANSCODE_ID = gobject.timeout_add(self.TRANSCODE_UPDATE_INTERVAL, self._transcodeUpdateCb, audioline) gobject.idle_add( self.idlePlayElement, audioline ) else: self.record = False self.ca.m.cannotSaveVideo() def getTags( self, type ): tl = gst.TagList() tl[gst.TAG_ARTIST] = str(Instance.nickName) tl[gst.TAG_COMMENT] = "olpc" #this is unfortunately, unreliable #record.Record.log.debug("self.ca.metadata['title']->" + str(self.ca.metadata['title']) ) tl[gst.TAG_ALBUM] = "olpc" #self.ca.metadata['title'] tl[gst.TAG_DATE] = utils.getDateString(int(time.time())) stringType = Constants.mediaTypes[type][Constants.keyIstr] tl[gst.TAG_TITLE] = Constants.istrBy % {"1":stringType, "2":str(Instance.nickName)} return tl def blockedCb(self, x, y, z): pass def _takePhoto(self): if self.picExposureOpen: return self.picExposureOpen = True pad = self.photobin.get_static_pad("sink") pad.set_blocked_async(True, self.blockedCb, None) self.pipeline.add(self.photobin) self.photobin.set_state(gst.STATE_PLAYING) self.pipeline.get_by_name("tee").link(self.photobin) pad.set_blocked_async(False, self.blockedCb, None) def takePhoto(self): if not camera_presents: return self.photoMode = self.PHOTO_MODE_PHOTO self._takePhoto() def copyPic(self, fsink, buffer, pad, user_data=None): if not self.picExposureOpen: return pad = self.photobin.get_static_pad("sink") pad.set_blocked_async(True, self.blockedCb, None) self.pipeline.get_by_name("tee").unlink(self.photobin) self.pipeline.remove(self.photobin) pad.set_blocked_async(False, self.blockedCb, None) self.picExposureOpen = False pic = gtk.gdk.pixbuf_loader_new_with_mime_type("image/jpeg") pic.write( buffer ) pic.close() pixBuf = pic.get_pixbuf() del pic self.savePhoto( pixBuf ) def savePhoto(self, pixbuf): if self.photoMode == self.PHOTO_MODE_AUDIO: self.audioPixbuf = pixbuf else: self.ca.m.savePhoto(pixbuf) def startRecordingVideo(self, quality): if not camera_presents: return self.record = True self.ogg_quality = quality self.cfgVideoBin (OGG_TRAITS[quality]['quality'], OGG_TRAITS[quality]['width'], OGG_TRAITS[quality]['height']) # If we use pad blocking and adjust the pipeline on-the-fly, the # resultant video has bad A/V sync :( # If we pause the pipeline while adjusting it, the A/V sync is better # but not perfect :( # so we stop the whole thing while reconfiguring to get the best results self.pipeline.set_state(gst.STATE_NULL) self.pipeline.add(self.videobin) self.pipeline.get_by_name("tee").link(self.videobin) self.pipeline.add(self.audiobin) self.pipeline.set_state(gst.STATE_PLAYING) def startRecordingAudio(self): self.audioPixbuf = None self.photoMode = self.PHOTO_MODE_AUDIO self._takePhoto() self.record = True # we should be able to add the audiobin on the fly, but unfortunately # this results in several seconds of silence being added at the start # of the recording. So we stop the whole pipeline while adjusting it. # SL#2040 self.pipeline.set_state(gst.STATE_NULL) self.pipeline.add(self.audiobin) self.pipeline.set_state(gst.STATE_PLAYING) def stopRecordingVideo(self): if not camera_presents: return # We stop the pipeline while we are adjusting the pipeline to stop # recording because if we do it on-the-fly, the following video live # feed to the screen becomes several seconds delayed. Weird! # FIXME: retest on F11 self._eos_cb = self.stopRecordingVideoEOS self.pipeline.get_by_name('camsrc').send_event(gst.event_new_eos()) self.audiobin.get_by_name('absrc').send_event(gst.event_new_eos()) def stopRecordingVideoEOS(self): self.pipeline.set_state(gst.STATE_NULL) self.pipeline.get_by_name("tee").unlink(self.videobin) self.pipeline.remove(self.videobin) self.pipeline.remove(self.audiobin) self.pipeline.set_state(gst.STATE_PLAYING) gobject.idle_add( self.stoppedRecordingVideo ) def copyThumbPic(self, fsink, buffer, pad, user_data=None): if not self.thumbExposureOpen: return self.thumbExposureOpen = False pic = gtk.gdk.pixbuf_loader_new_with_mime_type("image/jpeg") pic.write(buffer) pic.close() self.thumbBuf = pic.get_pixbuf() del pic self.thumbEl('thumbTee').unlink(self.thumbEl('thumbQueue')) oggFilepath = os.path.join(Instance.instancePath, "output.ogg") #ogv self.ca.ui.setPostProcessPixBuf(self.thumbBuf) wavFilepath = os.path.join(Instance.instancePath, "output.wav") muxFilepath = os.path.join(Instance.instancePath, "mux.ogg") #ogv muxline = gst.parse_launch('filesrc location=' + str(oggFilepath) + ' name=muxVideoFilesrc ! oggdemux name=muxOggdemux ! theoraparse ! oggmux name=muxOggmux ! filesink location=' + str(muxFilepath) + ' name=muxFilesink filesrc location=' + str(wavFilepath) + ' name=muxAudioFilesrc ! wavparse name=muxWavparse ! audioconvert name=muxAudioconvert ! vorbisenc name=muxVorbisenc ! muxOggmux.') taglist = self.getTags(Constants.TYPE_VIDEO) vorbisEnc = muxline.get_by_name('muxVorbisenc') vorbisEnc.merge_tags(taglist, gst.TAG_MERGE_REPLACE_ALL) muxBus = muxline.get_bus() muxBus.add_signal_watch() self.VIDEO_TRANSCODE_ID = muxBus.connect('message', self._onMuxedVideoMessageCb, muxline) self.muxPipes.append(muxline) #add a listener here to monitor % of transcoding... self.TRANSCODE_ID = gobject.timeout_add(self.TRANSCODE_UPDATE_INTERVAL, self._transcodeUpdateCb, muxline) muxline.set_state(gst.STATE_PLAYING) def _transcodeUpdateCb( self, pipe ): position, duration = self.queryPosition( pipe ) if position != gst.CLOCK_TIME_NONE: value = position * 100.0 / duration value = value/100.0 self.ca.ui.progressWindow.updateProgress(value, Constants.istrSaving) return True def queryPosition( self, pipe ): try: position, format = pipe.query_position(gst.FORMAT_TIME) except: position = gst.CLOCK_TIME_NONE try: duration, format = pipe.query_duration(gst.FORMAT_TIME) except: duration = gst.CLOCK_TIME_NONE return (position, duration) def _onMuxedVideoMessageCb(self, bus, message, pipe): t = message.type if (t == gst.MESSAGE_EOS): self.record = False gobject.source_remove(self.VIDEO_TRANSCODE_ID) self.VIDEO_TRANSCODE_ID = 0 gobject.source_remove(self.TRANSCODE_ID) self.TRANSCODE_ID = 0 pipe.set_state(gst.STATE_NULL) pipe.get_bus().remove_signal_watch() pipe.get_bus().disable_sync_message_emission() wavFilepath = os.path.join(Instance.instancePath, "output.wav") oggFilepath = os.path.join(Instance.instancePath, "output.ogg") #ogv muxFilepath = os.path.join(Instance.instancePath, "mux.ogg") #ogv os.remove( wavFilepath ) os.remove( oggFilepath ) ogg_w = OGG_TRAITS[self.ogg_quality]['width'] ogg_h = OGG_TRAITS[self.ogg_quality]['height'] self.ca.m.saveVideo(self.thumbBuf, str(muxFilepath), ogg_w, ogg_h) self.ca.m.stoppedRecordingVideo() return False else: return True def _onMuxedAudioMessageCb(self, bus, message, pipe): t = message.type if (t == gst.MESSAGE_EOS): record.Record.log.debug("audio gst.MESSAGE_EOS") self.record = False gobject.source_remove(self.AUDIO_TRANSCODE_ID) self.AUDIO_TRANSCODE_ID = 0 gobject.source_remove(self.TRANSCODE_ID) self.TRANSCODE_ID = 0 pipe.set_state(gst.STATE_NULL) pipe.get_bus().remove_signal_watch() pipe.get_bus().disable_sync_message_emission() wavFilepath = os.path.join(Instance.instancePath, "output.wav") oggFilepath = os.path.join(Instance.instancePath, "output.ogg") os.remove( wavFilepath ) self.ca.m.saveAudio(oggFilepath, self.audioPixbuf) return False else: return True def _onSyncMessageCb(self, bus, message): if message.structure is None: return if message.structure.get_name() == 'prepare-xwindow-id': self.window.set_sink(message.src) message.src.set_property('force-aspect-ratio', True) def _onMessageCb(self, bus, message): t = message.type if t == gst.MESSAGE_EOS: if self._eos_cb: cb = self._eos_cb self._eos_cb = None cb() elif t == gst.MESSAGE_ERROR: #todo: if we come out of suspend/resume with errors, then get us back up and running... #todo: handle "No space left on the resource.gstfilesink.c" #err, debug = message.parse_error() pass def abandonMedia(self): self.stop() if (self.AUDIO_TRANSCODE_ID != 0): gobject.source_remove(self.AUDIO_TRANSCODE_ID) self.AUDIO_TRANSCODE_ID = 0 if (self.TRANSCODE_ID != 0): gobject.source_remove(self.TRANSCODE_ID) self.TRANSCODE_ID = 0 if (self.VIDEO_TRANSCODE_ID != 0): gobject.source_remove(self.VIDEO_TRANSCODE_ID) self.VIDEO_TRANSCODE_ID = 0 wavFilepath = os.path.join(Instance.instancePath, "output.wav") if (os.path.exists(wavFilepath)): os.remove(wavFilepath) oggFilepath = os.path.join(Instance.instancePath, "output.ogg") #ogv if (os.path.exists(oggFilepath)): os.remove(oggFilepath) muxFilepath = os.path.join(Instance.instancePath, "mux.ogg") #ogv if (os.path.exists(muxFilepath)): os.remove(muxFilepath) class LiveVideoWindow(gtk.Window): def __init__(self, bgd ): gtk.Window.__init__(self) self.imagesink = None self.glive = None self.modify_bg( gtk.STATE_NORMAL, bgd ) self.modify_bg( gtk.STATE_INSENSITIVE, bgd ) self.unset_flags(gtk.DOUBLE_BUFFERED) self.set_flags(gtk.APP_PAINTABLE) def set_glive(self, pglive): self.glive = pglive self.glive.window = self def set_sink(self, sink): if (self.imagesink != None): assert self.window.xid self.imagesink = None del self.imagesink self.imagesink = sink self.imagesink.set_xwindow_id(self.window.xid) sugar-record-activity-82/recordtube.py0000644000000000000000000001340511417267661016760 0ustar rootrootimport gobject from dbus import Interface from dbus.service import method, signal from dbus.gobject_service import ExportedGObject import os from constants import Constants from instance import Instance import record class RecordTube(ExportedGObject): __gsignals__ = { 'recd-bits-arrived': (gobject.SIGNAL_RUN_FIRST, None, [object,object,object,object,object]), 'recd-request': (gobject.SIGNAL_RUN_FIRST, None, [object,object]), 'new-recd': (gobject.SIGNAL_RUN_FIRST, None, [object,object]), 'recd-unavailable': (gobject.SIGNAL_RUN_FIRST, None, [object,object]) } def __init__(self, tube): super(RecordTube, self).__init__(tube, Constants.PATH) self.tube = tube self.idNotify = self.tube.add_signal_receiver(self._newRecdTubeCb, 'notifyBudsOfNewRecd', Constants.IFACE, path=Constants.PATH, sender_keyword='sender') self.idRequest = self.tube.add_signal_receiver(self._reqRecdTubeCb, 'requestRecdBits', Constants.IFACE, path=Constants.PATH, sender_keyword='sender') self.idBroadcast = self.tube.add_signal_receiver(self._getRecdTubeCb, 'broadcastRecdBits', Constants.IFACE, path=Constants.PATH, sender_keyword='sender', byte_arrays=True) self.idUnavailable = self.tube.add_signal_receiver(self._unavailableRecdTubeCb, 'unavailableRecd', Constants.IFACE, path=Constants.PATH, sender_keyword='sender') @signal(dbus_interface=Constants.IFACE, signature='ss') #dual s for 2x strings def notifyBudsOfNewRecd(self, recorder, recdXml): record.Record.log.debug('Ive taken a new pho-ideo-audio! I hereby send you an xml thumb of said media via this interface.') def _newRecdTubeCb(self, recorder, recdXml, sender=None): record.Record.log.debug("_newRecdTubeCb from " + recorder ) if sender == self.tube.get_unique_name(): record.Record.log.debug("_newRecdTubeCb: sender is my bus name, so ignore my own signal") return elif (recorder == Instance.keyHashPrintable): record.Record.log.debug('_newRecdTubeCb: excuse me? you are asking me to share a photo with myself?') return self.emit( "new-recd", str(recorder), str(recdXml) ) @signal(dbus_interface=Constants.IFACE, signature='sss') #triple s for 3x strings def requestRecdBits(self, whoWantsIt, whoTheyWantItFrom, recdMd5sumOfIt ): record.Record.log.debug('I am requesting a high-res version of someones media.') def _reqRecdTubeCb(self, whoWantsIt, whoTheyWantItFrom, recdMd5sumOfIt, sender=None): if sender == self.tube.get_unique_name(): record.Record.log.debug("_reqRecdTubeCb: sender is my bus name, so ignore my own signal") return elif (whoWantsIt == Instance.keyHashPrintable): record.Record.log.debug('_reqRecdTubeCb: excuse me? you are asking me to share a photo with myself?') return elif (whoTheyWantItFrom != Instance.keyHashPrintable): record.Record.log.debug('_reqRecdTubeCb: ive overhead someone wants a photo, but not from me') return self.emit( "recd-request", str(whoWantsIt), str(recdMd5sumOfIt) ) def broadcastRecd(self, md5, filepath, sendThisTo ): size = os.path.getsize(filepath) f = open(filepath) chunk_size = 1000 chunks = size / chunk_size if (size%chunk_size != 0): chunks += 1 for chunk in range(chunks): bytes = f.read(chunk_size) if (chunk == 0): record.Record.log.debug("sending " + str(chunk+1) + " of " + str(chunks) + " to " + sendThisTo ) if (chunk == chunks-1): record.Record.log.debug("sending " + str(chunk+1) + " of " + str(chunks) + " to " + sendThisTo ) self.broadcastRecdBits(md5, chunk+1, chunks, bytes, sendThisTo, Instance.keyHashPrintable) f.close() return True @signal(dbus_interface=Constants.IFACE, signature='suuayss') def broadcastRecdBits(self, md5, part, numparts, bytes, sendTo, fromWho ): pass def _getRecdTubeCb(self, md5, part, numparts, bytes, sentTo, fromWho, sender=None): if sender == self.tube.get_unique_name(): #record.Record.log.debug("_reqRecdTubeCb: sender is my bus name, so ignore my own signal") return if (fromWho == Instance.keyHashPrintable): #record.Record.log.debug('_getRecdTubeCb: i dont want bits from meself, thx anyway. schizophrenic?') return if (sentTo != Instance.keyHashPrintable): #record.Record.log.debug('_getRecdTubeCb: ive overhead someone sending bits, but not to me!') return self.emit( "recd-bits-arrived", md5, part, numparts, bytes, fromWho ) @signal(dbus_interface=Constants.IFACE, signature='sss') #triple s for 3x strings def unavailableRecd(self, md5sumOfIt, whoDoesntHaveIt, whoAskedForIt): record.Record.log.debug('unavailableRecd: id love to share this photo, but i am without a copy meself chum') def _unavailableRecdTubeCb( self, md5sumOfIt, whoDoesntHaveIt, whoAskedForIt, sender=None): if sender == self.tube.get_unique_name(): record.Record.log.debug("_unavailableRecdTubeCb: sender is my bus name, so ignore my own signal") return if (whoDoesntHaveIt == Instance.keyHashPrintable): record.Record.log.debug('_unavailableRecdTubeCb: yes, i know i dont have it, i just told you/me/us.') return if (whoAskedForIt != Instance.keyHashPrintable): record.Record.log.debug('_unavailableRecdTubeCb: ive overheard someone doesnt have a photo, but i didnt ask for that one anyways') return self.emit("recd-unavailable", md5sumOfIt, whoDoesntHaveIt)sugar-record-activity-82/COPYING0000644000000000000000000000217611417267661015306 0ustar rootrootCopyright (C) 2006, Red Hat, Inc. Copyright (C) 2007-2008, One Laptop Per Child Copyright (c) 2008, Media Modifications Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. sugar-record-activity-82/model.py0000644000000000000000000003440111417267661015721 0ustar rootroot# -*- coding: UTF-8 -*- #Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import uuid import urllib import string import fnmatch import os import random import cairo import gtk import gtk.gdk import pygtk pygtk.require('2.0') import gc import math import time import gobject import operator import logging logger = logging.getLogger('record:model.py') import sugar.env from constants import Constants from instance import Instance from recorded import Recorded from color import Color from ui import UI import utils import record import serialize class Model: def __init__( self, pca ): self.ca = pca self.MODE = Constants.MODE_PHOTO self.UPDATING = True self.RECORDING = False self.FULL = self._isXoFull() self.mediaHashs = {} for key,value in Constants.mediaTypes.items(): self.mediaHashs[key] = [] def updateXoFullStatus( self ): self.FULL = self._isXoFull() def _isXoFull( self ): full = False if (utils.getFreespaceKb() <= Constants.keepFreeKbOnXo): full = True return full def getRecdByMd5( self, md5 ): for mh in range (0, len(self.mediaHashs)): for r in range (0, len(self.mediaHashs[mh])): recd = self.mediaHashs[mh][r] if (recd.thumbMd5 == md5): return recd elif (recd.mediaMd5 == md5): return recd return None def isVideoMode( self ): return self.MODE == Constants.MODE_VIDEO def isPhotoMode( self ): return self.MODE == Constants.MODE_PHOTO def displayThumb( self, recd, forceUpdating ): #to avoid Xlib: unexpected async reply error when taking a picture on a gst callback, always call with idle_add #this happens b/c this might get called from a gstreamer callback if (not recd.type == self.MODE): return if (forceUpdating): self.setUpdating( True ) hash = self.mediaHashs[recd.type] if (len(hash) > 0): self.ca.ui.addThumb(recd, forceUpdating) if (forceUpdating): self.setUpdating( False ) def setupMode( self, type, update ): if (not type == self.MODE): return self.setUpdating( True ) self.ca.ui.removeThumbs() hash = self.mediaHashs[type] for i in range (0, len(hash)): self.ca.ui.addThumb( hash[i], True ) if (update): self.ca.ui.updateModeChange() self.setUpdating(False) def showNextThumb( self, shownRecd ): if (shownRecd == None): self.showLastThumb() else: hash = self.mediaHashs[self.MODE] if (len(hash) > 0): hash = self.mediaHashs[self.MODE] i = operator.indexOf( hash, shownRecd ) i = i+1 if (i>=len(hash)): i = 0 self.ca.ui.showThumbSelection( hash[i] ) def showPrevThumb( self, shownRecd ): if (shownRecd == None): self.showLastThumb() else: hash = self.mediaHashs[self.MODE] if (len(hash) > 0): hash = self.mediaHashs[self.MODE] i = operator.indexOf( hash, shownRecd ) i = i-1 if (i<0): i = len(hash)-1 self.ca.ui.showThumbSelection( hash[i] ) def showLastThumb( self ): hash = self.mediaHashs[self.MODE] if (len(hash) > 0): self.ca.ui.showThumbSelection( hash[len(hash)-1] ) def doShutter( self ): if (self.UPDATING): return if (self.MODE == Constants.MODE_PHOTO): self.startTakingPhoto() elif (self.MODE == Constants.MODE_VIDEO): if (not self.RECORDING): self.startRecordingVideo() else: #post-processing begins now, so queue up this gfx self.ca.ui.showPostProcessGfx(True) self.stopRecordingVideo() elif (self.MODE == Constants.MODE_AUDIO): if (not self.RECORDING): self.startRecordingAudio() else: #post-processing begins now, so queue up this gfx self.ca.ui.showPostProcessGfx(True) self.stopRecordingAudio() def stopRecordingAudio( self ): gobject.source_remove( self.ca.ui.UPDATE_DURATION_ID ) self.ca.ui.progressWindow.updateProgress( 0, "" ) self.setUpdating( True ) self.setRecording( False ) self.ca.ui.FULLSCREEN = False self.ca.ui.updateVideoComponents() self.ca.glive.stopRecordingAudio( ) def saveAudio( self, tmpPath, pixbuf ): self.setUpdating( True ) recd = self.createNewRecorded( Constants.TYPE_AUDIO ) os.rename( tmpPath, os.path.join(Instance.instancePath,recd.mediaFilename)) thumbPath = os.path.join(Instance.instancePath, recd.thumbFilename) scale = float((UI.dim_THUMB_WIDTH+0.0)/(pixbuf.get_width()+0.0)) thumbImg = utils.generateThumbnail(pixbuf, scale, UI.dim_THUMB_WIDTH, UI.dim_THUMB_HEIGHT) thumbImg.write_to_png(thumbPath) imagePath = os.path.join(Instance.instancePath, "audioPicture.png") imagePath = utils.getUniqueFilepath( imagePath, 0 ) pixbuf.save( imagePath, "png", {} ) recd.audioImageFilename = os.path.basename(imagePath) #at this point, we have both audio and thumb sapath, so we can save the recd self.createNewRecordedMd5Sums( recd ) audioHash = self.mediaHashs[Constants.TYPE_AUDIO] audioHash.append( recd ) gobject.idle_add(self.displayThumb, recd, True) self.doPostSaveVideo() self.meshShareRecd( recd ) def startRecordingVideo( self ): self.setUpdating( True ) self.setRecording( True ) #let the red eye kick in before we start the video underway gobject.idle_add( self.beginRecordingVideo ) def beginRecordingVideo( self ): self.ca.ui.recordVideo() self.setUpdating( False ) def startRecordingAudio( self ): self.setUpdating( True ) self.setRecording( True ) self.ca.ui.recordAudio() self.setUpdating( False ) def setUpdating( self, upd ): self.UPDATING = upd self.ca.ui.updateButtonSensitivities() def setRecording( self, rec ): self.RECORDING = rec self.ca.ui.updateButtonSensitivities() def stopRecordingVideo( self ): self.ca.glive.stopRecordingVideo() gobject.source_remove( self.ca.ui.UPDATE_DURATION_ID ) self.setUpdating( True ) self.setRecording( False ) self.ca.ui.FULLSCREEN = False self.ca.ui.updateVideoComponents() def saveVideo( self, pixbuf, tmpPath, wid, hit ): recd = self.createNewRecorded( Constants.TYPE_VIDEO ) os.rename( tmpPath, os.path.join(Instance.instancePath,recd.mediaFilename)) thumbPath = os.path.join(Instance.instancePath, recd.thumbFilename) scale = float((UI.dim_THUMB_WIDTH+0.0)/(wid+0.0)) thumbImg = utils.generateThumbnail(pixbuf, scale, UI.dim_THUMB_WIDTH, UI.dim_THUMB_HEIGHT) thumbImg.write_to_png(thumbPath) self.createNewRecordedMd5Sums( recd ) videoHash = self.mediaHashs[Constants.TYPE_VIDEO] videoHash.append( recd ) self.doPostSaveVideo() gobject.idle_add(self.displayThumb, recd, True) self.meshShareRecd( recd ) def meshShareRecd( self, recd ): #hey, i just took a cool video.audio.photo! let me show you! if (self.ca.recTube != None): logger.debug('meshShareRecd') recdXml = serialize.getRecdXmlMeshString(recd) self.ca.recTube.notifyBudsOfNewRecd( Instance.keyHashPrintable, recdXml ) def cannotSaveVideo( self ): self.doPostSaveVideo() def doPostSaveVideo( self ): self.ca.ui.showPostProcessGfx(False) #prep the ui for your return self.ca.ui.LAST_MODE = -1 self.ca.ui.TRANSCODING = False #resume live video from the camera (if the activity is active) if (self.ca.ui.ACTIVE): self.ca.ui.updateVideoComponents() self.ca.ui.progressWindow.updateProgress( 0, "" ) self.setRecording( False ) self.setUpdating( False ) def abandonRecording( self ): self.ca.ui.LAST_MODE = -1 self.ca.ui.TRANSCODING = False self.ca.ui.completeTimer() self.ca.ui.completeCountdown() self.setRecording(False) self.ca.ui.progressWindow.updateProgress( 0, "" ) self.ca.glive.abandonMedia() def stoppedRecordingVideo( self ): self.setUpdating( False ) def startTakingPhoto( self ): self.setUpdating( True ) self.ca.glive.takePhoto() def savePhoto( self, pixbuf ): recd = self.createNewRecorded( Constants.TYPE_PHOTO ) imgpath = os.path.join(Instance.instancePath, recd.mediaFilename) pixbuf.save( imgpath, "jpeg" ) thumbpath = os.path.join(Instance.instancePath, recd.thumbFilename) scale = float((UI.dim_THUMB_WIDTH+0.0)/(pixbuf.get_width()+0.0)) thumbImg = utils.generateThumbnail(pixbuf, scale, UI.dim_THUMB_WIDTH, UI.dim_THUMB_HEIGHT) thumbImg.write_to_png(thumbpath) gc.collect() #now that we've saved both the image and its pixbuf, we get their md5s self.createNewRecordedMd5Sums( recd ) photoHash = self.mediaHashs[Constants.TYPE_PHOTO] photoHash.append( recd ) gobject.idle_add(self.displayThumb, recd, True) self.meshShareRecd( recd ) def addMeshRecd( self, recd ): #todo: sort on time-taken, not on their arrival time over the mesh (?) self.mediaHashs[recd.type].append( recd ) #updateUi, but don't lock up the buttons if they're recording or whatever gobject.idle_add(self.displayThumb, recd, False) def createNewRecorded( self, type ): recd = Recorded( ) recd.recorderName = Instance.nickName recd.recorderHash = Instance.keyHashPrintable #to create a file, use the hardware_id+time *and* check if available or not nowtime = int(time.time()) recd.time = nowtime recd.type = type mediaThumbFilename = str(recd.recorderHash) + "_" + str(recd.time) mediaFilename = mediaThumbFilename mediaFilename = mediaFilename + "." + Constants.mediaTypes[type][Constants.keyExt] mediaFilepath = os.path.join( Instance.instancePath, mediaFilename ) mediaFilepath = utils.getUniqueFilepath( mediaFilepath, 0 ) recd.mediaFilename = os.path.basename( mediaFilepath ) thumbFilename = mediaThumbFilename + "_thumb.jpg" thumbFilepath = os.path.join( Instance.instancePath, thumbFilename ) thumbFilepath = utils.getUniqueFilepath( thumbFilepath, 0 ) recd.thumbFilename = os.path.basename( thumbFilepath ) stringType = Constants.mediaTypes[type][Constants.keyIstr] recd.title = Constants.istrBy % {"1":stringType, "2":str(recd.recorderName)} recd.colorStroke = Instance.colorStroke recd.colorFill = Instance.colorFill logger.debug('createNewRecorded: ' + str(recd) + ", thumbFilename:" + str(recd.thumbFilename)) return recd def createNewRecordedMd5Sums( self, recd ): recd.thumbMd5 = recd.mediaMd5 = str(uuid.uuid4()) #load the thumbfile thumbFile = os.path.join(Instance.instancePath, recd.thumbFilename) tBytes = os.stat(thumbFile)[6] recd.thumbBytes = tBytes recd.tags = "" #load the mediafile mediaFile = os.path.join(Instance.instancePath, recd.mediaFilename) mBytes = os.stat(mediaFile)[6] recd.mediaBytes = mBytes def deleteRecorded( self, recd ): recd.deleted = True #clear the index hash = self.mediaHashs[recd.type] index = hash.index(recd) hash.remove( recd ) if (not recd.meshUploading): self.doDeleteRecorded( recd ) def doDeleteRecorded( self, recd ): #remove files from the filesystem if not on the datastore if (recd.datastoreId == None): mediaFile = recd.getMediaFilepath() if (os.path.exists(mediaFile)): os.remove(mediaFile) thumbFile = recd.getThumbFilepath( ) if (os.path.exists(thumbFile)): os.remove(thumbFile) else: #remove from the datastore here, since once gone, it is gone... serialize.removeMediaFromDatastore( recd ) def doVideoMode( self ): if (self.MODE == Constants.MODE_VIDEO): return self.MODE = Constants.MODE_VIDEO self.setUpdating(True) gobject.idle_add( self.setupMode, self.MODE, True ) def doPhotoMode( self ): if (self.MODE == Constants.MODE_PHOTO): return self.MODE = Constants.MODE_PHOTO self.setUpdating(True) gobject.idle_add( self.setupMode, self.MODE, True ) def doAudioMode( self ): if (self.MODE == Constants.MODE_AUDIO): return self.MODE = Constants.MODE_AUDIO self.setUpdating(True) gobject.idle_add( self.setupMode, self.MODE, True ) sugar-record-activity-82/record.py0000644000000000000000000005265711417267661016114 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import gtk import gobject import os import shutil import telepathy import telepathy.client import logging import xml.dom.minidom import time from xml.dom.minidom import parse import pygst pygst.require('0.10') import gst import logging logger = logging.getLogger('record:record.py') from sugar.activity import activity from sugar.presence import presenceservice from sugar.presence.tubeconn import TubeConnection from sugar import util import port.json from model import Model from ui import UI from recordtube import RecordTube from glive import Glive from glivex import GliveX from gplay import Gplay from greplay import Greplay from recorded import Recorded from constants import Constants import instance from instance import Instance import serialize import utils gst.debug_set_active(True) gst.debug_set_colored(False) if logging.getLogger().level <= logging.DEBUG: gst.debug_set_default_threshold(gst.LEVEL_WARNING) else: gst.debug_set_default_threshold(gst.LEVEL_ERROR) class Record(activity.Activity): log = logging.getLogger('record-activity') def __init__(self, handle): activity.Activity.__init__(self, handle) #flags for controlling the writing to the datastore self.I_AM_CLOSING = False self.I_AM_SAVED = False self.props.enable_fullscreen_mode = False Instance(self) Constants(self) self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) #wait a moment so that our debug console capture mistakes gobject.idle_add( self._initme, None ) def _initme( self, userdata=None ): #totally tubular self.meshTimeoutTime = 10000 self.recTube = None self.connect( "shared", self._sharedCb ) #the main classes self.m = Model(self) self.glive = Glive(self) self.glivex = GliveX(self) self.gplay = Gplay(self) self.ui = UI(self) #CSCL if self._shared_activity: #have you joined or shared this activity yourself? if self.get_shared(): self._meshJoinedCb( self ) else: self.connect("joined", self._meshJoinedCb) return False def read_file(self, file): try: dom = parse(file) except Exception, e: logger.error('read_file: %s' % e) return serialize.fillMediaHash(dom, self.m.mediaHashs) for i in dom.documentElement.getElementsByTagName('ui'): for ui_el in i.childNodes: self.ui.deserialize(port.json.loads(ui_el.data)) def write_file(self, file): self.I_AM_SAVED = False self.m.mediaHashs['ui'] = self.ui.serialize() dom = serialize.saveMediaHash(self.m.mediaHashs) ui_data = port.json.dumps(self.ui.serialize()) ui_el = dom.createElement('ui') ui_el.appendChild(dom.createTextNode(ui_data)) dom.documentElement.appendChild(ui_el) xmlFile = open( file, "w" ) dom.writexml(xmlFile) xmlFile.close() allDone = True for h in range (0, len(self.m.mediaHashs)-1): mhash = self.m.mediaHashs[h] for i in range (0, len(mhash)): recd = mhash[i] if ( (not recd.savedMedia) or (not recd.savedXml) ): allDone = False if (self.I_AM_CLOSING): mediaObject = recd.datastoreOb if (mediaObject != None): recd.datastoreOb = None mediaObject.destroy() del mediaObject self.I_AM_SAVED = True if (self.I_AM_SAVED and self.I_AM_CLOSING): self.destroy() def stopPipes(self): self.ui.doMouseListener( False ) self.m.setUpdating( False ) if (self.ui.COUNTINGDOWN): self.m.abandonRecording() elif (self.m.RECORDING): self.m.doShutter() else: self.glive.stop() self.glivex.stop() def restartPipes(self): if (not self.ui.TRANSCODING): self.ui.updateModeChange( ) self.ui.doMouseListener( True ) def close( self ): self.I_AM_CLOSING = True self.m.UPDATING = False if (self.ui != None): self.ui.updateButtonSensitivities( ) self.ui.doMouseListener( False ) self.ui.hideAllWindows() if (self.gplay != None): self.gplay.stop( ) if (self.glive != None): self.glive.stop( ) if self.glivex != None: self.glivex.stop() #this calls write_file activity.Activity.close( self ) def destroy( self ): if self.I_AM_SAVED: activity.Activity.destroy( self ) def _sharedCb( self, activity ): self._setup() id = self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].OfferDBusTube( Constants.SERVICE, {}) def _meshJoinedCb( self, activity ): if not self._shared_activity: return self._setup() self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].ListTubes( reply_handler=self._list_tubes_reply_cb, error_handler=self._list_tubes_error_cb) def _list_tubes_reply_cb(self, tubes): for tube_info in tubes: self._newTubeCb(*tube_info) def _list_tubes_error_cb(self, e): self.__class__.log.error('ListTubes() failed: %s', e) def _setup(self): #sets up the tubes... if self._shared_activity is None: self.__class__.log.error('_setup: Failed to share or join activity') return pservice = presenceservice.get_instance() try: name, path = pservice.get_preferred_connection() self.conn = telepathy.client.Connection(name, path) except: self.__class__.log.error('_setup: Failed to get_preferred_connection') # Work out what our room is called and whether we have Tubes already bus_name, conn_path, channel_paths = self._shared_activity.get_channels() room = None tubes_chan = None text_chan = None for channel_path in channel_paths: channel = telepathy.client.Channel(bus_name, channel_path) htype, handle = channel.GetHandle() if htype == telepathy.HANDLE_TYPE_ROOM: self.__class__.log.debug('Found our room: it has handle#%d "%s"', handle, self.conn.InspectHandles(htype, [handle])[0]) room = handle ctype = channel.GetChannelType() if ctype == telepathy.CHANNEL_TYPE_TUBES: self.__class__.log.debug('Found our Tubes channel at %s', channel_path) tubes_chan = channel elif ctype == telepathy.CHANNEL_TYPE_TEXT: self.__class__.log.debug('Found our Text channel at %s', channel_path) text_chan = channel if room is None: self.__class__.log.error("Presence service didn't create a room") return if text_chan is None: self.__class__.log.error("Presence service didn't create a text channel") return # Make sure we have a Tubes channel - PS doesn't yet provide one if tubes_chan is None: self.__class__.log.debug("Didn't find our Tubes channel, requesting one...") tubes_chan = self.conn.request_channel(telepathy.CHANNEL_TYPE_TUBES, telepathy.HANDLE_TYPE_ROOM, room, True) self.tubes_chan = tubes_chan self.text_chan = text_chan tubes_chan[telepathy.CHANNEL_TYPE_TUBES].connect_to_signal('NewTube', self._newTubeCb) def _newTubeCb(self, id, initiator, type, service, params, state): self.__class__.log.debug('New tube: ID=%d initator=%d type=%d service=%s params=%r state=%d', id, initiator, type, service, params, state) if (type == telepathy.TUBE_TYPE_DBUS and service == Constants.SERVICE): if state == telepathy.TUBE_STATE_LOCAL_PENDING: self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].AcceptDBusTube(id) tube_conn = TubeConnection(self.conn, self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES], id, group_iface=self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP]) self.recTube = RecordTube(tube_conn) self.recTube.connect("new-recd", self._newRecdCb) self.recTube.connect("recd-request", self._recdRequestCb) self.recTube.connect("recd-bits-arrived", self._recdBitsArrivedCb) self.recTube.connect("recd-unavailable", self._recdUnavailableCb) def _newRecdCb( self, objectThatSentTheSignal, recorder, xmlString ): self.__class__.log.debug('_newRecdCb') dom = None try: dom = xml.dom.minidom.parseString(xmlString) except: self.__class__.log.error('Unable to parse mesh xml') if (dom == None): return recd = Recorded() recd = serialize.fillRecdFromNode(recd, dom.documentElement) if (recd != None): self.__class__.log.debug('_newRecdCb: adding new recd thumb') recd.buddy = True recd.downloadedFromBuddy = False self.m.addMeshRecd( recd ) else: self.__class__.log.debug('_newRecdCb: recd is None. Unable to parse XML') def requestMeshDownload( self, recd ): if (recd.meshDownloading): return True self.m.updateXoFullStatus() if (self.m.FULL): return True #this call will get the bits or request the bits if they're not available if (recd.buddy and (not recd.downloadedFromBuddy)): self.meshInitRoundRobin(recd) return True else: return False def meshInitRoundRobin( self, recd ): if (recd.meshDownloading): self.__class__.log.debug("meshInitRoundRobin: we are in midst of downloading this file...") return if (self.recTube == None): gobject.idle_add(self.ui.updateMeshProgress, False, recd) return #start with who took the photo recd.triedMeshBuddies = [] recd.triedMeshBuddies.append(Instance.keyHashPrintable) self.meshReqRecFromBuddy( recd, recd.recorderHash, recd.recorderName ) def meshNextRoundRobinBuddy( self, recd ): self.__class__.log.debug('meshNextRoundRobinBuddy') if (recd.meshReqCallbackId != 0): gobject.source_remove(recd.meshReqCallbackId) recd.meshReqCallbackId = 0 #delete any stub of a partially downloaded file filepath = recd.getMediaFilepath() if (filepath != None): if (os.path.exists(filepath)): os.remove( filepath ) goodBudObj = None buds = self._shared_activity.get_joined_buddies() for i in range (0, len(buds)): nextBudObj = buds[i] nextBud = util._sha_data(nextBudObj.props.key) nextBud = util.printable_hash(nextBud) if (recd.triedMeshBuddies.count(nextBud) > 0): self.__class__.log.debug('mnrrb: weve already tried bud ' + str(nextBudObj.props.nick)) else: self.__class__.log.debug('mnrrb: ask next buddy: ' + str(nextBudObj.props.nick)) goodBudObj = nextBudObj break if (goodBudObj != None): goodNick = goodBudObj.props.nick goodBud = util._sha_data(goodBudObj.props.key) goodBud = util.printable_hash(goodBud) self.meshReqRecFromBuddy(recd, goodBud, goodNick) else: self.__class__.log.debug('weve tried all buddies here, and no one has this recd') recd.meshDownloading = False recd.triedMeshBuddies = [] recd.triedMeshBuddies.append(Instance.keyHashPrintable) self.ui.updateMeshProgress(False, recd) def meshReqRecFromBuddy( self, recd, fromWho, fromWhosNick ): recd.triedMeshBuddies.append( fromWho ) recd.meshDownloadingFrom = fromWho recd.meshDownloadingFromNick = fromWhosNick recd.meshDownloadingProgress = False recd.meshDownloading = True recd.meshDownlodingPercent = 0.0 self.ui.updateMeshProgress(True, recd) recd.meshReqCallbackId = gobject.timeout_add(self.meshTimeoutTime, self._meshCheckOnRecdRequest, recd) self.recTube.requestRecdBits( Instance.keyHashPrintable, fromWho, recd.mediaMd5 ) def _meshCheckOnRecdRequest( self, recdRequesting ): #todo: add category for "not active activity, so go ahead and delete" if (recdRequesting.downloadedFromBuddy): self.__class__.log.debug('_meshCheckOnRecdRequest: recdRequesting.downloadedFromBuddy') if (recdRequesting.meshReqCallbackId != 0): gobject.source_remove(recdRequesting.meshReqCallbackId) recdRequesting.meshReqCallbackId = 0 return False if (recdRequesting.deleted): self.__class__.log.debug('_meshCheckOnRecdRequest: recdRequesting.deleted') if (recdRequesting.meshReqCallbackId != 0): gobject.source_remove(recdRequesting.meshReqCallbackId) recdRequesting.meshReqCallbackId = 0 return False if (recdRequesting.meshDownloadingProgress): self.__class__.log.debug('_meshCheckOnRecdRequest: recdRequesting.meshDownloadingProgress') #we've received some bits since last we checked, so keep waiting... they'll all get here eventually! recdRequesting.meshDownloadingProgress = False return True else: self.__class__.log.debug('_meshCheckOnRecdRequest: ! recdRequesting.meshDownloadingProgress') #that buddy we asked info from isn't responding; next buddy! #self.meshNextRoundRobinBuddy( recdRequesting ) gobject.idle_add(self.meshNextRoundRobinBuddy, recdRequesting) return False def _recdRequestCb( self, objectThatSentTheSignal, whoWantsIt, md5sumOfIt ): #if we are here, it is because someone has been told we have what they want. #we need to send them that thing, whatever that thing is recd = self.m.getRecdByMd5( md5sumOfIt ) if (recd == None): self.__class__.log.debug('_recdRequestCb: we dont have the recd they asked for') self.recTube.unavailableRecd(md5sumOfIt, Instance.keyHashPrintable, whoWantsIt) return if (recd.deleted): self.__class__.log.debug('_recdRequestCb: we have the recd, but it has been deleted, so we wont share') self.recTube.unavailableRecd(md5sumOfIt, Instance.keyHashPrintable, whoWantsIt) return if (recd.buddy and not recd.downloadedFromBuddy): self.__class__.log.debug('_recdRequestCb: we have an incomplete recd, so we wont share') self.recTube.unavailableRecd(md5sumOfIt, Instance.keyHashPrintable, whoWantsIt) return recd.meshUploading = True filepath = recd.getMediaFilepath() if (recd.type == Constants.TYPE_AUDIO): audioImgFilepath = recd.getAudioImageFilepath() destPath = os.path.join(Instance.instancePath, "audioBundle") destPath = utils.getUniqueFilepath(destPath, 0) cmd = "cat " + str(filepath) + " " + str(audioImgFilepath) + " > " + str(destPath) self.__class__.log.debug(cmd) os.system(cmd) filepath = destPath sent = self.recTube.broadcastRecd(recd.mediaMd5, filepath, whoWantsIt) recd.meshUploading = False #if you were deleted while uploading, now throw away those bits now if (recd.deleted): recd.doDeleteRecorded(recd) def _recdBitsArrivedCb( self, objectThatSentTheSignal, md5sumOfIt, part, numparts, bytes, fromWho ): #self.__class__.log.debug('_recdBitsArrivedCb: ' + str(part) + "/" + str(numparts)) recd = self.m.getRecdByMd5( md5sumOfIt ) if (recd == None): self.__class__.log.debug('_recdBitsArrivedCb: thx 4 yr bits, but we dont even have that photo') return if (recd.deleted): self.__class__.log.debug('_recdBitsArrivedCb: thx 4 yr bits, but we deleted that photo') return if (recd.downloadedFromBuddy): self.__class__.log.debug('_recdBitsArrivedCb: weve already downloadedFromBuddy') return if (not recd.buddy): self.__class__.log.debug('_recdBitsArrivedCb: uh, we took this photo, so dont need your bits') return if (recd.meshDownloadingFrom != fromWho): self.__class__.log.debug('_recdBitsArrivedCb: wrong bits ' + str(fromWho) + ", exp:" + str(recd.meshDownloadingFrom)) return #update that we've heard back about this, reset the timeout gobject.source_remove(recd.meshReqCallbackId) recd.meshReqCallbackId = gobject.timeout_add(self.meshTimeoutTime, self._meshCheckOnRecdRequest, recd) #update the progress bar recd.meshDownlodingPercent = (part+0.0)/(numparts+0.0) recd.meshDownloadingProgress = True self.ui.updateMeshProgress(True, recd) f = open(recd.getMediaFilepath(), 'a+') f.write(bytes) f.close() if part == numparts: self.__class__.log.debug('Finished receiving %s' % recd.title) gobject.source_remove( recd.meshReqCallbackId ) recd.meshReqCallbackId = 0 recd.meshDownloading = False recd.meshDownlodingPercent = 1.0 recd.downloadedFromBuddy = True if (recd.type == Constants.TYPE_AUDIO): filepath = recd.getMediaFilepath() bundlePath = os.path.join(Instance.instancePath, "audioBundle") bundlePath = utils.getUniqueFilepath(bundlePath, 0) cmd = "split -a 1 -b " + str(recd.mediaBytes) + " " + str(filepath) + " " + str(bundlePath) self.__class__.log.debug( cmd ) os.system( cmd ) bundleName = os.path.basename(bundlePath) mediaFilename = str(bundleName) + "a" mediaFilepath = os.path.join(Instance.instancePath, mediaFilename) mediaFilepathExt = os.path.join(Instance.instancePath, mediaFilename+".ogg") os.rename(mediaFilepath, mediaFilepathExt) audioImageFilename = str(bundleName) + "b" audioImageFilepath = os.path.join(Instance.instancePath, audioImageFilename) audioImageFilepathExt = os.path.join(Instance.instancePath, audioImageFilename+".png") os.rename(audioImageFilepath, audioImageFilepathExt) recd.mediaFilename = os.path.basename(mediaFilepathExt) recd.audioImageFilename = os.path.basename(audioImageFilepathExt) self.ui.showMeshRecd( recd ) elif part > numparts: self.__class__.log.error('More parts than required have arrived') def _getAlbumArtCb( self, objectThatSentTheSignal, pixbuf, recd ): if (pixbuf != None): imagePath = os.path.join(Instance.instancePath, "audioPicture.png") imagePath = utils.getUniqueFilepath( imagePath, 0 ) pixbuf.save( imagePath, "png", {} ) recd.audioImageFilename = os.path.basename(imagePath) self.ui.showMeshRecd( recd ) return False def _recdUnavailableCb( self, objectThatSentTheSignal, md5sumOfIt, whoDoesntHaveIt ): self.__class__.log.debug('_recdUnavailableCb: sux, we want to see that photo') recd = self.m.getRecdByMd5( md5sumOfIt ) if (recd == None): self.__class__.log.debug('_recdUnavailableCb: actually, we dont even know about that one..') return if (recd.deleted): self.__class__.log.debug('_recdUnavailableCb: actually, since we asked, we deleted.') return if (not recd.buddy): self.__class__.log.debug('_recdUnavailableCb: uh, odd, we took that photo and have it already.') return if (recd.downloadedFromBuddy): self.__class__.log.debug('_recdUnavailableCb: we already downloaded it... you might have been slow responding.') return if (recd.meshDownloadingFrom != whoDoesntHaveIt): self.__class__.log.debug('_recdUnavailableCb: we arent asking you for a copy now. slow response, pbly.') return #self.meshNextRoundRobinBuddy( recd ) sugar-record-activity-82/port/0000755000000000000000000000000011417267661015231 5ustar rootrootsugar-record-activity-82/port/NEWS0000644000000000000000000000023111417267661015724 0ustar rootroot1 * Add tarball.py * Add json import wrapper * Add object chooser * Add activity classes * Add pixbuf methods * Add TempoSlider and ScrolledBox widgets sugar-record-activity-82/port/json.py0000644000000000000000000000203011417267661016547 0ustar rootroot# This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Unify usage of simplejson in Python 2.5/2.6 In Python 2.5 it imports simplejson module, in 2.6 native json module. Usage: import port.json as json # and using regular simplejson interface with module json json.dumps([]) """ try: from json import * dumps except (ImportError, NameError): from simplejson import * sugar-record-activity-82/port/AUTHORS0000644000000000000000000000004511417267661016300 0ustar rootrootAleksey Lim sugar-record-activity-82/port/COPYING0000644000000000000000000004312211417267661016266 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. sugar-record-activity-82/port/__init__.py0000644000000000000000000000000011417267661017330 0ustar rootrootsugar-record-activity-82/port/TODO0000644000000000000000000000000011417267661015707 0ustar rootrootsugar-record-activity-82/port/README0000644000000000000000000000045311417267661016113 0ustar rootrootAbout ----- A set of sugar components/libraries/etc to simplify writing activities. Cornerstone purposes for this project: * Total backwards compatibility for sugar-port API * Run on all sugar platforms beginning from 0.82 Get it ------ http://wiki.sugarlabs.org/go/Development_Team/sugar-port sugar-record-activity-82/p5.py0000644000000000000000000001311111417267661015140 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import gtk from gtk import gdk import gobject import cairo import math #Sometimes a gtk.Image is a useful alternative to a drawing area. You can put a gtk.gdk.Pixmap in the gtk.Image and draw to the gtk.gdk.Pixmap, calling the gtk.Widget.queue_draw() method on the gtk.Image when you want to refresh to the screen. class P5(gtk.DrawingArea): def __init__(self): super(P5, self).__init__() # gtk.Widget signals self.connect("expose_event", self.expose) self.connect("button_press_event", self.button_press) self.connect("button_release_event", self.button_release) self.connect("motion_notify_event", self.motion_notify) # ok, we have to listen to mouse events here too self.add_events(gdk.BUTTON_PRESS_MASK | gdk.BUTTON_RELEASE_MASK | gdk.POINTER_MOTION_MASK) self._dragging = False self._mouseX = 0 self._mouseY = 0 self._w = -1 self._h = -1 #ok, this calls an initial painting & setting of painterly variables #e.g. time for the clock widget #(but not through to redraw_canvas when called here first time) self._msecUpdate = 100 self._looping = False self.noloop() def loop(self): if (self._looping): return else: self._looping = True # this is our maybe-threaded refresh (in millisecs) gobject.timeout_add( self._msecUpdate, self.update ) def noloop(self): self._looping = False self.redraw() def redraw(self): self.update() def expose(self, widget, event): ctx = widget.window.cairo_create() # set a clip region for the expose event ctx.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) ctx.clip() rect = widget.allocation #self.draw(ctx, event.area.width, event.area.height) self.draw( ctx, rect.width, rect.height ) def button_press(self, widget, event): self._mouseX = event.x self._mouseY = event.y self._dragging = True def button_release(self, widget, event): if self._dragging: self._dragging = False def motion_notify(self, widget, event): self._mouseX = event.x self._mouseY = event.y def draw(self, ctx, w, h): ctx.set_antialias( cairo.ANTIALIAS_NONE ) ctx.set_line_width( 1 ) ctx.identity_matrix( ) if ((w != self._w) or (h != self._h)): self._w = w self._h = h self.doResize( ) def doResize(self): pass #called from update def redraw_canvas(self): if self.window: alloc = self.get_allocation() #this is odd behavior, but once we add this widget to a parent (vbox) #it requires setting the q_d_a x,y to 0, 0 #self.queue_draw_area(alloc.x, alloc.y, alloc.width, alloc.height) self.queue_draw_area(0, 0, alloc.width, alloc.height) self.window.process_updates(True) def update(self): #paint thread -- call redraw_canvas, which calls expose self.redraw_canvas() if (self._looping): return True # keep running this event else: return False def drawShape( self, ctx, poly, col ): self.setColor( ctx, col ) for i in range ( 0, len(poly._xs) ): ctx.line_to ( poly._xs[i], poly._ys[i] ) ctx.close_path() ctx.set_line_width(1) ctx.stroke() def fillShape( self, ctx, poly, col ): self.setColor( ctx, col ) for i in range ( 0, len(poly._xs) ): ctx.line_to (poly._xs[i], poly._ys[i]) ctx.close_path() ctx.fill() def background( self, ctx, col, w, h ): self.setColor( ctx, col ) ctx.line_to(0, 0) ctx.line_to(w, 0) ctx.line_to(w, h) ctx.line_to(0, h) ctx.close_path() ctx.fill() def rect( self, ctx, x, y, w, h ): ctx.line_to(x, y) ctx.line_to(x+w, y) ctx.line_to(x+w, y+h) ctx.line_to(x, y+h) ctx.close_path() def setColor( self, ctx, col ): if (not col._opaque): ctx.set_source_rgba( col._r, col._g, col._b, col._a ) else: ctx.set_source_rgb( col._r, col._g, col._b ) def line( self, ctx, x1, y1, x2, y2 ): ctx.move_to (x1, y1) ctx.line_to (x2, y2) ctx.stroke() def point( self, ctx, x1, y1 ): self.line( ctx, x1, y1, x1+1, y1 )sugar-record-activity-82/button.py0000644000000000000000000000650011417267661016133 0ustar rootrootimport gtk import os import gobject import rsvg import gc from sugar.graphics.palette import Palette from sugar.graphics.tray import TrayButton from sugar.graphics.icon import Icon from sugar.graphics import style from constants import Constants import utils class RecdButton(TrayButton, gobject.GObject): def __init__(self, ui, recd): TrayButton.__init__(self) self.ui = ui self.recd = recd img = self.getImg( ) self.set_icon_widget( img ) self.ACTIVATE_COPY_ID = 0 self.ACTIVATE_REMOVE_ID = 0 self.setup_rollover_options( recd.title ) def getImg( self ): img = gtk.Image() ipb = self.recd.getThumbPixbuf() xoff = 8 yoff = 8 pb = None if (self.recd.type == Constants.TYPE_PHOTO): if (self.recd.buddy): thumbPhotoSvg = utils.loadSvg(Constants.thumbPhotoSvgData, self.recd.colorStroke.hex, self.recd.colorFill.hex) pb = thumbPhotoSvg.get_pixbuf() else: pb = Constants.thumbPhotoSvg.get_pixbuf() elif (self.recd.type == Constants.TYPE_VIDEO): if (self.recd.buddy): thumbVideoSvg = utils.loadSvg(Constants.thumbVideoSvgData, self.recd.colorStroke.hex, self.recd.colorFill.hex) pb = thumbVideoSvg.get_pixbuf() else: pb = Constants.thumbVideoSvg.get_pixbuf() elif (self.recd.type == Constants.TYPE_AUDIO): if (self.recd.buddy): thumbAudioSvg = utils.loadSvg(Constants.thumbAudioSvgData, self.recd.colorStroke.hex, self.recd.colorFill.hex) pb = thumbAudioSvg.get_pixbuf() else: pb = Constants.thumbAudioSvg.get_pixbuf() img.set_from_pixbuf(pb) img.show() ipb.composite(pb, xoff, yoff, ipb.get_width(), ipb.get_height(), xoff, yoff, 1, 1, gtk.gdk.INTERP_BILINEAR, 255) img.set_from_pixbuf(pb) gc.collect() return img def setButtClickedId( self, id ): self.BUTT_CLICKED_ID = id def getButtClickedId( self ): return self.BUTT_CLICKED_ID def setup_rollover_options( self, info ): palette = Palette(info) self.set_palette(palette) self.rem_menu_item = gtk.MenuItem( Constants.istrRemove ) self.ACTIVATE_REMOVE_ID = self.rem_menu_item.connect('activate', self._itemRemoveCb) palette.menu.append(self.rem_menu_item) self.rem_menu_item.show() self.addCopyMenuItem() def addCopyMenuItem( self ): if (self.recd.buddy and not self.recd.downloadedFromBuddy): return if (self.ACTIVATE_COPY_ID != 0): return self.copy_menu_item = gtk.MenuItem( Constants.istrCopyToClipboard ) self.ACTIVATE_COPY_ID = self.copy_menu_item.connect('activate', self._itemCopyToClipboardCb) self.get_palette().menu.append(self.copy_menu_item) self.copy_menu_item.show() def cleanUp( self ): self.rem_menu_item.disconnect( self.ACTIVATE_REMOVE_ID ) if (self.ACTIVATE_COPY_ID != 0): self.copy_menu_item.disconnect( self.ACTIVATE_COPY_ID ) def _itemRemoveCb(self, widget): self.ui.deleteThumbSelection( self.recd ) def _itemCopyToClipboardCb(self, widget): self.ui.copyToClipboard( self.recd )sugar-record-activity-82/greplay.py0000644000000000000000000000602511417267661016265 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import gst import gst.interfaces import pygst pygst.require('0.10') import gobject import os import record import utils class Greplay(gobject.GObject): __gsignals__ = { 'coverart-found': (gobject.SIGNAL_RUN_FIRST, None, [object]) } def findAlbumArt( self, path ): record.Record.log.debug("getAlbumArt") if (path == None): record.Record.log.debug("getAlbumArt: path==None") self.emit('coverart-found', None) return if (not os.path.exists(path)): record.Record.log.debug("getAlbumArt: path doesn't exist") self.emit('coverart-found', None) return self.pp = gst.parse_launch("filesrc location="+str(path)+" ! oggdemux ! vorbisdec ! fakesink") self.pp.get_bus().add_signal_watch() self.pp.get_bus().connect("message", self._onMessageCb) self.pp.set_state(gst.STATE_PLAYING) def _onMessageCb(self, bus, message): t = message.type if t == gst.MESSAGE_EOS: record.Record.log.debug("Greplay:MESSAGE_EOS") self.emit('coverart-found', None) self.pp.set_state(gst.STATE_NULL) return False elif t == gst.MESSAGE_ERROR: record.Record.log.debug("Greplay:MESSAGE_ERROR") self.emit('coverart-found', None) self.pp.set_state(gst.STATE_NULL) return False elif t == gst.MESSAGE_TAG: tags = message.parse_tag() for tag in tags.keys(): if (str(tag) == "extended-comment"): record.Record.log.debug("Found the tag!") #todo, check for tagname base64imgString = str(tags[tag])[len("coverart="):] pixbuf = utils.getPixbufFromString(base64imgString) self.pp.set_state(gst.STATE_NULL) self.emit('coverart-found', pixbuf) return False return True sugar-record-activity-82/color.py0000644000000000000000000000435011417267661015737 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import gtk class Color: def __init__(self): pass def init_rgba(self, r, g, b, a): self._ro = r self._go = g self._bo = b self._ao = a; self._r = self._ro / 255.0 self._g = self._go / 255.0 self._b = self._bo / 255.0 self._a = self._ao / 255.0 self._opaque = False if (self._a == 1): self.opaque = True rgb_tup = ( self._ro, self._go, self._bo ) self.hex = self.rgb_to_hex( rgb_tup ) self.gColor = gtk.gdk.color_parse( self.hex ) def init_gdk(self, col): self.init_hex( col.get_html() ) def init_hex(self, hex): cTup = self.hex_to_rgb( hex ) self.init_rgba( cTup[0], cTup[1], cTup[2], 255 ) def get_int(self): return int(self._a * 255) + (int(self._b * 255) << 8) + (int(self._g * 255) << 16) + (int(self._r * 255) << 24) def rgb_to_hex(self, rgb_tup): hexcolor = '#%02x%02x%02x' % rgb_tup return hexcolor def hex_to_rgb(self, h): c = eval('0x' + h[1:]) r = (c >> 16) & 0xFF g = (c >> 8) & 0xFF b = c & 0xFF return (int(r), int(g), int(b))sugar-record-activity-82/tray.py0000644000000000000000000001622311417267661015602 0ustar rootroot# Copyright (C) 2007, One Laptop Per Child # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. import gobject import gtk import hippo import sugar from sugar.graphics import style from sugar.graphics.palette import Palette, ToolInvoker from sugar.graphics.toolbutton import ToolButton from sugar.graphics.icon import Icon from constants import Constants _PREVIOUS_PAGE = 0 _NEXT_PAGE = 1 class _TrayViewport(gtk.Viewport): __gproperties__ = { 'can-scroll' : (bool, None, None, False, gobject.PARAM_READABLE), } def __init__(self, orientation): self.orientation = orientation self._can_scroll = False gobject.GObject.__init__(self) self.set_shadow_type(gtk.SHADOW_NONE) self.traybar = gtk.Toolbar() self.traybar.set_orientation(orientation) self.traybar.set_show_arrow(False) self.add(self.traybar) self.traybar.show() self.connect('size_allocate', self._size_allocate_cb) def scroll(self, direction): if direction == _PREVIOUS_PAGE: self._scroll_previous() elif direction == _NEXT_PAGE: self._scroll_next() def _scroll_next(self): if self.orientation == gtk.ORIENTATION_HORIZONTAL: adj = self.get_hadjustment() new_value = adj.value + self.allocation.width adj.value = min(new_value, adj.upper - self.allocation.width) else: adj = self.get_vadjustment() new_value = adj.value + self.allocation.height adj.value = min(new_value, adj.upper - self.allocation.height) def _scroll_to_end(self): if self.orientation == gtk.ORIENTATION_HORIZONTAL: adj = self.get_hadjustment() adj.value = adj.upper# - self.allocation.width else: adj = self.get_vadjustment() adj.value = adj.upper - self.allocation.height def _scroll_previous(self): if self.orientation == gtk.ORIENTATION_HORIZONTAL: adj = self.get_hadjustment() new_value = adj.value - self.allocation.width adj.value = max(adj.lower, new_value) else: adj = self.get_vadjustment() new_value = adj.value - self.allocation.height adj.value = max(adj.lower, new_value) def do_size_request(self, requisition): child_requisition = self.child.size_request() if self.orientation == gtk.ORIENTATION_HORIZONTAL: requisition[0] = 0 requisition[1] = child_requisition[1] else: requisition[0] = child_requisition[0] requisition[1] = 0 def do_get_property(self, pspec): if pspec.name == 'can-scroll': return self._can_scroll def _size_allocate_cb(self, viewport, allocation): bar_requisition = self.traybar.get_child_requisition() if self.orientation == gtk.ORIENTATION_HORIZONTAL: can_scroll = bar_requisition[0] > allocation.width else: can_scroll = bar_requisition[1] > allocation.height if can_scroll != self._can_scroll: self._can_scroll = can_scroll self.notify('can-scroll') class _TrayScrollButton(gtk.Button): def __init__(self, icon_name, scroll_direction): gobject.GObject.__init__(self) self._viewport = None self._scroll_direction = scroll_direction self.set_relief(gtk.RELIEF_NONE) self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE) icon = Icon(icon_name = icon_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) self.set_image(icon) icon.show() self.connect('clicked', self._clicked_cb) def set_viewport(self, viewport): self._viewport = viewport self._viewport.connect('notify::can-scroll', self._viewport_can_scroll_changed_cb) def _viewport_can_scroll_changed_cb(self, viewport, pspec): #self.props.visible = self._viewport.props.can_scroll self.set_sensitive(self._viewport.props.can_scroll) def _clicked_cb(self, button): self._viewport.scroll(self._scroll_direction) viewport = property(fset=set_viewport) class HTray(gtk.VBox): def __init__(self, **kwargs): gobject.GObject.__init__(self, **kwargs) separator = hippo.Canvas() box = hippo.CanvasBox( border_color=Constants.colorWhite.get_int(), background_color=Constants.colorWhite.get_int(), box_height=1, border_bottom=1) separator.set_root(box) self.pack_start(separator, False) hbox = gtk.HBox() self.pack_start(hbox) scroll_left = _TrayScrollButton('go-left', _PREVIOUS_PAGE) scroll_left_event = gtk.EventBox() scroll_left_event.add(scroll_left) scroll_left_event.set_size_request(55, -1) hbox.pack_start(scroll_left_event, False) self._viewport = _TrayViewport(gtk.ORIENTATION_HORIZONTAL) hbox.pack_start(self._viewport) self._viewport.show() scroll_right = _TrayScrollButton('go-right', _NEXT_PAGE) scroll_right_event = gtk.EventBox() scroll_right_event.add(scroll_right) scroll_right_event.set_size_request(55, -1) hbox.pack_start(scroll_right_event, False) scroll_left.set_focus_on_click(False) scroll_left_event.modify_bg(gtk.STATE_NORMAL, sugar.graphics.style.COLOR_TOOLBAR_GREY.get_gdk_color()) scroll_left.modify_bg(gtk.STATE_ACTIVE, sugar.graphics.style.COLOR_BUTTON_GREY.get_gdk_color()) scroll_right.set_focus_on_click(False) scroll_right_event.modify_bg(gtk.STATE_NORMAL, sugar.graphics.style.COLOR_TOOLBAR_GREY.get_gdk_color()) scroll_right.modify_bg(gtk.STATE_ACTIVE, sugar.graphics.style.COLOR_BUTTON_GREY.get_gdk_color()) scroll_left.viewport = self._viewport scroll_right.viewport = self._viewport self.connect_after("size-allocate", self._sizeAllocateCb) def _sizeAllocateCb(self, widget, event ): self._viewport.notify('can-scroll') def get_children(self): return self._viewport.traybar.get_children() def add_item(self, item, index=-1): self._viewport.traybar.insert(item, index) def remove_item(self, item): self._viewport.traybar.remove(item) def get_item_index(self, item): return self._viewport.traybar.get_item_index(item) def scroll_to_end(self): self._viewport._scroll_to_end()sugar-record-activity-82/aplay.py0000644000000000000000000000310311417267661015722 0ustar rootroot# This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gst import logging logger = logging.getLogger('record:aplay.py') def play(file, done_cb=None): player.set_state(gst.STATE_NULL) def eos_cb(bus, message): bus.disconnect_by_func(eos_cb) player.set_state(gst.STATE_NULL) if done_cb is not None: done_cb() def error_cb(bus, message): err, debug = message.parse_error() logger.error('play_pipe: %s %s' % (err, debug)) player.set_state(gst.STATE_NULL) if done_cb is not None: done_cb() bus = player.get_bus() bus.connect('message::eos', eos_cb) bus.connect('message::error', error_cb) player.props.uri = 'file://' + file player.set_state(gst.STATE_PLAYING) player = gst.element_factory_make('playbin') fakesink = gst.element_factory_make('fakesink') player.set_property("video-sink", fakesink) player.get_bus().add_signal_watch() sugar-record-activity-82/constants.py0000644000000000000000000003015211417267661016634 0ustar rootroot# -*- coding: UTF-8 -*- import os import gtk from gettext import gettext as gt from gettext import ngettext import hippo import sugar.graphics.style from sugar.activity import activity from instance import Instance from sugar import profile from color import Color import utils import cairo import pango import pangocairo def istrMinutes(x): return ngettext('%(1)s minute', '%(1)s minutes', int(x)) % {'1': int(x)} def istrSeconds(x): return ngettext('%(1)s second', '%(1)s seconds', int(x)) % {'1': int(x)} class Constants: VERSION = 54 SERVICE = "org.laptop.Record" IFACE = SERVICE PATH = "/org/laptop/Record" activityId = None recdTitle = "title" recdTags = "tags" recdTime = "time" recdRecorderName = "photographer" recdRecorderHash = "recorderHash" recdColorStroke = "colorStroke" recdColorFill = "colorFill" recdHashKey = "hashKey" recdBuddy = "buddy" recdMediaMd5 = "mediaMd5" recdThumbMd5 = "thumbMd5" recdMediaBytes = "mediaBytes" recdThumbBytes = "thumbBytes" recdBase64Thumb = "base64Thumb" recdDatastoreId = "datastoreId" recdAudioImage = "audioImage" recdAlbum = "album" recdType = "type" recdRecd = "recd" recdRecordVersion = "version" keyName = "name" keyMime = "mime" keyExt = "ext" keyIstr = "istr" MODE_PHOTO = 0 MODE_VIDEO = 1 MODE_AUDIO = 2 TYPE_PHOTO = MODE_PHOTO TYPE_VIDEO = MODE_VIDEO TYPE_AUDIO = MODE_AUDIO TIMER_0 = 0 TIMER_5 = 5 TIMER_10 = 10 TIMERS = [] TIMERS.append(TIMER_0) TIMERS.append(TIMER_5) TIMERS.append(TIMER_10) DURATION_2 = 2 DURATION_4 = 4 DURATION_6 = 6 DURATIONS = [] DURATIONS.append(DURATION_2) DURATIONS.append(DURATION_4) DURATIONS.append(DURATION_6) colorBlack = Color() colorBlack.init_rgba( 0, 0, 0, 255 ) colorWhite = Color() colorWhite.init_rgba( 255, 255, 255, 255 ) colorRed = Color() colorRed.init_rgba( 255, 0, 0, 255) colorGreen = Color() colorGreen.init_rgba( 0, 255, 0, 255) colorBlue = Color() colorBlue.init_rgba( 0, 0, 255, 255) colorButton = Color() colorButton.init_gdk( sugar.graphics.style.COLOR_BUTTON_GREY ) gfxPath = os.path.join(activity.get_bundle_path(), "gfx") soundClick = os.path.join(gfxPath, 'photoShutter.wav') #defensive method against variables not translated correctly def _(s): #todo: permanent variable istrsTest = {} for i in range (0,4): istrsTest[str(i)] = str(i) i = s try: #test translating the string with many replacements i = gt(s) test = i % istrsTest except: #if it doesn't work, revert i = s return i istrActivityName = _('Record') istrPhoto = _('Photo') istrVideo = _('Video') istrAudio = _('Audio') istrTimelapse = _('Time Lapse') istrAnimation = _('Animation') istrPanorama = _('Panorama') istrInterview= _('Interview') #TRANS: photo by photographer, e.g., "Photo by Mary" istrBy = _("%(1)s by %(2)s") istrTitle = _('Title:') istrRecorder = _('Recorder:') istrDate = _('Date:') istrTags = _('Tags:') istrSaving = _('Saving') istrFinishedRecording = _("Finished recording") istrRemove = _("Remove") istrStoppedRecording = _("Stopped recording") istrCopyToClipboard = _("Copy to clipboard") istrTimer = _("Timer:") istrDuration = _("Duration:") istrRemaining = _("Remaining:") istrNow = _("Immediate") istrPlay = _("Play") istrPause = _("Pause") istrAddFrame = _("Add frame") istrRemoveFrame = _("Remove frame") istrFramesPerSecond = _("%(1)s frames per second") istrQuality = _("Quality") istrDefault = _("Default") istrHighQuality = _("High") istrLowQuality = _("Low") istrLargeFile = _("Large file") istrSmallFile = _("Small file") istrSilent = _("Silent") istrRotate = _("Rotate") istrWidth = _("Width") istrHeight = _("Height") istrClickToTakePicture = _("Click to take picture") istrClickToAddPicture = _("Click to add picture") #TRANS: Downloading Photo from Mary istrDownloadingFrom = _("Downloading %(1)s from %(2)s") #TRANS: Cannot download this Photo istrCannotDownload = _("Cannot download this %(1)s") #TRANS: Save Photo to: istrSaveTo = _("Save %(1)s to:") istrYourDiskIsFull = _("Your %(1)s is full") istrJournal = _("Journal") istrUSB = _("USB") istrCompactFlash = _("SD Card") istrPreferences = _("Preferences") istrFreeSpace = _("Free space:") #TRANS: 7 photos istrBitrate = _("Bitrate") istrMaxBitrate = _("Maximum Bitrate") istrMinBitrate = _("Minumum Bitrate") istrManageBitrate = _("Manage Bitrate") istrBorder = _("Border") istrCenter = _("Center") istrFrames = _("Frames") istrKeyframeAuto = _("Automatic keyframe detection") istrKeyframeForce = _("Force keyframe") istrKeyframeFrequency = _("Keyframe frequency") istrKeyframeMinDist = _("Keyframe minimum distance") istrKeyframeThreshold = _("Keyframe threshold") istrNoiseSensitivity = _("Noise Sensitivity") istrQuick = _("Quick") istrSharpness = _("Sharpness") istrCapacity = _("Capacity") mediaTypes = {} mediaTypes[TYPE_PHOTO] = {keyName:"photo", keyMime:"image/jpeg", keyExt:"jpg", keyIstr:istrPhoto} mediaTypes[TYPE_VIDEO] = {keyName:"video", keyMime:"video/ogg", keyExt:"ogg", keyIstr:istrVideo} mediaTypes[TYPE_AUDIO] = {keyName:"audio", keyMime:"audio/ogg", keyExt:"ogg", keyIstr:istrAudio} thumbPhotoSvgData = None thumbPhotoSvg = None thumbVideoSvg = None maxEnlargeSvg = None maxReduceSvg = None infoOnSvg = None xoGuySvgData = None recImg = None recRedImg = None recCircleCairo = None recInsensitiveImg = None recPlayImg = None recPauseImg = None countdownImgs = {} dim_CONTROLBAR_HT = 55 keepFreeKbOnXo = 100000 def __init__( self, ca ): self.__class__.activityId = ca._activity_id thumbPhotoSvgPath = os.path.join(self.__class__.gfxPath, 'object-photo.svg') thumbPhotoSvgFile = open(thumbPhotoSvgPath, 'r') self.__class__.thumbPhotoSvgData = thumbPhotoSvgFile.read() self.__class__.thumbPhotoSvg = utils.loadSvg(self.__class__.thumbPhotoSvgData, Instance.colorStroke.hex, Instance.colorFill.hex) thumbPhotoSvgFile.close() thumbVideoSvgPath = os.path.join(self.__class__.gfxPath, 'object-video.svg') thumbVideoSvgFile = open(thumbVideoSvgPath, 'r') self.__class__.thumbVideoSvgData = thumbVideoSvgFile.read() self.__class__.thumbVideoSvg = utils.loadSvg(self.__class__.thumbVideoSvgData, Instance.colorStroke.hex, Instance.colorFill.hex) thumbVideoSvgFile.close() thumbAudioSvgPath = os.path.join(self.__class__.gfxPath, 'object-audio.svg') thumbAudioSvgFile = open(thumbAudioSvgPath, 'r') self.__class__.thumbAudioSvgData = thumbAudioSvgFile.read() self.__class__.thumbAudioSvg = utils.loadSvg(self.__class__.thumbAudioSvgData, Instance.colorStroke.hex, Instance.colorFill.hex) thumbAudioSvgFile.close() maxEnlargeSvgPath = os.path.join(self.__class__.gfxPath, 'max-enlarge.svg') maxEnlargeSvgFile = open(maxEnlargeSvgPath, 'r') maxEnlargeSvgData = maxEnlargeSvgFile.read() self.__class__.maxEnlargeSvg = utils.loadSvg(maxEnlargeSvgData, None, None ) maxEnlargeSvgFile.close() maxReduceSvgPath = os.path.join(self.__class__.gfxPath, 'max-reduce.svg') maxReduceSvgFile = open(maxReduceSvgPath, 'r') maxReduceSvgData = maxReduceSvgFile.read() self.__class__.maxReduceSvg = utils.loadSvg(maxReduceSvgData, None, None ) maxReduceSvgFile.close() infoOnSvgPath = os.path.join(self.__class__.gfxPath, 'corner-info.svg') infoOnSvgFile = open(infoOnSvgPath, 'r') infoOnSvgData = infoOnSvgFile.read() self.__class__.infoOnSvg = utils.loadSvg(infoOnSvgData, None, None ) infoOnSvgFile.close() xoGuySvgPath = os.path.join(self.__class__.gfxPath, 'xo-guy.svg') xoGuySvgFile = open(xoGuySvgPath, 'r') self.__class__.xoGuySvgData = xoGuySvgFile.read() xoGuySvgFile.close() recFile = os.path.join(self.__class__.gfxPath, 'media-record.png') recPixbuf = gtk.gdk.pixbuf_new_from_file(recFile) self.__class__.recImg = gtk.Image() self.__class__.recImg.set_from_pixbuf( recPixbuf ) recRedFile = os.path.join(self.__class__.gfxPath, 'media-record-red.png') recRedPixbuf = gtk.gdk.pixbuf_new_from_file(recRedFile) self.__class__.recRedImg = gtk.Image() self.__class__.recRedImg.set_from_pixbuf( recRedPixbuf ) recCircleFile = os.path.join(self.__class__.gfxPath, 'media-circle.png') recCirclePixbuf = gtk.gdk.pixbuf_new_from_file(recCircleFile) self.__class__.recCircleCairo = hippo.cairo_surface_from_gdk_pixbuf(recCirclePixbuf) recInsFile = os.path.join(self.__class__.gfxPath, 'media-insensitive.png') recInsPixbuf = gtk.gdk.pixbuf_new_from_file(recInsFile) self.__class__.recInsensitiveImg = gtk.Image() self.__class__.recInsensitiveImg.set_from_pixbuf( recInsPixbuf ) fullInsFile = os.path.join(self.__class__.gfxPath, 'full-insensitive.png') fullInsPixbuf = gtk.gdk.pixbuf_new_from_file(fullInsFile) self.__class__.fullInsensitiveImg = gtk.Image() self.__class__.fullInsensitiveImg.set_from_pixbuf( fullInsPixbuf ) recPlayFile = os.path.join(self.__class__.gfxPath, 'media-play.png') recPlayPixbuf = gtk.gdk.pixbuf_new_from_file(recPlayFile) self.__class__.recPlayImg = gtk.Image() self.__class__.recPlayImg.set_from_pixbuf( recPlayPixbuf ) recPauseFile = os.path.join(self.__class__.gfxPath, 'media-pause.png') recPausePixbuf = gtk.gdk.pixbuf_new_from_file(recPauseFile) self.__class__.recPauseImg = gtk.Image() self.__class__.recPauseImg.set_from_pixbuf( recPausePixbuf ) self._ts = self.__class__.TIMERS longestTime = self._ts[len(self._ts)-1] for i in range (0, longestTime): self.createCountdownPng( i ) def createCountdownPng(self, num): todisk = True rendered = False if (todisk): path = os.path.join(Instance.dataPath, str(num)+".png") if (os.path.exists(path)): rendered = True if (not rendered): w = self.__class__.dim_CONTROLBAR_HT h = w if (todisk): cimg = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) ctx = cairo.Context(cimg) else: pixmap = gtk.gdk.Pixmap(None, w, h, 24) ctx = pixmap.cairo_create() ctx.rectangle(0, 0, w, h) ctx.set_source_rgb(0, 0, 0) ctx.fill() x = 0 y = 4 ctx.translate(x,y) ctx.set_source_surface (self.__class__.recCircleCairo, 0, 0) ctx.paint() ctx.translate(-x,-y) ctx.set_source_rgb(255, 255, 255) pctx = pangocairo.CairoContext(ctx) play = pctx.create_layout() font = pango.FontDescription("sans 30") play.set_font_description(font) play.set_text( ""+str(num) ) dim = play.get_pixel_extents() ctx.translate( -dim[0][0], -dim[0][1] ) xoff = (w-dim[0][2])/2 yoff = (h-dim[0][3])/2 ctx.translate( xoff, yoff ) ctx.translate( -3, 0 ) pctx.show_layout(play) img = gtk.Image() if (todisk): path = os.path.join(Instance.dataPath, str(num)+".png") if (not rendered): path = utils.getUniqueFilepath(path, 0) cimg.write_to_png(path) numPixbuf = gtk.gdk.pixbuf_new_from_file(path) img.set_from_pixbuf( numPixbuf ) else: img.set_from_pixmap(pixmap, None) self.__class__.countdownImgs[int(num)] = img sugar-record-activity-82/gplay.py0000644000000000000000000000774111417267661015744 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. #look at jukeboxactivity.py import gtk import pygtk pygtk.require('2.0') import sys import pygst pygst.require('0.10') import gst import gst.interfaces import gobject import time gobject.threads_init() import logging logger = logging.getLogger('record:gplay.py') import record class Gplay: def __init__(self, ca): self.ca = ca self.window = None self.players = [] self.playing = False self.player = gst.element_factory_make('playbin') bus = self.player.get_bus() bus.enable_sync_message_emission() bus.add_signal_watch() bus.connect('message', self._onMessageCb) def _onMessageCb(self, bus, message): if message.type == gst.MESSAGE_ERROR: err, debug = message.parse_error() logger.error('_onMessageCb: error=%s debug=%s' % (err, debug)) def setLocation(self, location): if (self.player.get_property('uri') == location): self.seek(gst.SECOND*0) return self.player.set_state(gst.STATE_READY) self.player.set_property('uri', location) ext = location[len(location)-3:] record.Record.log.debug("setLocation: ext->"+str(ext)) if (ext == "jpg"): self.pause() def queryPosition(self): "Returns a (position, duration) tuple" try: position, format = self.player.query_position(gst.FORMAT_TIME) except: position = gst.CLOCK_TIME_NONE try: duration, format = self.player.query_duration(gst.FORMAT_TIME) except: duration = gst.CLOCK_TIME_NONE return (position, duration) def seek(self, location): event = gst.event_new_seek(1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE, gst.SEEK_TYPE_SET, location, gst.SEEK_TYPE_NONE, 0) res = self.player.send_event(event) if res: self.player.set_new_stream_time(0L) def pause(self): self.playing = False self.player.set_state(gst.STATE_PAUSED) def play(self): if not self.player.props.video_sink: sink = gst.element_factory_make('xvimagesink') sink.props.force_aspect_ratio = True self.player.props.video_sink = sink self.player.props.video_sink.set_xwindow_id(self.window.window.xid) self.playing = True self.player.set_state(gst.STATE_PLAYING) def stop(self): self.playing = False self.player.set_state(gst.STATE_NULL) def get_state(self, timeout=1): return self.player.get_state(timeout=timeout) def is_playing(self): return self.playing class PlayVideoWindow(gtk.Window): def __init__(self, bgd): gtk.Window.__init__(self) self.modify_bg( gtk.STATE_NORMAL, bgd ) self.modify_bg( gtk.STATE_INSENSITIVE, bgd ) self.unset_flags(gtk.DOUBLE_BUFFERED) self.set_flags(gtk.APP_PAINTABLE) sugar-record-activity-82/setup.py0000755000000000000000000000147011417267661015764 0ustar rootroot#!/usr/bin/python # Copyright (C) 2006, Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from sugar.activity import bundlebuilder bundlebuilder.start() sugar-record-activity-82/icons/0000755000000000000000000000000011417267661015360 5ustar rootrootsugar-record-activity-82/icons/media-photo.svg0000644000000000000000000000225711417267661020315 0ustar rootroot ]> sugar-record-activity-82/icons/media-video.svg0000644000000000000000000000167711417267661020277 0ustar rootroot ]> sugar-record-activity-82/icons/media-audio.svg0000644000000000000000000000177511417267661020271 0ustar rootroot ]> sugar-record-activity-82/p5_button.py0000644000000000000000000001147611417267661016547 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. from p5 import P5 class P5Button(P5): def __init__(self): P5.__init__(self) self.noloop() self._butts = [] self._buttonPressed = False def button_press(self, widget, event): P5.button_press(self, widget, event) #iterate through the buttons to see if you've pressed any down bp = False for i in range ( 0, len(self._butts) ): if (self._butts[i]._enabled): contains = self._butts[i].contains(event.x, event.y) self._butts[i]._pressed = contains if (contains): bp = True self._buttonPressed = bp self.redraw() def button_release(self, widget, event): P5.button_release(self, widget, event) self._buttonPressed = False pressed = [] #iterate through the buttons to see if you've released on any for i in range ( 0, len(self._butts) ): if (self._butts[i]._enabled): if (self._butts[i]._pressed): if (self._butts[i].contains(event.x, event.y)): pressed.append( self._butts[i] ) if (self._butts[i]._toggle): self._butts[i]._pressed = not self._butts[i]._pressed else: self._butts[i]._pressed = False for i in range( 0, len(pressed) ): pressed[i].doPressed() self.redraw() class Polygon: def __init__( self, xs, ys ): self.setPoints( xs, ys ) def setPoints( self, xs, ys ): self._xs = xs self._ys = ys self._boundingX = self._xs[0] self._boundingY = self._ys[0] self._boundingW = self._xs[0] self._boundingH = self._ys[0] for i in range ( 1, len(self._xs) ): if (self._xs[i] > self._boundingW): self._boundingW = self._xs[i] if (self._ys[i] > self._boundingH): self._boundingH = self._ys[i] if (self._xs[i] < self._boundingX): self._boundingX = self._xs[i] if (self._ys[i] < self._boundingY): self._boundingY = self._ys[i] def contains( self, mx, my ): if (not self.bbox_contains(mx, my)): return False #insert simple path tracing check on the polygon here return True def bbox_contains( self, mx, my ): if ( not((mx>=self._boundingX) and (my>=self._boundingY) and (mx"+Constants.istrTitle+"") self.nameLabel.set_use_markup( True ) self.namePanel.pack_start( self.nameLabel, expand=False, padding=self.inset ) self.nameLabel.set_alignment(0, .5) self.nameTextfield = gtk.Entry(140) self.nameTextfield.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) self.nameTextfield.connect('changed', self._nameTextfieldEditedCb ) self.nameTextfield.set_alignment(0) self.nameTextfield.set_size_request( -1, self.controlBarHt-(self.inset*2) ) self.namePanel.pack_start(self.nameTextfield) self.photographerPanel = gtk.VBox(spacing=self.inset) self.infoBoxTopLeft.pack_start(self.photographerPanel, expand=False) photographerLabel = gtk.Label("" + Constants.istrRecorder + "") photographerLabel.set_use_markup( True ) self.photographerPanel.pack_start(photographerLabel, expand=False) photographerLabel.set_alignment(0, .5) photoNamePanel = gtk.HBox(spacing=self.inset) self.photographerPanel.pack_start(photoNamePanel) self.photoXoPanel = xoPanel() photoNamePanel.pack_start( self.photoXoPanel, expand=False ) self.photoXoPanel.set_size_request( 40, 40 ) self.photographerNameLabel = gtk.Label("") self.photographerNameLabel.set_alignment(0, .5) photoNamePanel.pack_start(self.photographerNameLabel) self.datePanel = gtk.HBox(spacing=self.inset) self.infoBoxTopLeft.pack_start(self.datePanel, expand=False) dateLabel = gtk.Label(""+Constants.istrDate+"") dateLabel.set_use_markup(True) self.datePanel.pack_start(dateLabel, expand=False) self.dateDateLabel = gtk.Label("") self.dateDateLabel.set_alignment(0, .5) self.datePanel.pack_start(self.dateDateLabel) self.tagsPanel = gtk.VBox(spacing=self.inset) tagsLabel = gtk.Label(""+Constants.istrTags+"") tagsLabel.set_use_markup(True) tagsLabel.set_alignment(0, .5) self.tagsPanel.pack_start(tagsLabel, expand=False) self.tagsBuffer = gtk.TextBuffer() self.tagsBuffer.connect('changed', self._tagsBufferEditedCb) self.tagsField = gtk.TextView(self.tagsBuffer) self.tagsField.set_size_request( 100, 100 ) self.tagsPanel.pack_start(self.tagsField, expand=True) self.infoBoxTopLeft.pack_start(self.tagsPanel, expand=True) infoBotBox = gtk.HBox() infoBotBox.set_size_request( -1, self.pgdh+self.inset ) iinfoBox.pack_start(infoBotBox, expand=False) thumbnailsEventBox = gtk.EventBox() thumbnailsEventBox.set_size_request( -1, self.thumbTrayHt ) thumbnailsBox = gtk.HBox( ) thumbnailsEventBox.add( thumbnailsBox ) self.thumbTray = HTray() self.thumbTray.set_size_request( -1, self.thumbTrayHt ) self.mainBox.pack_end( self.thumbTray, expand=False ) self.thumbTray.show() self.CENTER_SIZE_ALLOCATE_ID = self.centerBox.connect_after("size-allocate", self._centerSizeAllocateCb) self.ca.show_all() def _centerSizeAllocateCb( self, widget, event ): #initial setup of the panels self.centerBox.disconnect(self.CENTER_SIZE_ALLOCATE_ID) self.centerBoxPos = self.centerBox.translate_coordinates( self.ca, 0, 0 ) centerKid = self.centerBox.get_child() if (centerKid != None): self.centerBox.remove( centerKid ) self.centered = True self.setUp() def _mapEventCb( self, widget, event ): #when your parent window is ready, turn on the feed of live video self.liveVideoWindow.disconnect(self.MAP_EVENT_ID) self.mapped = True self.setUp() def setUp( self ): if (self.mapped and self.centered and not self.setup): self.setup = True #set correct window sizes self.setUpWindowsSizes() #listen for ctrl+c & game key buttons self.ca.connect('key-press-event', self._keyPressEventCb) #overlay widgets can go away after they've been on screen for a while self.HIDE_WIDGET_TIMEOUT_ID = 0 self.hiddenWidgets = False self.resetWidgetFadeTimer() self.showLiveVideoTags() if self.photoToolbar: self.photoToolbar.set_sensitive( True ) if self.videoToolbar: self.videoToolbar.set_sensitive( True ) self.audioToolbar.set_sensitive( True ) #initialize the app with the default thumbs self.ca.m.setupMode( self.ca.m.MODE, True ) gobject.idle_add( self.finalSetUp ) def finalSetUp( self ): self.LAUNCHING = False self.ACTIVE = self.ca.get_property( "visible" ) self.updateVideoComponents() if (self.ACTIVE): self.ca.glive.play() def setUpWindows( self ): #image windows self.windowStack = [] #live video windows self.livePhotoWindow = gtk.Window() self.livePhotoWindow.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.livePhotoWindow.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) self.addToWindowStack( self.livePhotoWindow, self.ca ) self.livePhotoCanvas = PhotoCanvas() self.livePhotoWindow.add(self.livePhotoCanvas) self.livePhotoWindow.connect("button_release_event", self._mediaClickedForPlayback) self.livePhotoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.livePhotoWindow.connect("visibility-notify-event", self._visibleNotifyCb) #video playback windows self.playOggWindow = PlayVideoWindow(Constants.colorBlack.gColor) self.addToWindowStack( self.playOggWindow, self.windowStack[len(self.windowStack)-1] ) #self.playOggWindow.set_gplay(self.ca.gplay) self.ca.gplay.window = self.playOggWindow self.playOggWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) self.playOggWindow.connect("button_release_event", self._mediaClickedForPlayback) self.playOggWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.playOggWindow.connect("visibility-notify-event", self._visibleNotifyCb) #border behind self.pipBgdWindow = gtk.Window() self.pipBgdWindow.modify_bg( gtk.STATE_NORMAL, Constants.colorWhite.gColor ) self.pipBgdWindow.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorWhite.gColor ) self.addToWindowStack( self.pipBgdWindow, self.windowStack[len(self.windowStack)-1] ) self.liveVideoWindow = LiveVideoWindow(Constants.colorBlack.gColor) self.addToWindowStack( self.liveVideoWindow, self.windowStack[len(self.windowStack)-1] ) self.liveVideoWindow.set_glive(self.ca.glive) self.liveVideoWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) self.liveVideoWindow.connect("button_release_event", self._liveButtonReleaseCb) self.liveVideoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.liveVideoWindow.connect("visibility-notify-event", self._visibleNotifyCb) self.slowLiveVideoWindow = SlowLiveVideoWindow(Constants.colorBlack.gColor) self.addToWindowStack( self.slowLiveVideoWindow, self.windowStack[len(self.windowStack)-1] ) self.slowLiveVideoWindow.set_glivex(self.ca.glivex) self.slowLiveVideoWindow.set_events(gtk.gdk.BUTTON_RELEASE_MASK) self.slowLiveVideoWindow.connect("button_release_event", self._liveButtonReleaseCb) self.slowLiveVideoWindow.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.slowLiveVideoWindow.connect("visibility-notify-event", self._visibleNotifyCb) self.recordWindow = RecordWindow(self) self.addToWindowStack( self.recordWindow, self.windowStack[len(self.windowStack)-1] ) self.progressWindow = ProgressWindow(self) self.addToWindowStack( self.progressWindow, self.windowStack[len(self.windowStack)-1] ) self.maxWindow = gtk.Window() self.maxWindow.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.maxWindow.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) maxButton = MaxButton(self) self.maxWindow.add( maxButton ) self.addToWindowStack( self.maxWindow, self.windowStack[len(self.windowStack)-1] ) self.scrubWindow = ScrubberWindow(self) self.addToWindowStack( self.scrubWindow, self.windowStack[len(self.windowStack)-1] ) self.infWindow = gtk.Window() self.infWindow.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.infWindow.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) infButton= InfButton(self) self.infWindow.add(infButton) self.addToWindowStack( self.infWindow, self.windowStack[len(self.windowStack)-1] ) self.hideAllWindows() self.MAP_EVENT_ID = self.liveVideoWindow.connect_after("map-event", self._mapEventCb) for i in range (0, len(self.windowStack)): # self.windowStack[i].add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) # self.windowStack[i].connect("visibility-notify-event", self._visibleNotifyCb) self.windowStack[i].show_all() def _visibleNotifyCb( self, widget, event ): if (self.LAUNCHING): return temp_ACTIVE = True if (event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED): if (not self.FULLSCREEN): if (widget == self.ca): temp_ACTIVE = False else: if (self.ca.m.MODE == Constants.MODE_PHOTO): if (not self.LIVEMODE and widget == self.livePhotoWindow): temp_ACTIVE = False if ( self.LIVEMODE and widget == self.liveVideoWindow): temp_ACTIVE = False if (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE and widget == self.playOggWindow): temp_ACTIVE = False if ( self.LIVEMODE and widget == self.liveVideoWindow): temp_ACTIVE = False if (temp_ACTIVE != self.ACTIVE): self.ACTIVE = temp_ACTIVE if (self.ACTIVE): self.ca.restartPipes() else: self.ca.stopPipes() def setUpWindowsSizes( self ): pipDim = self.getPipDim(False) eyeDim = self.getEyeDim(False) imgDim = self.getImgDim( False ) pgdDim = self.getPgdDim( False ) maxDim = self.getMaxDim( False ) prgDim = self.getPrgDim( False ) infDim = self.getInfDim( False ) self.livePhotoWindow.resize( imgDim[0], imgDim[1] ) self.pipBgdWindow.resize( pgdDim[0], pgdDim[1] ) self.liveVideoWindow.resize( imgDim[0], imgDim[1] ) self.playOggWindow.resize( imgDim[0], imgDim[1] ) self.recordWindow.resize( eyeDim[0], eyeDim[1] ) self.maxWindow.resize( maxDim[0], maxDim[1] ) self.progressWindow.resize( prgDim[0], prgDim[1] ) self.infWindow.resize( infDim[0], infDim[1] ) def _toolbarChangeCb( self, tbox, num ): if (num != 0) and (self.ca.m.RECORDING or self.ca.m.UPDATING): self.toolbox.set_current_toolbar(self.tbars[self.ca.m.MODE]) else: mode = [mode for mode, i in self.tbars.items() if i == num] if not mode: return if (mode[0] == Constants.MODE_PHOTO) and \ (self.ca.m.MODE != Constants.MODE_PHOTO): self.ca.m.doPhotoMode() elif(mode[0] == Constants.MODE_VIDEO) and \ (self.ca.m.MODE != Constants.MODE_VIDEO): self.ca.m.doVideoMode() elif(mode[0] == Constants.MODE_AUDIO) and \ (self.ca.m.MODE != Constants.MODE_AUDIO): self.ca.m.doAudioMode() def addToWindowStack( self, win, parent ): self.windowStack.append( win ) win.set_transient_for( parent ) win.set_type_hint( gtk.gdk.WINDOW_TYPE_HINT_DIALOG ) win.set_decorated( False ) win.set_focus_on_map( False ) win.set_property("accept-focus", False) win.props.destroy_with_parent = True def resetWidgetFadeTimer( self ): #only show the clutter when the mouse moves self.mx = -1 self.my = -1 self.hideWidgetsTimer = time.time() if (self.hiddenWidgets): self.showWidgets() self.hiddenWidgets = False #remove, then add self.doMouseListener( False ) if (self.HIDE_WIDGET_TIMEOUT_ID != 0): gobject.source_remove( self.HIDE_WIDGET_TIMEOUT_ID) self.HIDE_WIDGET_TIMEOUT_ID = gobject.timeout_add( 500, self._mouseMightaMovedCb ) def doMouseListener( self, listen ): if (listen): self.resetWidgetFadeTimer() else: if (self.HIDE_WIDGET_TIMEOUT_ID != None): if (self.HIDE_WIDGET_TIMEOUT_ID != 0): gobject.source_remove( self.HIDE_WIDGET_TIMEOUT_ID ) def hideWidgets( self ): self.moveWinOffscreen( self.maxWindow ) self.moveWinOffscreen( self.pipBgdWindow ) self.moveWinOffscreen( self.infWindow ) self.moveWinOffscreen( self.slowLiveVideoWindow ) if (self.FULLSCREEN): self.moveWinOffscreen( self.recordWindow ) self.moveWinOffscreen( self.progressWindow ) self.moveWinOffscreen( self.scrubWindow ) if (self.ca.m.MODE == Constants.MODE_PHOTO): if (not self.LIVEMODE): self.moveWinOffscreen( self.liveVideoWindow ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE): self.moveWinOffscreen( self.liveVideoWindow ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): if (not self.LIVEMODE): self.moveWinOffscreen( self.liveVideoWindow ) self.LAST_MODE = -1 def _mouseMightaMovedCb( self ): x, y = self.ca.get_pointer() passedTime = 0 if (x != self.mx or y != self.my): self.hideWidgetsTimer = time.time() if (self.hiddenWidgets): self.showWidgets() self.hiddenWidgets = False else: passedTime = time.time() - self.hideWidgetsTimer if (self.ca.m.RECORDING): self.hideWidgetsTimer = time.time() passedTime = 0 if (passedTime >= 3): if (not self.hiddenWidgets): if (self.mouseInWidget(x,y)): self.hideWidgetsTimer = time.time() elif (self.RECD_INFO_ON): self.hideWidgetsTimer = time.time() elif (self.UPDATE_TIMER_ID != 0): self.hideWidgetsTimer = time.time() else: self.hideWidgets() self.hiddenWidgets = True self.mx = x self.my = y return True def mouseInWidget( self, mx, my ): if (self.ca.m.MODE != Constants.MODE_AUDIO): if (self.inWidget( mx, my, self.getLoc("max", self.FULLSCREEN), self.getDim("max", self.FULLSCREEN))): return True if (not self.LIVEMODE): if (self.inWidget( mx, my, self.getLoc("pgd", self.FULLSCREEN), self.getDim("pgd", self.FULLSCREEN))): return True if (self.inWidget( mx, my, self.getLoc("inb", self.FULLSCREEN), self.getDim("inb", self.FULLSCREEN))): return True if (self.inWidget( mx, my, self.getLoc("prg", self.FULLSCREEN), self.getDim("prg", self.FULLSCREEN))): return True if (self.inWidget( mx, my, self.getLoc("inf", self.FULLSCREEN), self.getDim("inf", self.FULLSCREEN))): return True if (self.LIVEMODE): if (self.inWidget( mx, my, self.getLoc("eye", self.FULLSCREEN), self.getDim("eye", self.FULLSCREEN))): return True return False def _mediaClickedForPlayback(self, widget, event): if (not self.LIVEMODE): if (self.shownRecd != None): if (self.ca.m.MODE != Constants.MODE_PHOTO): self.showThumbSelection( self.shownRecd ) def inWidget( self, mx, my, loc, dim ): if ( (mx > loc[0]) and (my > loc[1]) ): if ( (mx < loc[0]+dim[0]) and (my < loc[1]+dim[1]) ): return True def _nameTextfieldEditedCb(self, widget): if (self.shownRecd != None): if (self.nameTextfield.get_text() != self.shownRecd.title): self.shownRecd.setTitle( self.nameTextfield.get_text() ) def _tagsBufferEditedCb(self, widget): if (self.shownRecd != None): txt = self.tagsBuffer.get_text( self.tagsBuffer.get_start_iter(), self.tagsBuffer.get_end_iter() ) if (txt != self.shownRecd.tags): self.shownRecd.setTags( txt ) def _keyPressEventCb( self, widget, event): #todo: trac #4144 self.resetWidgetFadeTimer() #we listen here for CTRL+C events and game keys, and pass on events to gtk.Entry fields keyname = gtk.gdk.keyval_name(event.keyval) if (keyname == 'KP_Page_Up'): #O, up if (self.LIVEMODE): if (not self.ca.m.UPDATING): self.doShutter() else: if (self.COUNTINGDOWN): self.doShutter() else: if (self.ca.m.MODE == Constants.MODE_PHOTO): self.resumeLiveVideo() else: self.resumePlayLiveVideo() elif (keyname == 'KP_Page_Down'): #x, down if (not self.ca.m.UPDATING and not self.ca.m.RECORDING): self.ca.m.showLastThumb() elif (keyname == 'KP_Home'): #square, left if (not self.ca.m.UPDATING and not self.ca.m.RECORDING and not self.LIVEMODE): self.ca.m.showPrevThumb( self.shownRecd ) elif (keyname == 'KP_End'): #check, right if (not self.ca.m.UPDATING and not self.ca.m.RECORDING and not self.LIVEMODE): self.ca.m.showNextThumb( self.shownRecd ) elif (keyname == 'c' and event.state == gtk.gdk.CONTROL_MASK): if (self.shownRecd != None): self.copyToClipboard( self.shownRecd ) elif (keyname == 'Escape'): if (self.FULLSCREEN): self.FULLSCREEN = False if (self.RECD_INFO_ON): self.infoButtonClicked() else: self.updateVideoComponents() elif (keyname == 'i' and event.state == gtk.gdk.CONTROL_MASK): if (not self.LIVEMODE): self.infoButtonClicked() return False def copyToClipboard( self, recd ): if (recd.isClipboardCopyable( )): tmpImgPath = self.doClipboardCopyStart( recd ) gtk.Clipboard().set_with_data( [('text/uri-list', 0, 0)], self._clipboardGetFuncCb, self._clipboardClearFuncCb, tmpImgPath ) return True def doClipboardCopyStart( self, recd ): imgPath_s = recd.getMediaFilepath() if (imgPath_s == None): record.Record.log.error("doClipboardCopyStart: imgPath_s==None") return None tmpImgPath = recd.getMediaFilepath() tmpImgPath = utils.getUniqueFilepath(tmpImgPath, 0) shutil.copyfile( imgPath_s, tmpImgPath ) return tmpImgPath def doClipboardCopyCopy( self, tmpImgPath, selection_data ): tmpImgUri = "file://" + tmpImgPath selection_data.set( "text/uri-list", 8, tmpImgUri ) def doClipboardCopyFinish( self, tmpImgPath ): if (tmpImgPath != None): if (os.path.exists(tmpImgPath)): os.remove( tmpImgPath ) tmpImgPath = None def _clipboardGetFuncCb( self, clipboard, selection_data, info, data): self.doClipboardCopyCopy( data, selection_data ) def _clipboardClearFuncCb( self, clipboard, data): self.doClipboardCopyFinish( data ) def showPhoto( self, recd ): pixbuf = self.getPhotoPixbuf( recd ) if (pixbuf != None): #self.shownRecd = recd img = hippo.cairo_surface_from_gdk_pixbuf(pixbuf) self.livePhotoCanvas.setImage( img ) self.LIVEMODE = False self.updateVideoComponents() self.showRecdMeta(recd) def getPhotoPixbuf( self, recd ): pixbuf = None downloading = self.ca.requestMeshDownload(recd) self.MESHING = downloading if (not downloading): self.progressWindow.updateProgress(0, "") imgPath = recd.getMediaFilepath() if (not imgPath == None): if ( os.path.isfile(imgPath) ): pixbuf = gtk.gdk.pixbuf_new_from_file(imgPath) if (pixbuf == None): #maybe it is not downloaded from the mesh yet... #but we can show the low res thumb in the interim pixbuf = recd.getThumbPixbuf() return pixbuf def showLiveVideoTags( self ): self.shownRecd = None self.livePhotoCanvas.setImage( None ) self.nameTextfield.set_text("") self.tagsBuffer.set_text("") self.scrubWindow.removeCallbacks() self.scrubWindow.reset() self.MESHING = False self.progressWindow.updateProgress( 0, "" ) self.resetWidgetFadeTimer( ) def updateButtonSensitivities( self ): switchStuff = ((not self.ca.m.UPDATING) and (not self.ca.m.RECORDING)) if self.photoToolbar: self.photoToolbar.set_sensitive( switchStuff ) if self.videoToolbar: self.videoToolbar.set_sensitive( switchStuff ) self.audioToolbar.set_sensitive( switchStuff ) if (not self.COUNTINGDOWN): if (self.ca.m.UPDATING): self.ca.ui.setWaitCursor( self.ca.window ) for i in range (0, len(self.windowStack)): self.ca.ui.setWaitCursor( self.windowStack[i].window ) else: self.ca.ui.setDefaultCursor( self.ca.window ) for i in range (0, len(self.windowStack)): self.ca.ui.setDefaultCursor( self.windowStack[i].window ) #display disc is full messages self.ca.m.updateXoFullStatus() self.recordWindow.displayDiscFullText(self.ca.m.FULL) if (self.ca.m.FULL): self.recordWindow.shutterButton.set_sensitive( False, True) fullMessage = Constants.istrYourDiskIsFull % {"1":Constants.istrJournal} self.progressWindow.updateProgress( 1, fullMessage, "gray" ) else: self.recordWindow.shutterButton.set_sensitive( not self.ca.m.UPDATING, False ) if (self.ca.m.RECORDING): self.recordWindow.shutterButton.doRecordButton() else: self.recordWindow.shutterButton.doNormalButton() kids = self.thumbTray.get_children() for i in range (0, len(kids)): if (self.ca.m.UPDATING or self.ca.m.RECORDING): if (kids[i].getButtClickedId() != 0): kids[i].disconnect( kids[i].getButtClickedId() ) kids[i].setButtClickedId(0) else: if (kids[i].getButtClickedId() == 0): BUTT_CLICKED_ID = kids[i].connect( "clicked", self._thumbClicked, kids[i].recd ) kids[i].setButtClickedId(BUTT_CLICKED_ID) def hideAllWindows( self ): for i in range (0, len(self.windowStack)): self.moveWinOffscreen( self.windowStack[i] ) def _liveButtonReleaseCb(self, widget, event): self.ca.gplay.stop() self.ca.glivex.stop() self.ca.glive.play() self.resumeLiveVideo() def resumeLiveVideo( self ): self.livePhotoCanvas.setImage( None ) bottomKid = self.bottomCenter.get_child() if (bottomKid != None): self.bottomCenter.remove( bottomKid ) self.RECD_INFO_ON = False if (not self.LIVEMODE): self.ca.m.setUpdating(True) self.ca.gplay.stop() self.showLiveVideoTags() self.LIVEMODE = True self.updateVideoComponents() self.ca.m.setUpdating(False) def _playLiveButtonReleaseCb(self, widget, event): self.resumePlayLiveVideo() def resumePlayLiveVideo( self ): self.ca.gplay.stop() self.RECD_INFO_ON = False #if you are big on the screen, don't go changing anything, ok? if (self.LIVEMODE): return self.showLiveVideoTags() self.LIVEMODE = True self.startLiveVideo( False ) self.updateVideoComponents() def recordVideo( self ): self.ca.glive.startRecordingVideo(self.videoToolbar.getQuality()) self.beginRecordingTimer( ) def recordAudio( self ): self.ca.glive.startRecordingAudio( ) self.beginRecordingTimer( ) def beginRecordingTimer( self ): self.recTime = time.time() self.UPDATE_DURATION_ID = gobject.timeout_add( 500, self._updateDurationCb ) def _updateDurationCb( self ): passedTime = time.time() - self.recTime duration = 10.0 if (self.ca.m.MODE == Constants.MODE_VIDEO): duration = self.videoToolbar.getDuration()+0.0 elif (self.ca.m.MODE == Constants.MODE_AUDIO): duration = self.audioToolbar.getDuration()+0.0 if (passedTime >= duration ): self.completeCountdown() self.progressWindow.updateProgress( 1, Constants.istrFinishedRecording ) if (self.ca.m.RECORDING): gobject.idle_add( self.doShutter ) return False else: secsRemaining = duration - passedTime if (secsRemaining >= 60): mins = int( secsRemaining/60 ) secs = int( secsRemaining%60 ) timeRemainStr = istrMinutes(mins) + ', ' + istrSeconds(secs) else: timeRemainStr = istrSeconds(secsRemaining) self.progressWindow.updateProgress( passedTime/duration, Constants.istrRemaining + " " + timeRemainStr ) return True def completeCountdown( self ): if (self.UPDATE_DURATION_ID != 0): gobject.source_remove( self.UPDATE_DURATION_ID ) self.UPDATE_DURATION_ID = 0 def updateModeChange(self): #this is called when a menubar button is clicked self.LIVEMODE = True self.FULLSCREEN = False self.RECD_INFO_ON = False self.MESHING = False self.progressWindow.updateProgress(0, "") #set up the x & xv x-ition (if need be) self.ca.gplay.stop() self.startLiveVideo( True ) bottomKid = self.bottomCenter.get_child() if (bottomKid != None): self.bottomCenter.remove( bottomKid ) self.doMouseListener( True ) self.showLiveVideoTags() self.LAST_MODE = -1 #force an update self.updateVideoComponents() self.resetWidgetFadeTimer() def startLiveVideo(self, force): #We need to know which window and which pipe here #if returning from another activity, active won't be false and needs to be to get started if (self.ca.glive.window == self.liveVideoWindow and self.ca.props.active and not force): return self.liveVideoWindow.set_glive(self.ca.glive) self.ca.glivex.stop() self.ca.glive.play() def doFullscreen( self ): self.FULLSCREEN = not self.FULLSCREEN self.updateVideoComponents() def moveWinOffscreen( self, win ): #we move offscreen to resize or else we get flashes on screen, and setting hide() doesn't allow resize & moves offW = (gtk.gdk.screen_width() + 100) offH = (gtk.gdk.screen_height() + 100) self.smartMove(win, offW, offH) def setImgLocDim( self, win ): imgDim = self.getImgDim( self.FULLSCREEN ) self.smartResize( win, imgDim[0], imgDim[1] ) imgLoc = self.getImgLoc( self.FULLSCREEN ) self.smartMove( win, imgLoc[0], imgLoc[1] ) def setPrgLocDim( self, win ): prgDim = self.getPrgDim( self.FULLSCREEN ) self.smartResize( win, prgDim[0], prgDim[1] ) prgLoc = self.getPrgLoc( self.FULLSCREEN ) self.smartMove( win, prgLoc[0], prgLoc[1] ) def setTmrLocDim( self, win ): tmrDim = self.getTmrDim( self.FULLSCREEN ) self.smartResize( win, tmrDim[0], tmrDim[1] ) tmrLoc = self.getTmrLoc( self.FULLSCREEN ) self.smartMove( win, tmrLoc[0], tmrLoc[1] ) def setScrLocDim( self, win ): scrDim = self.getScrDim( self.FULLSCREEN ) self.smartResize( win, scrDim[0], scrDim[1] ) scrLoc = self.getScrLoc( self.FULLSCREEN ) self.smartMove( win, scrLoc[0], scrLoc[1] ) def setInfLocDim( self, win ): infDim = self.getInfDim( self.FULLSCREEN ) self.smartResize( win, infDim[0], infDim[1] ) infLoc = self.getInfLoc( self.FULLSCREEN ) self.smartMove( win, infLoc[0], infLoc[1] ) def getScrDim( self, full ): if (full): return [gtk.gdk.screen_width()-(self.inset+self.pgdw+self.inset+self.inset), self.controlBarHt] else: return [self.vw, self.controlBarHt] def getScrLoc( self, full ): if (full): return [(self.inset+self.pgdw+self.inset), gtk.gdk.screen_height()-(self.inset+self.controlBarHt)] else: return [self.centerBoxPos[0], self.centerBoxPos[1]+self.vh] def getImgDim( self, full ): if (full): return [gtk.gdk.screen_width(), gtk.gdk.screen_height()] else: return [self.vw, self.vh] def getImgLoc( self, full ): if (full): return[0, 0] else: return[self.centerBoxPos[0], self.centerBoxPos[1]] def getTmrLoc( self, full ): if (not full): return [self.centerBoxPos[0], self.centerBoxPos[1]+self.vh] else: return [self.inset, gtk.gdk.screen_height()-(self.inset+self.controlBarHt)] def getTmrDim( self, full ): if (not full): return [self.vw, self.controlBarHt] else: return [gtk.gdk.screen_width()-(self.inset+self.inset), self.controlBarHt] def setPipLocDim( self, win ): self.smartResize( win, self.pipw, self.piph ) loc = self.getPipLoc( self.FULLSCREEN ) self.smartMove( win, loc[0], loc[1] ) def getPipLoc( self, full ): if (full): return [self.inset+self.__class__.dim_PIP_BORDER, gtk.gdk.screen_height()-(self.inset+self.piph+self.__class__.dim_PIP_BORDER)] else: return [self.centerBoxPos[0]+self.inset+self.__class__.dim_PIP_BORDER, (self.centerBoxPos[1]+self.vh)-(self.inset+self.piph+self.__class__.dim_PIP_BORDER)] def setPipBgdLocDim( self, win ): pgdLoc = self.getPgdLoc( self.FULLSCREEN ) self.smartMove( win, pgdLoc[0], pgdLoc[1] ) def getPgdLoc( self, full ): if (full): return [self.inset, gtk.gdk.screen_height()-(self.inset+self.pgdh)] else: return [self.centerBoxPos[0]+self.inset, (self.centerBoxPos[1]+self.vh)-(self.inset+self.pgdh)] def setMaxLocDim( self, win ): maxLoc = self.getMaxLoc( self.FULLSCREEN ) self.smartMove( win, maxLoc[0], maxLoc[1] ) def getMaxLoc( self, full ): if (full): return [gtk.gdk.screen_width()-(self.maxw+self.inset), self.inset] else: return [(self.centerBoxPos[0]+self.vw)-(self.inset+self.maxw), self.centerBoxPos[1]+self.inset] def getInfLoc( self, full ): if (full): return [gtk.gdk.screen_width()+100,gtk.gdk.screen_height()+100 ] else: dim = self.getInfDim(self.FULLSCREEN) return [(self.centerBoxPos[0]+self.vw)-dim[0], (self.centerBoxPos[1]+self.vh)-dim[1]] def setEyeLocDim( self, win ): dim = self.getEyeDim( self.FULLSCREEN ) self.smartResize( win, dim[0], dim[1] ) loc = self.getEyeLoc( self.FULLSCREEN ) self.smartMove( win, loc[0], loc[1] ) def getEyeLoc( self, full ): if (not full): return [self.centerBoxPos[0], self.centerBoxPos[1]+self.vh] else: return [self.inset, gtk.gdk.screen_height()-(self.inset+self.controlBarHt)] def getEyeDim( self, full ): if (not full): if (self.ca.m.MODE == Constants.MODE_PHOTO): return [self.vw, self.controlBarHt] else: return [self.recordButtWd, self.controlBarHt] else: if (self.ca.m.MODE == Constants.MODE_PHOTO): return [gtk.gdk.screen_width()-(self.inset*2), self.controlBarHt] else: return [self.recordButtWd, self.controlBarHt] def getInbLoc( self, full ): return [(self.centerBoxPos[0]+self.vw)-(self.inset+self.letterBoxVW), self.centerBoxPos[1]+self.inset] def setInbLocDim( self, win ): dim = self.getInbDim( self.FULLSCREEN ) self.smartResize( win, dim[0], dim[1] ) loc = self.getInbLoc(self.FULLSCREEN) self.smartMove( win, loc[0], loc[1] ) def smartResize( self, win, w, h ): winSize = win.get_size() if ( (winSize[0] != w) or (winSize[1] != h) ): win.resize( w, h ) return True else: return False def smartMove( self, win, x, y ): winLoc = win.get_position() if ( (winLoc[0] != x) or (winLoc[1] != y) ): win.move( x, y ) return True else: return False def getDim( self, pos, full ): if (pos == "pip"): return self.getPipDim( full ) elif(pos == "pgd"): return self.getPgdDim( full ) elif(pos == "max"): return self.getMaxDim( full ) elif(pos == "img"): return self.getImgDim( full ) elif(pos == "eye"): return self.getEyeDim( full ) elif(pos == "inb"): return self.getInbDim( full ) elif(pos == "prg"): return self.getPrgDim( full ) elif(pos == "inf"): return self.getInfDim( full ) def getMaxDim( self, full ): return [self.maxw, self.maxh] def getInfDim( self, full ): return [75, 75] def getPipDim( self, full ): return [self.pipw, self.piph] def getPgdDim( self, full ): return [self.pgdw, self.pgdh] def getInbDim( self, full ): return [self.letterBoxVW, self.letterBoxVH] def getPrgDim( self, full ): if (not full): return [self.vw-self.recordButtWd, self.controlBarHt] else: return [gtk.gdk.screen_width()-(self.inset+self.inset+self.recordButtWd), self.controlBarHt] def getPrgLoc( self, full ): if (not full): return [self.centerBoxPos[0]+self.recordButtWd, self.centerBoxPos[1]+self.vh] else: return [self.inset+self.recordButtWd, gtk.gdk.screen_height()-(self.inset+self.controlBarHt)] def getLoc( self, pos, full ): if (pos == "pip"): return self.getPipLoc( full ) elif(pos == "pgd"): return self.getPgdLoc( full ) elif(pos == "max"): return self.getMaxLoc( full ) elif(pos == "img"): return self.getImgLoc( full ) elif(pos == "eye"): return self.getEyeLoc( full ) elif(pos == "inb"): return self.getInbLoc( full ) elif(pos == "prg"): return self.getPrgLoc( full ) elif(pos == "inf"): return self.getInfLoc( full ) def _shutterClickCb( self, arg ): self.doShutter() def doShutter( self ): if (self.UPDATE_TIMER_ID == 0): if (not self.ca.m.RECORDING): self.ca.m.updateXoFullStatus() if (self.ca.m.FULL): self.updateButtonSensitivities() return #there is no update timer running, so we need to find out if there is a timer needed timerTime = 0 if (self.ca.m.MODE == Constants.MODE_PHOTO): timerTime = self.photoToolbar.getTimer() elif (self.ca.m.MODE == Constants.MODE_VIDEO): timerTime = self.videoToolbar.getTimer() elif (self.ca.m.MODE == Constants.MODE_AUDIO): timerTime = self.audioToolbar.getTimer() if (timerTime > 0): self.timerStartTime = time.time() self.UPDATE_TIMER_ID = gobject.timeout_add( 500, self._updateTimerCb ) self.COUNTINGDOWN = True self.ca.m.setUpdating(True) else: self.clickShutter() else: #or, if there is no countdown, it might be because we are recording self.clickShutter() else: #we're timing down something, but interrupted by user click or the timer completing self.completeTimer() gobject.idle_add( self.clickShutter ) def completeTimer( self ): self.COUNTINGDOWN = False self.ca.m.setUpdating(False) self.recordWindow.updateCountdown(-1) self.progressWindow.updateProgress( 1, "" ) gobject.source_remove( self.UPDATE_TIMER_ID ) self.UPDATE_TIMER_ID = 0 def _updateTimerCb( self ): nowTime = time.time() passedTime = nowTime - self.timerStartTime timerTime = 0 if (self.ca.m.MODE == Constants.MODE_PHOTO): timerTime = self.photoToolbar.getTimer() elif (self.ca.m.MODE == Constants.MODE_VIDEO): timerTime = self.videoToolbar.getTimer() elif (self.ca.m.MODE == Constants.MODE_AUDIO): timerTime = self.audioToolbar.getTimer() if (passedTime >= timerTime): self.COUNTINGDOWN = False self.ca.m.setUpdating(False) self.doShutter() return False else: secsRemaining = timerTime-passedTime timeRemainStr = istrSeconds(secsRemaining) self.progressWindow.updateProgress( passedTime/timerTime, Constants.istrRemaining + " " + timeRemainStr) self.recordWindow.updateCountdown( int(secsRemaining) ) return True def clickShutter( self ): if self.ca.m.RECORDING: self.ca.m.doShutter() aplay.play(Constants.soundClick) else: aplay.play(Constants.soundClick, self.ca.m.doShutter) def updateVideoComponents( self ): logger.debug('updateVideoComponents: MODE=(%s,%s) FULLSCREEN=(%s,%s)' \ ' LIVE=(%s,%s) RECD_INFO=(%s,%s) TRANSCODING=(%s,%s)' \ ' MESHING=(%s,%s) windowStack=%s' \ % (self.LAST_MODE, self.ca.m.MODE, self.LAST_FULLSCREEN, self.FULLSCREEN, self.LAST_LIVE, self.LIVEMODE, self.LAST_RECD_INFO, self.RECD_INFO_ON, self.LAST_TRANSCODING, self.TRANSCODING, self.LAST_MESHING, self.MESHING, len(self.windowStack))) if ( (self.LAST_MODE == self.ca.m.MODE) and (self.LAST_FULLSCREEN == self.FULLSCREEN) and (self.LAST_LIVE == self.LIVEMODE) and (self.LAST_RECD_INFO == self.RECD_INFO_ON) and (self.LAST_TRANSCODING == self.TRANSCODING) and (self.LAST_MESHING == self.MESHING) ): return #something's changing so start counting anew self.resetWidgetFadeTimer() pos = [] if (self.RECD_INFO_ON and not self.TRANSCODING): if (self.ca.m.MODE == Constants.MODE_PHOTO): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) pos.append({"position":"inb", "window":self.livePhotoWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) pos.append({"position":"inb", "window":self.playOggWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) pos.append({"position":"inb", "window":self.livePhotoWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) elif (not self.RECD_INFO_ON and not self.TRANSCODING): if (self.ca.m.MODE == Constants.MODE_PHOTO): if (self.LIVEMODE): pos.append({"position":"img", "window":self.liveVideoWindow} ) pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) else: pos.append({"position":"img", "window":self.livePhotoWindow} ) pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"tmr", "window":self.progressWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (self.LIVEMODE): pos.append({"position":"img", "window":self.liveVideoWindow} ) pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) pos.append({"position":"prg", "window":self.progressWindow} ) else: pos.append({"position":"img", "window":self.playOggWindow} ) pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"scr", "window":self.scrubWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"tmr", "window":self.progressWindow} ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): if (self.LIVEMODE): pos.append({"position":"img", "window":self.liveVideoWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) pos.append({"position":"prg", "window":self.progressWindow} ) else: pos.append({"position":"img", "window":self.livePhotoWindow} ) pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) if (not self.MESHING): pos.append({"position":"scr", "window":self.scrubWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"tmr", "window":self.progressWindow} ) elif (self.TRANSCODING): pos.append({"position":"tmr", "window":self.progressWindow} ) for i in range (0, len(self.windowStack)): self.windowStack[i].hide_all() self.hideAllWindows() self.updatePos( pos ) for i in range (0, len(self.windowStack)): self.windowStack[i].show_all() self.LAST_MODE = self.ca.m.MODE self.LAST_FULLSCREEN = self.FULLSCREEN self.LAST_LIVE = self.LIVEMODE self.LAST_RECD_INFO = self.RECD_INFO_ON self.LAST_TRANSCODING = self.TRANSCODING self.LAST_MESHING = self.MESHING def debugWindows( self ): for i in range (0, len(self.windowStack)): print self.windowStack[i], self.windowStack[i].get_size(), self.windowStack[i].get_position() def showWidgets( self ): pos = [] if (self.ca.m.MODE == Constants.MODE_PHOTO): if (not self.LIVEMODE): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) elif (self.ca.m.MODE == Constants.MODE_VIDEO): if (not self.LIVEMODE): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.slowLiveVideoWindow} ) if (not self.MESHING): pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"scr", "window":self.scrubWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"max", "window":self.maxWindow} ) pos.append({"position":"eye", "window":self.recordWindow} ) pos.append({"position":"prg", "window":self.progressWindow} ) elif (self.ca.m.MODE == Constants.MODE_AUDIO): if (not self.LIVEMODE): pos.append({"position":"pgd", "window":self.pipBgdWindow} ) pos.append({"position":"pip", "window":self.liveVideoWindow} ) if (not self.MESHING): pos.append({"position":"scr", "window":self.scrubWindow} ) pos.append({"position":"inf", "window":self.infWindow} ) else: pos.append({"position":"eye", "window":self.recordWindow} ) pos.append({"position":"prg", "window":self.progressWindow} ) self.updatePos( pos ) def updatePos( self, pos ): #now move those pieces where they need to be... for i in range (0, len(self.windowStack)): for j in range (0, len(pos)): if (self.windowStack[i] == pos[j]["window"]): if (pos[j]["position"] == "img"): self.setImgLocDim( pos[j]["window"] ) elif (pos[j]["position"] == "max"): self.setMaxLocDim( pos[j]["window"] ) elif (pos[j]["position"] == "pip"): self.setPipLocDim( pos[j]["window"] ) elif (pos[j]["position"] == "pgd"): self.setPipBgdLocDim( pos[j]["window"] ) elif (pos[j]["position"] == "eye"): self.setEyeLocDim( pos[j]["window"] ) elif (pos[j]["position"] == "inb"): self.setInbLocDim( pos[j]["window"]) elif (pos[j]["position"] == "prg"): self.setPrgLocDim( pos[j]["window"]) elif (pos[j]["position"] == "tmr"): self.setTmrLocDim( pos[j]["window"]) elif (pos[j]["position"] == "scr"): self.setScrLocDim( pos[j]["window"]) elif (pos[j]["position"] == "inf"): self.setInfLocDim( pos[j]["window"]) def removeThumb( self, recd ): kids = self.thumbTray.get_children() for i in range (0, len(kids)): if (kids[i].recd == recd): self.thumbTray.remove_item(kids[i]) kids[i].cleanUp() kids[i].disconnect( kids[i].getButtClickedId() ) kids[i].setButtClickedId(0) def addThumb( self, recd, forceScroll ): butt = RecdButton( self, recd ) BUTT_CLICKED_ID = butt.connect( "clicked", self._thumbClicked, recd ) butt.setButtClickedId(BUTT_CLICKED_ID) self.thumbTray.add_item( butt, len(self.thumbTray.get_children()) ) butt.show() if (forceScroll): self.thumbTray.scroll_to_end() def removeThumbs( self ): kids = self.thumbTray.get_children() for i in range (0, len(kids)): self.thumbTray.remove_item(kids[i]) kids[i].cleanUp() if (kids[i].getButtClickedId() != 0): kids[i].disconnect( kids[i].getButtClickedId() ) def _thumbClicked( self, button, recd ): self.showThumbSelection( recd ) def infoButtonClicked( self ): self.RECD_INFO_ON = not self.RECD_INFO_ON centerKid = self.centerBox.get_child() if (centerKid != None): self.centerBox.remove( centerKid ) bottomKid = self.bottomCenter.get_child() if (bottomKid != None): self.bottomCenter.remove( bottomKid ) if (not self.RECD_INFO_ON): if (self.ca.m.MODE == Constants.MODE_PHOTO): self.bottomCenter.add( self.namePanel ) self.bottomCenter.show_all( ) else: self.centerBox.add( self.infoBox ) self.centerBox.show_all( ) self.bottomCenter.add( self.namePanel ) self.bottomCenter.show_all( ) self.updateVideoComponents( ) def showMeshRecd( self, recd ): record.Record.log.debug('showMeshRecd: heres the downloaded recd to display...') #if this thumbnail is being shown, add the option to copy it now kids = self.thumbTray.get_children() for i in range (0, len(kids)): if (kids[i].recd == recd): kids[i].addCopyMenuItem() if (recd == self.shownRecd): record.Record.log.debug('showMeshRecd: and since were still looking at same recd, here it is!') self.showThumbSelection( recd ) def updateMeshProgress( self, progressMade, recd ): self.resetWidgetFadeTimer() if (self.shownRecd != recd): if (self.shownRecd == None): type = Constants.mediaTypes[recd.type][Constants.keyIstr] if (progressMade): msg = Constants.istrDownloadingFrom% {"1":type, "2":recd.meshDownloadingFromNick} self.progressWindow.updateProgress(recd.meshDownlodingPercent, msg) else: type = Constants.mediaTypes[recd.type][Constants.keyIstr] if (progressMade): msg = Constants.istrDownloadingFrom% {"1":type, "2":recd.meshDownloadingFromNick} self.progressWindow.updateProgress(recd.meshDownlodingPercent, msg) else: type = Constants.mediaTypes[recd.type][Constants.keyIstr] msg = Constants.istrCannotDownload % {"1":type} self.progressWindow.updateProgress(0, msg) def showThumbSelection( self, recd ): lastRecd = self.shownRecd self.shownRecd = recd #do we need to know the type, since we're showing based on the mode of the app? if (recd.type == Constants.TYPE_PHOTO): self.showPhoto( recd ) elif (recd.type == Constants.TYPE_VIDEO): self.showVideo( recd ) elif (recd.type == Constants.TYPE_AUDIO): self.showAudio( recd ) if (self.shownRecd != lastRecd): self.photoXoPanel.updateXoColors(self.shownRecd.colorStroke.hex, self.shownRecd.colorFill.hex) bottomKid = self.bottomCenter.get_child() if (bottomKid != None): self.bottomCenter.remove( bottomKid ) if (recd.type == Constants.TYPE_PHOTO): self.bottomCenter.add( self.namePanel ) elif (recd.type == Constants.TYPE_VIDEO or recd.type == Constants.TYPE_AUDIO): if (self.RECD_INFO_ON): self.bottomCenter.add( self.namePanel ) self.bottomCenter.show_all() self.resetWidgetFadeTimer() def showAudio( self, recd ): self.LIVEMODE = False #if (recd != self.shownRecd): pixbuf = recd.getAudioImagePixbuf() img = hippo.cairo_surface_from_gdk_pixbuf(pixbuf) self.livePhotoCanvas.setImage( img ) #self.shownRecd = recd self.showRecdMeta(recd) downloading = self.ca.requestMeshDownload(recd) self.MESHING = downloading record.Record.log.debug("showAudio: downloading->" + str(downloading)) if (not downloading): self.progressWindow.updateProgress(0, "") mediaFilepath = recd.getMediaFilepath( ) record.Record.log.debug("showAudio: mediaFilepath->" + str(mediaFilepath)) if (mediaFilepath != None): videoUrl = "file://" + str( mediaFilepath ) self.ca.gplay.setLocation(videoUrl) self.scrubWindow.doPlay() self.updateVideoComponents() def showVideo( self, recd ): logger.debug('showVideo') downloading = self.ca.requestMeshDownload(recd) if (not downloading): self.progressWindow.updateProgress(0, "") self.MESHING = downloading self.LIVEMODE = False #self.shownRecd = recd self.updateVideoComponents() gobject.idle_add( self.showVideo2, recd, downloading ) def showVideo2( self, recd, downloading ): self.showRecdMeta(recd) ableToShowVideo = False if (not downloading): mediaFilepath = recd.getMediaFilepath() if (mediaFilepath != None): logger.debug('showVideo2 file=%s' % mediaFilepath) self.ca.glive.stop() self.ca.glivex.play() videoUrl = "file://" + str( mediaFilepath ) self.ca.gplay.setLocation(videoUrl) self.scrubWindow.doPlay() ableToShowVideo = True if (not ableToShowVideo): # FIXME is this correct? self.ca.glive.stop() self.ca.glivex.play() thumbFilepath = recd.getThumbFilepath( ) logger.debug('showVideo3 file=%s' % thumbFilepath) thumbUrl = "file://" + str( thumbFilepath ) self.ca.gplay.setLocation(thumbUrl) def deleteThumbSelection( self, recd ): self.ca.m.deleteRecorded( recd ) self.ca.glive.play() self.removeThumb( recd ) self.removeIfSelectedRecorded( recd ) def removeIfSelectedRecorded( self, recd ): if (recd == self.shownRecd): if (recd.type == Constants.TYPE_PHOTO): self.livePhotoCanvas.setImage( None ) elif (recd.type == Constants.TYPE_VIDEO): self.ca.gplay.stop() self.startLiveVideo( False ) elif (recd.type == Constants.TYPE_AUDIO): self.livePhotoCanvas.setImage( None ) self.startLiveAudio() self.RECD_INFO_ON = False self.LIVEMODE = True self.updateVideoComponents() self.showLiveVideoTags() def startLiveAudio( self ): self.ca.m.setUpdating(True) self.ca.gplay.stop() self.liveVideoWindow.set_glive(self.ca.glive) self.showLiveVideoTags() self.LIVEMODE = True self.updateVideoComponents() self.ca.m.setUpdating(False) def showPostProcessGfx( self, show ): #not self.FULLSCREEN centerKid = self.centerBox.get_child() if (centerKid != None): self.centerBox.remove( centerKid ) if ( show ): self.centerBox.add( self.backgdCanvasBox ) self.centerBox.show_all() else: self.backgdCanvas.setImage( None ) def setPostProcessPixBuf( self, pixbuf ): if (pixbuf.get_width()>self.__class__.dim_THUMB_WIDTH): pixbuf = pixbuf.scale_simple(self.__class__.dim_THUMB_WIDTH, self.__class__.dim_THUMB_HEIGHT, gtk.gdk.INTERP_NEAREST) pixbuf = utils.grayScalePixBuf(pixbuf, True) img = hippo.cairo_surface_from_gdk_pixbuf(pixbuf) self.backgdCanvas.setImage(img) def showRecdMeta( self, recd ): self.photographerNameLabel.set_label( recd.recorderName ) self.nameTextfield.set_text( recd.title ) self.nameTextfield.set_sensitive( True ) self.tagsBuffer.set_text( recd.tags ) self.dateDateLabel.set_label( utils.getDateString(recd.time) ) self.photographerPanel.show() self.namePanel.show() self.datePanel.show() self.tagsPanel.show() self.tagsField.set_sensitive(True) def setWaitCursor( self, win ): win.set_cursor( gtk.gdk.Cursor(gtk.gdk.WATCH) ) def setDefaultCursor( self, win ): win.set_cursor( None ) class PhotoCanvas(P5): def __init__(self): P5.__init__(self) self.img = None self.drawImg = None self.SCALING_IMG_ID = 0 self.cacheWid = -1 self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) def draw(self, ctx, w, h): self.background( ctx, Constants.colorBlack, w, h ) if (self.img != None): if (w == self.img.get_width()): self.cacheWid == w self.drawImg = self.img #only scale images when you need to, otherwise you're wasting cycles, fool! if (self.cacheWid != w): if (self.SCALING_IMG_ID == 0): self.drawImg = None self.SCALING_IMG_ID = gobject.idle_add( self.resizeImage, w, h ) if (self.drawImg != None): #center the image based on the image size, and w & h ctx.set_source_surface(self.drawImg, (w/2)-(self.drawImg.get_width()/2), (h/2)-(self.drawImg.get_height()/2)) ctx.paint() self.cacheWid = w def setImage(self, img): self.cacheWid = -1 self.img = img self.drawImg = None self.queue_draw() def resizeImage(self, w, h): self.SCALING_IMG_ID = 0 if (self.img == None): return #use image size in case 640 no more scaleImg = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) sCtx = cairo.Context(scaleImg) sScl = (w+0.0)/(self.img.get_width()+0.0) sCtx.scale( sScl, sScl ) sCtx.set_source_surface( self.img, 0, 0 ) sCtx.paint() self.drawImg = scaleImg self.cacheWid = w self.queue_draw() class xoPanel(P5): def __init__(self): P5.__init__(self) self.xoGuy = None self.lastStroke = None self.lastFill = None def updateXoColors( self, strokeHex, fillHex ): if (self.lastStroke != None): if ((self.lastStroke == strokeHex) and (self.lastFill == fillHex)): return lastStroke = strokeHex lastFill = fillHex self.xoGuy = utils.loadSvg(Constants.xoGuySvgData, strokeHex, fillHex) self.queue_draw() def draw(self, ctx, w, h): #todo: 2x buffer self.background( ctx, Constants.colorButton, w, h ) if (self.xoGuy != None): #todo: scale mr xo to fit in his box ctx.scale( .6, .6 ) self.xoGuy.render_cairo( ctx ) class ScrubberWindow(gtk.Window): def __init__(self, ui): gtk.Window.__init__(self) self.ui = ui self.UPDATE_INTERVAL = 500 self.UPDATE_SCALE_ID = 0 self.CHANGED_ID = 0 self.was_playing = False self.p_position = gst.CLOCK_TIME_NONE self.p_duration = gst.CLOCK_TIME_NONE self.hbox = gtk.HBox() self.hbox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.hbox.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) self.add( self.hbox ) self.button = gtk.Button() buttBox = gtk.EventBox() buttBox.add(self.button) buttBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.button.set_image( Constants.recPlayImg ) self.button.set_property('can-default', True) self.button.set_relief(gtk.RELIEF_NONE) self.button.set_size_request( self.ui.recordButtWd, self.ui.recordButtWd ) buttBox.set_size_request( self.ui.recordButtWd, self.ui.recordButtWd ) #self.button.set_border_width( UI.dim_INSET/2 ) self.button.show() buttBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.button.modify_bg( gtk.STATE_ACTIVE, Constants.colorBlack.gColor ) self.button.connect('clicked', self._buttonClickedCb) self.hbox.pack_start(buttBox, expand=False) self.adjustment = gtk.Adjustment(0.0, 0.00, 100.0, 0.1, 1.0, 1.0) self.hscale = gtk.HScale(self.adjustment) self.hscale.set_draw_value(False) self.hscale.set_update_policy(gtk.UPDATE_CONTINUOUS) hscaleBox = gtk.EventBox() hscaleBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) hscaleBox.add( self.hscale ) self.hscale.connect('button-press-event', self._scaleButtonPressCb) self.hscale.connect('button-release-event', self._scaleButtonReleaseCb) self.hbox.pack_start(hscaleBox, expand=True) def removeCallbacks( self ): if (self.UPDATE_SCALE_ID != 0): gobject.source_remove(self.UPDATE_SCALE_ID) self.UPDATE_SCALE_ID = 0 if (self.CHANGED_ID != 0): gobject.source_remove(self.CHANGED_ID) self.CHANGED_ID = 0 def reset(self): self.adjustment.set_value(0) def _buttonClickedCb(self, widget): self.play_toggled() def set_button_play(self): self.button.set_image(Constants.recPlayImg) def set_button_pause(self): self.button.set_image(Constants.recPauseImg) def play_toggled(self): self.p_position, self.p_duration = self.ui.ca.gplay.queryPosition() if (self.p_position == self.p_duration): self.ui.ca.gplay.seek(0) self.ui.ca.gplay.pause() if self.ui.ca.gplay.is_playing(): self.ui.ca.gplay.pause() self.set_button_play() else: #if self.ui.ca.gplay.error: # #todo: check if we have "error", and also to disable everything # self.button.set_disabled() #else: self.doPlay() def doPlay(self): self.ui.ca.gplay.play() if self.UPDATE_SCALE_ID == 0: self.UPDATE_SCALE_ID = gobject.timeout_add(self.UPDATE_INTERVAL, self._updateScaleCb) self.set_button_pause() def _scaleButtonPressCb(self, widget, event): #self.button.set_sensitive(False) self.was_playing = self.ui.ca.gplay.is_playing() if self.was_playing: self.ui.ca.gplay.pause() # don't timeout-update position during seek if self.UPDATE_SCALE_ID != 0: gobject.source_remove(self.UPDATE_SCALE_ID) self.UPDATE_SCALE_ID = 0 # make sure we get changed notifies if self.CHANGED_ID == 0: self.CHANGED_ID = self.hscale.connect('value-changed', self._scaleValueChangedCb) def _scaleButtonReleaseCb(self, widget, event): # see seek.cstop_seek widget.disconnect(self.CHANGED_ID) self.CHANGED_ID = 0 #self.button.set_sensitive(True) if self.was_playing: self.ui.ca.gplay.play() if self.UPDATE_SCALE_ID != 0: pass #print('Had a previous update timeout id') else: self.UPDATE_SCALE_ID = gobject.timeout_add(self.UPDATE_INTERVAL, self._updateScaleCb) def _scaleValueChangedCb(self, scale): real = long(scale.get_value() * self.p_duration / 100) # in ns self.ui.ca.gplay.seek(real) # allow for a preroll self.ui.ca.gplay.get_state(timeout=50*gst.MSECOND) # 50 ms def _updateScaleCb(self): self.p_position, self.p_duration = self.ui.ca.gplay.queryPosition() if self.p_position != gst.CLOCK_TIME_NONE: value = self.p_position * 100.0 / self.p_duration if (value > 99): value = 99 elif (value < 0): value = 0 self.adjustment.set_value(value) if self.ui.ca.gplay.is_playing() and (self.p_position == self.p_duration): self.ui.ca.gplay.pause() self.set_button_play() return True class MaxButton(P5Button): def __init__(self, ui): P5Button.__init__(self) self.ui = ui self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) xs = [] ys = [] xs.append(0) ys.append(0) xs.append(self.ui.maxw) ys.append(0) xs.append(self.ui.maxw) ys.append(self.ui.maxh) xs.append(0) ys.append(self.ui.maxh) poly = Polygon( xs, ys ) butt = Button( poly, 0, 0) butt.addActionListener( self ) self.maxS = "max" butt.setActionCommand( self.maxS ) self._butts.append( butt ) def draw(self, ctx, w, h): if (self.ui.FULLSCREEN): Constants.maxEnlargeSvg.render_cairo( ctx ) else: Constants.maxReduceSvg.render_cairo( ctx ) def fireButton(self, actionCommand): if (actionCommand == self.maxS): self.ui.doFullscreen() class InfButton(P5Button): #todo: just a gtk.Image here, no? def __init__(self, ui): P5Button.__init__(self) self.ui = ui self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) self.set_size_request( 75, 75 ) xs = [] ys = [] xs.append(0) ys.append(0) xs.append(75) ys.append(0) xs.append(75) ys.append(75) xs.append(0) ys.append(75) poly = Polygon( xs, ys ) butt = Button( poly, 0, 0) butt.addActionListener( self ) self.infS = "inf" butt.setActionCommand( self.infS ) self._butts.append( butt ) def draw(self, ctx, w, h): self.background( ctx, Constants.colorBlack, w, h ) Constants.infoOnSvg.render_cairo( ctx ) def fireButton(self, actionCommand): if (actionCommand == self.infS): self.ui.infoButtonClicked() class RecordButton(gtk.Button): def __init__(self): gtk.Button.__init__(self) self.sens = True self.img = None #todo: check on record state, compare button imgs def set_sensitive(self, sen, full): if (sen == self.sens): return self.sens = sen if (self.sens): self.set_image( Constants.recImg ) else: if (full): self.set_image( Constants.fullInsensitiveImg ) else: self.set_image( Constants.recInsensitiveImg ) super(RecordButton, self).set_sensitive(self.sens) def doRecordButton(self): if (not self.sens): return self.set_image( Constants.recRedImg ) def doNormalButton(self): if (not self.sens): return self.set_image( Constants.recImg ) class RecordWindow(gtk.Window): def __init__(self, ui): gtk.Window.__init__(self) self.ui = ui self.num = -1 self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.shutterButton = RecordButton() self.shutterButton.set_size_request(self.ui.recordButtWd, self.ui.recordButtWd) self.shutterButton.set_relief(gtk.RELIEF_NONE) self.shutterButton.set_image( Constants.recImg ) self.shutterButton.connect("clicked", self.ui._shutterClickCb) shutterBox = gtk.EventBox() shutterBox.add( self.shutterButton ) shutterBox.set_size_request( self.ui.controlBarHt, self.ui.controlBarHt ) shutterBox.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.shutterButton.modify_bg( gtk.STATE_ACTIVE, Constants.colorBlack.gColor ) hbox = gtk.HBox() self.add( hbox ) leftPanel = gtk.VBox() self.leftEvent = gtk.EventBox() self.leftEvent.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.leftEvent.add( leftPanel ) self.leftEvent.set_size_request(self.ui.vw/2-self.ui.controlBarHt, -1) hbox.pack_start( self.leftEvent, expand=True ) hbox.pack_start( shutterBox, expand=False ) rightPanel = gtk.VBox() self.rightEvent = gtk.EventBox() self.rightEvent.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.rightEvent.add( rightPanel ) hbox.pack_start( self.rightEvent, expand=True ) self.rightPanelLabel = gtk.Label() rightPanel.pack_start( self.rightPanelLabel ) def updateCountdown(self, num): if(num>0): if (num != self.num): ok = self.getCairoCountdown(num) self.shutterButton.set_image(ok) self.num = num else: self.num = -1 def getCairoCountdown(self, num): return Constants.countdownImgs[int(num)] def minimize( self ): self.leftEvent.set_size_request(-1, -1) self.rightEvent.set_size_request(-1, -1) def maximize( self ): w = self.ui.vw/2-self.ui.controlBarHt self.rightEvent.set_size_request(w, -1) self.leftEvent.set_size_request(w, -1) def displayDiscFullText( self, full ): if (not full or self.ui.ca.m.MODE != Constants.MODE_PHOTO): self.rightPanelLabel.set_text("") self.minimize() else: fullMessage = Constants.istrYourDiskIsFull % {"1":Constants.istrJournal} self.rightPanelLabel.set_text("" + fullMessage + "") self.rightPanelLabel.set_use_markup( True ) self.rightPanelLabel.set_alignment(1, 1) self.maximize() class ProgressWindow(gtk.Window): def __init__(self, ui): gtk.Window.__init__(self) self.ui = ui self.update = "" self.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) eb = gtk.EventBox() eb.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) eb.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) self.add( eb ) vb = gtk.VBox() vb.set_border_width(5) #todo: use variable eb.add(vb) self.progBar = gtk.ProgressBar() self.progBar.modify_bg( gtk.STATE_NORMAL, Constants.colorBlack.gColor ) self.progBar.modify_bg( gtk.STATE_ACTIVE, Constants.colorBlack.gColor ) self.progBar.modify_bg( gtk.STATE_PRELIGHT, Constants.colorBlack.gColor ) self.progBar.modify_bg( gtk.STATE_SELECTED, Constants.colorBlack.gColor ) self.progBar.modify_bg( gtk.STATE_INSENSITIVE, Constants.colorBlack.gColor ) vb.add( self.progBar ) hbox = gtk.HBox() vb.add( hbox ) self.infoLabel = gtk.Label() self.infoLabel.set_alignment( 1, .5 ) self.infoLabel.set_text( "SPACE") self.infoLabel.set_use_markup( True ) hbox.pack_start(self.infoLabel) def updateProgress( self, amt, update, color='white' ): logging.debug('updateProgress %s' % amt) self.progBar.set_fraction( amt ) if (update != None and update != self.update): self.update = update self.infoLabel.set_text( ""+self.update+"") self.infoLabel.set_use_markup( True ) if (self.update==""): self.infoLabel.set_text( "SPACE") self.infoLabel.set_use_markup( True ) if (amt >= 1): self.progBar.set_fraction( 0 ) class PhotoToolbar(gtk.Toolbar): def __init__(self): gtk.Toolbar.__init__(self) img = ToolButton('media-photo') img.connect('clicked', self._shutterClickCb) img.get_icon_widget().set_property( 'fill-color', Instance.colorFill.hex ) img.get_icon_widget().set_property( 'stroke-color', Instance.colorStroke.hex ) self.insert(img, -1) img.set_sensitive(False) img.show() separator = gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) self.insert(separator, -1) separator.show() timerCbb = gtk.combo_box_new_text() self.timerCb = ToolComboBox(combo=timerCbb, label_text=Constants.istrTimer) for i in range (0, len(Constants.TIMERS)): if (i == 0): self.timerCb.combo.append_text( Constants.istrNow ) else: self.timerCb.combo.append_text(istrSeconds(Constants.TIMERS[i])) self.timerCb.combo.set_active(0) self.insert( self.timerCb, -1 ) def _shutterClickCb(self, button): pass #self.ui.doShutter() def getTimer(self): return Constants.TIMERS[self.timerCb.combo.get_active()] class VideoToolbar(gtk.Toolbar): def __init__(self): gtk.Toolbar.__init__(self) img = ToolButton('media-video') img.connect('clicked', self._shutterClickCb) img.get_icon_widget().set_property( 'fill-color', Instance.colorFill.hex ) img.get_icon_widget().set_property( 'stroke-color', Instance.colorStroke.hex ) self.insert(img, -1) img.set_sensitive(False) img.show() separator = gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) self.insert(separator, -1) separator.show() combo = gtk.combo_box_new_text() self.quality = ToolComboBox(combo=combo, label_text=Constants.istrQuality+':') self.quality.combo.append_text(Constants.istrLowQuality) self.quality.combo.append_text(Constants.istrHighQuality) self.quality.combo.set_active(0) self.insert(self.quality, -1 ) timerCbb = gtk.combo_box_new_text() self.timerCb = ToolComboBox(combo=timerCbb, label_text=Constants.istrTimer) for i in range (0, len(Constants.TIMERS)): if (i == 0): self.timerCb.combo.append_text( Constants.istrNow ) else: self.timerCb.combo.append_text(istrSeconds(Constants.TIMERS[i])) self.timerCb.combo.set_active(0) self.insert( self.timerCb, -1 ) separator2 = gtk.SeparatorToolItem() separator2.set_draw(False) separator2.set_expand(False) separator2.set_size_request(UI.dim_INSET, -1) self.insert( separator2, -1 ) durCbb = gtk.combo_box_new_text() self.durCb = ToolComboBox(combo=durCbb, label_text=Constants.istrDuration) for i in range (0, len(Constants.DURATIONS)): self.durCb.combo.append_text(istrMinutes(Constants.DURATIONS[i])) self.durCb.combo.set_active(0) self.insert(self.durCb, -1 ) def _shutterClickCb(self, button): pass #self.ui.doShutter() def getTimer(self): return Constants.TIMERS[self.timerCb.combo.get_active()] def getDuration(self): return 60 * Constants.DURATIONS[self.durCb.combo.get_active()] def getQuality(self): return self.quality.combo.get_active() class AudioToolbar(gtk.Toolbar): def __init__(self): gtk.Toolbar.__init__(self) img = ToolButton('media-audio') img.connect('clicked', self._shutterClickCb) img.get_icon_widget().set_property( 'fill-color', Instance.colorFill.hex ) img.get_icon_widget().set_property( 'stroke-color', Instance.colorStroke.hex ) self.insert(img, -1) img.set_sensitive(False) img.show() separator = gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) self.insert(separator, -1) separator.show() timerCbb = gtk.combo_box_new_text() self.timerCb = ToolComboBox(combo=timerCbb, label_text=Constants.istrTimer) for i in range (0, len(Constants.TIMERS)): if (i == 0): self.timerCb.combo.append_text( Constants.istrNow ) else: self.timerCb.combo.append_text(istrSeconds(Constants.TIMERS[i])) self.timerCb.combo.set_active(0) self.insert( self.timerCb, -1 ) separator2 = gtk.SeparatorToolItem() separator2.set_draw(False) separator2.set_expand(False) separator2.set_size_request(UI.dim_INSET, -1) self.insert( separator2, -1 ) durCbb = gtk.combo_box_new_text() self.durCb = ToolComboBox(combo=durCbb, label_text=Constants.istrDuration) for i in range (0, len(Constants.DURATIONS)): self.durCb.combo.append_text(istrMinutes(Constants.DURATIONS[i])) self.durCb.combo.set_active(0) self.insert(self.durCb, -1 ) def _shutterClickCb(self, button): pass #self.ui.doShutter() def getTimer(self): return Constants.TIMERS[self.timerCb.combo.get_active()] def getDuration(self): return 60 * Constants.DURATIONS[self.durCb.combo.get_active()] sugar-record-activity-82/toolbarcombobox.py0000644000000000000000000000344511417267661020020 0ustar rootroot# Copyright (C) 2007, Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. import gtk import gobject from sugar.graphics.combobox import ComboBox from sugar.graphics import style class ToolComboBox(gtk.ToolItem): __gproperties__ = { 'label-text' : (str, None, None, None, gobject.PARAM_WRITABLE), } def __init__(self, combo=None, **kwargs): self.label = None self._label_text = '' gobject.GObject.__init__(self, **kwargs) self.set_border_width(int(style.DEFAULT_PADDING*3.5)) hbox = gtk.HBox(False, style.DEFAULT_SPACING) self.label = gtk.Label(self._label_text) hbox.pack_start(self.label, False) self.label.show() if combo: self.combo = combo else: self.combo = ComboBox() hbox.pack_start(self.combo) self.combo.show() self.add(hbox) hbox.show() def do_set_property(self, pspec, value): if pspec.name == 'label-text': self._label_text = value if self.label: self.label.set_text(self._label_text) sugar-record-activity-82/gfx/0000755000000000000000000000000011417267661015031 5ustar rootrootsugar-record-activity-82/gfx/max-reduce.svg0000644000000000000000000000237611417267661017614 0ustar rootroot sugar-record-activity-82/gfx/photoShutter.wav0000644000000000000000000000071411417267661020262 0ustar rootrootRIFFWAVEfmt @@dataawm_WwQ}H|qWXm'kfR^*hF߳j_eGw|˅N`uawJrveaduWNxVU0Lhum[vu~@QttHvxvd{esPe`rldnuPi~q||Co}~}~jo~jowy}v^`rg~iZhkonp}qkwrvq|iyptq}r}s}|||ltfw~uu|y~z~y|}|{{|~~z{{}x}}~}~|z}~~{~LIST6INFOICOPA1 Free Sound EffectsINAM Click Fastsugar-record-activity-82/gfx/media-record.png0000644000000000000000000000065211417267661020075 0ustar rootrootPNG  IHDR//DcgAMAOX2tEXtSoftwareAdobe ImageReadyqe<!PLTE333̯fffOOOH IDATxڔVQ ,@ѽw4>4 #`63Ƽ-췉Wo0 :HjA&_u GO,X@d2*_hIˮħBix?6zE'/}.OGZ5X1dcc7˵R6{%[vŬNS)Tv@E^d넍gt lh:e蚮?|??p?_p?|' ]> sugar-record-activity-82/gfx/object-audio.svg0000644000000000000000000000277311417267661020130 0ustar rootroot ]> sugar-record-activity-82/gfx/media-record-red.png0000644000000000000000000000072311417267661020644 0ustar rootrootPNG  IHDR//DcgAMAOX2tEXtSoftwareAdobe ImageReadyqe<9PLTE333ff33fffHH IDATxڼ DM?l.yWqHs/K6}W?][C:̓1_׭#>ތXkl;^"W#Y]}8J X>kgj,!8% Ec/x"B8gp-%_M;s=_5]:e9[?');/ 7y*M^Sa_??s/[7~lKwp}> 0 +IENDB`sugar-record-activity-82/gfx/stub.png0000644000000000000000000000041011417267661016507 0ustar rootrootPNG  IHDResRGB pHYs  tIME,:;tEXtCommentCreated with GIMPWuIDATx1 Om /x|s^F2IENDB`sugar-record-activity-82/gfx/media-circle.png0000644000000000000000000000061211417267661020054 0ustar rootrootPNG  IHDR//DcgAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTE333̯fffߙ$Q;IDATxڼV 4@[b-YT3`>rA4}Zs\zı>`UB=Y;z37rjNF"XD_v>LDǾ~ym5'sr O¢4v84)zsַ[雝fMqCNHG.0bΓyO$pCA/\?h}_ p?:_Gx?+IENDB`sugar-record-activity-82/gfx/info-on.svg0000644000000000000000000000224311417267661017120 0ustar rootroot sugar-record-activity-82/gfx/corner-info.svg0000644000000000000000000000222511417267661017774 0ustar rootroot ]> sugar-record-activity-82/gfx/max-enlarge.svg0000644000000000000000000000240311417267661017751 0ustar rootroot sugar-record-activity-82/gfx/full-insensitive.png0000644000000000000000000000145511417267661021044 0ustar rootrootPNG  IHDR//s'gAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxԚn0%m5`Æ!E } rթСkHbqH> 'ߟ:cRBHʖ˥|/m8~P."]q2Vۄ'x,tJv]d2IaphxAm S[hoqRQr!6sxWfmX,^9߱wGr$xżW ԿS_dhz , i.r lW h %q1hB7(~)j렀 k5\u㩌~ A HdF>0=k7,)mөP 0 aE/zYj$Y%@3htVW&t ^A?&TCdD<ΈjZꕫs|3> r{>,kZ>"Oe=Ĵ) _B ~IENDB`sugar-record-activity-82/gfx/object-video.svg0000644000000000000000000000167611417267661020136 0ustar rootroot ]> sugar-record-activity-82/gfx/media-play.png0000644000000000000000000000071511417267661017564 0ustar rootrootPNG  IHDR//DcgAMAOX2tEXtSoftwareAdobe ImageReadyqe<!PLTE333̯fffߙOOO)s#y2IDATxڔVQ L ѽw2Eŏ=G;u BLq3qڻ`(Mp{4x 3؂ V7J!y`$O/u!ZWsrSMܦ V9FQ_|z*+qe{*˚x_5Obv|HHyxF9L/AT8 '᳌(zUuT zSt|q~!w7wtgw/?_x? 06T3hIENDB`sugar-record-activity-82/gfx/media-insensitive.png0000644000000000000000000000066311417267661021161 0ustar rootrootPNG  IHDR//DcgAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTEY:tRNSރY IDATxڤI E!khݴW B#{v0;nS}ڌ_Θxln稦;NF|#Ȁ Y&<|qP8Yb=\"OԇG@%?ᝪ<\yho"t~e]=Hjd#/pOy׳VJ5+y_y<_xvϏ9ߋ[߯9i2_k}0k}G}.1 D7'?hۿ'_'l^)IENDB`sugar-record-activity-82/gfx/xo-guy.svg0000644000000000000000000000245411417267661017007 0ustar rootroot ]> sugar-record-activity-82/gfx/media-record.svg0000644000000000000000000000144611417267661020112 0ustar rootroot ]> sugar-record-activity-82/recorded.py0000644000000000000000000001520511417267661016411 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. import os import gtk from gtk import gdk from constants import Constants from instance import Instance import utils import serialize import record class Recorded: def __init__( self ): self.type = -1 self.time = None self.recorderName = None self.recorderHash = None self.title = None self.colorStroke = None self.colorFill = None self.mediaMd5 = None self.thumbMd5 = None self.mediaBytes = None self.thumbBytes = None self.tags = None #flag to alert need to re-datastore the title self.metaChange = False #when you are datastore-serialized, you get one of these ids... self.datastoreId = None self.datastoreOb = None #if not from the datastore, then your media is here... self.mediaFilename = None self.thumbFilename = None self.audioImageFilename = None #for flagging when you are being saved to the datastore for the first time... #and just because you have a datastore id, doesn't mean you're saved self.savedMedia = False self.savedXml = False #assume you took the picture self.buddy = False self.downloadedFromBuddy = False self.triedMeshBuddies = [] self.meshDownloading = False self.meshDownloadingFrom = "" self.meshDownloadingFromNick = "" self.meshDownlodingPercent = 0.0 self.meshDownloadingProgress = False #if someone is downloading this, then hold onto it self.meshUploading = False self.meshReqCallbackId = 0 self.deleted = False def setTitle( self, newTitle ): self.title = newTitle self.metaChange = True def setTags( self, newTags ): self.tags = newTags self.metaChange = True def isClipboardCopyable( self ): copyme = True if (self.buddy): if (not self.downloadedFromBuddy): return False return copyme #scenarios: #launch, your new thumb -- Journal/session #launch, your new media -- Journal/session #launch, their new thumb -- Journal/session/buddy #launch, their new media -- ([request->]) Journal/session/buddy #relaunch, your old thumb -- metadataPixbuf on request (or save to Journal/session..?) #relaunch, your old media -- datastoreObject->file (hold onto the datastore object, delete if deleted) #relaunch, their old thumb -- metadataPixbuf on request (or save to Journal/session..?) #relaunch, their old media -- datastoreObject->file (hold onto the datastore object, delete if deleted) | ([request->]) Journal/session/buddy def getThumbPixbuf( self ): thumbPixbuf = None thumbFilepath = self.getThumbFilepath() if ( os.path.isfile(thumbFilepath) ): thumbPixbuf = gtk.gdk.pixbuf_new_from_file(thumbFilepath) return thumbPixbuf def getThumbFilepath( self ): return os.path.join(Instance.instancePath, self.thumbFilename) def getAudioImagePixbuf( self ): audioPixbuf = None if (self.audioImageFilename == None): audioPixbuf = self.getThumbPixbuf() else: audioFilepath = self.getAudioImageFilepath() if (audioFilepath != None): audioPixbuf = gtk.gdk.pixbuf_new_from_file(audioFilepath) return audioPixbuf def getAudioImageFilepath( self ): if (self.audioImageFilename != None): audioFilepath = os.path.join(Instance.instancePath, self.audioImageFilename) return os.path.abspath(audioFilepath) else: return self.getThumbFilepath() def getMediaFilepath(self): if (self.datastoreId == None): if (not self.buddy): #just taken by you, so it is in the tempSessionDir mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) return os.path.abspath(mediaFilepath) else: if (self.downloadedFromBuddy): #the user has requested the high-res version, and it has downloaded mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) return os.path.abspath(mediaFilepath) else: if self.mediaFilename == None: #creating a new filepath, probably just got here from the mesh ext = Constants.mediaTypes[self.type][Constants.keyExt] recdPath = os.path.join(Instance.instancePath, "recdFile_"+self.mediaMd5+"."+ext) recdPath = utils.getUniqueFilepath(recdPath, 0) self.mediaFilename = os.path.basename(recdPath) mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) return os.path.abspath(mediaFilepath) else: mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) return os.path.abspath(mediaFilepath) else: #pulling from the datastore, regardless of who took it, cause we got it #first, get the datastoreObject and hold the reference in this Recorded instance if (self.datastoreOb == None): self.datastoreOb = serialize.getMediaFromDatastore( self ) if (self.datastoreOb == None): print("RecordActivity error -- unable to get datastore object in getMediaFilepath") return None return self.datastoreOb.file_pathsugar-record-activity-82/utils.py0000644000000000000000000000510611417267661015761 0ustar rootrootimport base64 import rsvg import re import os import statvfs import cairo import gc import gtk import time from time import strftime import hippo from sugar import util def getStringFromPixbuf(pixbuf): data = [""] pixbuf.save_to_callback(_saveDataToBufferCb, "png", {}, data) return base64.b64encode(str(data[0])) def _saveDataToBufferCb(buf, data): data[0] += buf return True def getPixbufFromString(str): pbl = gtk.gdk.PixbufLoader() data = base64.b64decode( str ) pbl.write(data) pbl.close() return pbl.get_pixbuf() def loadSvg( data, stroke, fill ): if ((stroke == None) or (fill == None)): return rsvg.Handle( data=data ) entity = '' % fill data = re.sub('', entity, data) entity = '' % stroke data = re.sub('', entity, data) return rsvg.Handle( data=data ) def getUniqueFilepath( path, i ): pathOb = os.path.abspath( path ) newPath = os.path.join( os.path.dirname(pathOb), str( str(i) + os.path.basename(pathOb) ) ) if (os.path.exists(newPath)): i = i + 1 return getUniqueFilepath( pathOb, i ) else: return os.path.abspath( newPath ) def generateThumbnail( pixbuf, scale, thumbw, thumbh ): #need to generate thumbnail version here thumbImg = cairo.ImageSurface(cairo.FORMAT_ARGB32, thumbw, thumbh) tctx = cairo.Context(thumbImg) img = hippo.cairo_surface_from_gdk_pixbuf(pixbuf) tctx.scale(scale, scale) tctx.set_source_surface(img, 0, 0) tctx.paint() gc.collect() return thumbImg def scaleSvgToDim( handle, dim ): #todo... scale = 1.0 svgDim = handle.get_dimension_data() if (svgDim[0] > dim[0]): pass return scale def getDateString( when ): return strftime( "%c", time.localtime(when) ) def grayScalePixBuf2( pb, copy ): arr = pb.get_pixels_array() if (copy): arr = arr.copy() for row in arr: for pxl in row: y = 0.3*pxl[0][0]+0.59*pxl[1][0]+0.11*pxl[2][0] pxl[0][0] = y pxl[1][0] = y pxl[2][0] = y return gtk.gdk.pixbuf_new_from_array(arr, pb.get_colorspace(), pb.get_bits_per_sample()) def grayScalePixBuf( pb, copy ): pb2 = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, pb.get_width(), pb.get_height()) pb.saturate_and_pixelate(pb2, 0, 0) return pb2 def getFreespaceKb( ): stat = os.statvfs("/home") freebytes = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL] freekb = freebytes / 1024 return freekb sugar-record-activity-82/glivex.py0000644000000000000000000001362311417267661016122 0ustar rootroot#Copyright (c) 2008, Media Modifications Ltd. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. # This class is a cut-down version of glive which uses an ximagesink # rather than an xvimagesink. This is used in video playback mode, where # our only Xv port is used for Theora playback. # # I tried to modify the glive pipeline to allow swapping an xvimagesink for # an ximagesink and vice-versa, but that didn't work out (all kinds of strange # behaviour, perhaps a gstreamer bug). So we resort to using a separate # pipeline - ugly, but it works... import os import gtk import pygtk pygtk.require('2.0') import sys import gst import gst.interfaces import pygst pygst.require('0.10') import time import threading import gobject gobject.threads_init() from instance import Instance from constants import Constants import record import utils import ui import glive class GliveX: def __init__(self, pca): self.VIDEO_FRAMERATE_SMALL = 10 self.window = None self.ca = pca self.playing = False self.pipeline = gst.Pipeline("slow-pipeline") self.createPipeline() bus = self.pipeline.get_bus() bus.enable_sync_message_emission() bus.add_signal_watch() self.SYNC_ID = bus.connect('sync-message::element', self._onSyncMessageCb) self.MESSAGE_ID = bus.connect('message', self._onMessageCb) def createPipeline ( self ): src = gst.element_factory_make("v4l2src", "camsrc") try: # old gst-plugins-good does not have this property src.set_property("queue-size", 2) except: pass # if possible, important to place the framerate limit directly on the # v4l2src so that it gets communicated all the way down to the camera # level if glive.can_limit_framerate: srccaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1') else: srccaps = gst.Caps('video/x-raw-yuv') # the XO-1.5 camera framerate limit increases image quality but # still delivers way too many frames. add a gstreamer-level filter # to keep the frame rate sensible. rate = gst.element_factory_make("videorate", "vbrate") ratecaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1') queue = gst.element_factory_make("queue", "dispqueue") queue.set_property("leaky", True) queue.set_property('max-size-buffers', 1) scale = gst.element_factory_make("videoscale", "scale") scalecaps = gst.Caps('video/x-raw-yuv,width='+str(ui.UI.dim_PIPW)+',height='+str(ui.UI.dim_PIPH)) colorspace = gst.element_factory_make("ffmpegcolorspace", "colorspace") xsink = gst.element_factory_make("ximagesink", "xsink") # http://thread.gmane.org/gmane.comp.video.gstreamer.devel/29644 xsink.set_property("sync", False) self.pipeline.add(src, rate, queue, scale, colorspace, xsink) src.link(rate, srccaps) rate.link(queue, ratecaps) queue.link(scale) scale.link(colorspace, scalecaps) colorspace.link(xsink) def play(self): self.pipeline.set_state(gst.STATE_PLAYING) self.playing = True def pause(self): self.pipeline.set_state(gst.STATE_PAUSED) self.playing = False def stop(self): self.pipeline.set_state(gst.STATE_NULL) self.playing = False def is_playing(self): return self.playing def idlePlayElement(self, element): element.set_state(gst.STATE_PLAYING) return False def _onSyncMessageCb(self, bus, message): if message.structure is None: return if message.structure.get_name() == 'prepare-xwindow-id': self.window.set_sink(message.src) message.src.set_property('force-aspect-ratio', True) def _onMessageCb(self, bus, message): t = message.type if t == gst.MESSAGE_EOS: #print("MESSAGE_EOS") pass elif t == gst.MESSAGE_ERROR: #todo: if we come out of suspend/resume with errors, then get us back up and running... #todo: handle "No space left on the resource.gstfilesink.c" #err, debug = message.parse_error() pass class SlowLiveVideoWindow(gtk.Window): def __init__(self, bgd ): gtk.Window.__init__(self) self.imagesink = None self.glivex = None self.modify_bg( gtk.STATE_NORMAL, bgd ) self.modify_bg( gtk.STATE_INSENSITIVE, bgd ) self.unset_flags(gtk.DOUBLE_BUFFERED) self.set_flags(gtk.APP_PAINTABLE) def set_glivex(self, pglivex): self.glivex = pglivex self.glivex.window = self def set_sink(self, sink): if (self.imagesink != None): assert self.window.xid self.imagesink = None del self.imagesink self.imagesink = sink self.imagesink.set_xwindow_id(self.window.xid)