gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-


From: Rob Savoye
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-1355-g5dc06d9
Date: Thu, 29 Dec 2011 23:00:44 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  5dc06d9fe082e819a14d6fff2c14629001f993a9 (commit)
       via  0b3438282e5b94065525d3c4f58646cfa51eb757 (commit)
      from  b46797abba9e39a6d72ce76dc36a9acef7e46634 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=5dc06d9fe082e819a14d6fff2c14629001f993a9


commit 5dc06d9fe082e819a14d6fff2c14629001f993a9
Author: Rob Savoye <address@hidden>
Date:   Thu Dec 29 16:00:42 2011 -0700

    updated with new strings

diff --git a/po/gnash.pot b/po/gnash.pot
index bb7788d..b9894e2 100644
--- a/po/gnash.pot
+++ b/po/gnash.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-29 13:58-0700\n"
+"POT-Creation-Date: 2011-12-29 16:00-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -1836,6 +1836,26 @@ msgid ""
 "%d (%s)"
 msgstr ""
 
+#: libcore/ExternalInterface.cpp:133
+#, c-format
+msgid "Can't convert unknown type %d"
+msgstr ""
+
+#: libcore/ExternalInterface.cpp:152 libcore/ExternalInterface.cpp:347
+#, c-format
+msgid "There are %d bytes in the network buffer"
+msgstr ""
+
+#: libcore/as_value.cpp:269
+#, c-format
+msgid "to_primitive(%s)"
+msgstr ""
+
+#: libcore/as_value.cpp:309
+#, c-format
+msgid "to_primitive: method call returned %s"
+msgstr ""
+
 #: libcore/as_value.cpp:398
 #, c-format
 msgid "to_primitive(%s, NUMBER) threw an ActionTypeError %s"
@@ -1846,6 +1866,99 @@ msgstr ""
 msgid "serialization of as_value of type %d"
 msgstr ""
 
+#: libcore/ClassHierarchy.cpp:77
+#, c-format
+msgid "Loading native class %s"
+msgstr ""
+
+#: libcore/ClassHierarchy.cpp:84
+#, c-format
+msgid "Native class %s is not an object after initialization (%s)"
+msgstr ""
+
+#: libcore/ClassHierarchy.cpp:91
+#, c-format
+msgid "Native class %s is not found after initialization"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:63
+msgid "Starting movie loader thread"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:72
+msgid "Loader thread killed"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:78
+msgid "processRequests: lock on requests: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:84
+msgid "processRequests: lock on requests: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:95
+msgid "Movie loader thread getting to sleep (nothing more to do)"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:101
+msgid "Movie loader thread waked up"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:105 libcore/MovieLoader.cpp:114
+msgid "processRequests: lock on requests: release"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:135
+#, c-format
+msgid "Movie loader thread processing request for target %s"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:146
+#, c-format
+msgid "Movie loader thread completed request for target %s"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:159
+msgid "clear: lock on requests: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:165
+msgid "clear: lock on requests: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:169
+msgid "clear: lock on kill: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:175
+msgid "clear: lock on kill: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:181
+msgid "clear: lock on kill: release for kill"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:186
+msgid "waking up loader thread"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:191
+msgid "clear: lock on requests: release ater notify_all"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:195
+msgid "MovieLoader notified, joining"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:197
+msgid "MovieLoader joined"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:205
+msgid "clear: lock on requests: release if not after notify_all"
+msgstr ""
+
 #: libcore/MovieLoader.cpp:259
 #, c-format
 msgid "Can't create Movie instance for definition loaded from %s"
@@ -1856,6 +1969,98 @@ msgstr ""
 msgid "processCompletedRequest: _level loading (level %u)"
 msgstr ""
 
+#: libcore/MovieLoader.cpp:282
+#, c-format
+msgid "Target %s of a loadMovie request doesn't exist at load complete time"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:344
+msgid "processCompletedRequests: lock on requests: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:350
+msgid "processCompletedRequests: lock on requests: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:354
+#, c-format
+msgid "Checking %d requests for completeness"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:366
+msgid "processCompletedRequests: lock on requests: releasing"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:373
+#, c-format
+msgid "Load request for target %s completed"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:381
+msgid "processCompletedRequests: lock on requests for removal: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:388
+msgid "processCompletedRequests: lock on requests for removal: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:395
+msgid "processCompletedRequests: lock on requests for removal: release"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:434
+#, c-format
+msgid "MovieLoader::loadMovie(%s, %s)"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:440
+msgid "loadMovie: lock on requests: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:446
+msgid "loadMovie: lock on requests: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:461
+msgid "loadMovie: waking up existing thread"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:466
+msgid "loadMovie: lock on requests: release"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:484
+msgid "setReachable: lock on requests: trying"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:490
+msgid "setReachable: lock on requests: obtained"
+msgstr ""
+
+#: libcore/MovieLoader.cpp:497
+msgid "setReachable: lock on requests: release"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:156
+#, c-format
+msgid "moveTo: %ld,%ld"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:169
+#, c-format
+msgid "lineTo: %ld,%ld"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:181
+#, c-format
+msgid "conicTo: %ld,%ld %ld,%ld"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:196
+#, c-format
+msgid "cubicTo: %ld,%ld %ld,%ld %ld,%ld"
+msgstr ""
+
 #: libcore/FreetypeGlyphsProvider.cpp:254
 #, c-format
 msgid "Can't init FreeType! Error = %d"
@@ -1876,21 +2081,86 @@ msgstr ""
 msgid "Can't init fontconfig library, using hard-coded font filename \"%s\""
 msgstr ""
 
-#: libcore/FreetypeGlyphsProvider.cpp:433
+#: libcore/FreetypeGlyphsProvider.cpp:328
+#, c-format
+msgid "Found %d fonts matching the family %s (using first)"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:336
+#, c-format
+msgid "Matching font %d has unknown filename, skipping"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:346
+#, c-format
+msgid "Loading font from file %d"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:355
+#, c-format
+msgid "No device font matches the name '%s', using hard-coded font filename"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:360
+msgid ""
+"Font filename matching not implemented (no fontconfig support built-in), "
+"using hard-coded font filename"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:393
+msgid "Freetype not supported"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:434
 #, c-format
 msgid "Can't find font file for font '%s'"
 msgstr ""
 
-#: libcore/FreetypeGlyphsProvider.cpp:446
+#: libcore/FreetypeGlyphsProvider.cpp:447
 #, c-format
 msgid "Font file '%s' has bad format"
 msgstr ""
 
-#: libcore/FreetypeGlyphsProvider.cpp:455
+#: libcore/FreetypeGlyphsProvider.cpp:456
 #, c-format
 msgid "Some error opening font '%s'"
 msgstr ""
 
+#: libcore/FreetypeGlyphsProvider.cpp:469
+#, c-format
+msgid "EM square for font '%s' is %d, scale is this %g"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:490
+#, c-format
+msgid "Error loading freetype outline glyph for char '%c' (error: %d)"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:498
+#, c-format
+msgid "Advance value for glyph '%c' is %g (horiAdvance:%ld, scale:%g)"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:506
+#, c-format
+msgid ""
+"FT_Load_Char() returned a glyph format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:526
+#, c-format
+msgid "Decomposing glyph outline for DisplayObject %u"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:538
+#, c-format
+msgid "Decomposed glyph for DisplayObject '%c' has bounds %s"
+msgstr ""
+
+#: libcore/FreetypeGlyphsProvider.cpp:561
+msgid "Could not release FT face resources"
+msgstr ""
+
 #: libcore/swf/DefineShapeTag.cpp:58
 #, c-format
 msgid "DefineShapeTag(%s): id = %d"
@@ -2551,6 +2821,51 @@ msgstr ""
 msgid "inflateWrapper() inflateEnd() return %d (%s)"
 msgstr ""
 
+#: libcore/LoadVariablesThread.cpp:37
+msgid "completeLoad called"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:57
+#, c-format
+msgid "Read %u bytes"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:74
+#, c-format
+msgid "%s to utf8 conversion in MovieClip.loadVariables input parsing"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:84
+#, c-format
+msgid "toparse: %s"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:93
+#, c-format
+msgid "parseable: %s"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:98
+#, c-format
+msgid "toparse nextline: %s"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:109
+msgid "Cancelling LoadVariables download thread..."
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:123
+#, c-format
+msgid "Stream couldn't seek to end: %s"
+msgstr ""
+
+#: libcore/LoadVariablesThread.cpp:128
+#, c-format
+msgid ""
+"Size of 'variables' stream advertised to be %d bytes, but turned out to be "
+"%d bytes."
+msgstr ""
+
 #: libcore/SWFStream.cpp:285 libcore/parser/action_buffer.cpp:537
 msgid "Native floating point format not recognised"
 msgstr ""
@@ -2561,6 +2876,14 @@ msgstr ""
 msgid "Unexpected end of stream while reading"
 msgstr ""
 
+#: libcore/SWFStream.cpp:475
+msgid "Attempt to seek past the end of an opened tag"
+msgstr ""
+
+#: libcore/SWFStream.cpp:483
+msgid "Attempt to seek before start of an opened tag"
+msgstr ""
+
 #: libcore/SWFStream.cpp:496
 msgid "Unexpected end of stream"
 msgstr ""
@@ -2573,10 +2896,24 @@ msgid ""
 "offset %d. Making it end where container tag ends."
 msgstr ""
 
+#: libcore/SWFStream.cpp:581
+#, c-format
+msgid "SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu"
+msgstr ""
+
 #: libcore/SWFStream.cpp:602
 msgid "Could not seek to reported end of tag"
 msgstr ""
 
+#: libcore/SWFStream.cpp:617
+#, c-format
+msgid "SWFStream::consumeInput: underlying stream couldn't go_to_end: %s"
+msgstr ""
+
+#: libcore/RGBA.cpp:47
+msgid "Failed to convert string to RGBA value! This is a Gnash bug"
+msgstr ""
+
 #: libcore/Font.cpp:130
 msgid ""
 "Attempt to set font display or copyright name again. This should mean there "
@@ -2592,6 +2929,33 @@ msgid ""
 "should happen in this case, so ignoring."
 msgstr ""
 
+#: libcore/Font.cpp:201
+#, c-format
+msgid "Failed to find glyph %s in %s font %s"
+msgstr ""
+
+#: libcore/Font.cpp:276
+msgid "Device font provider was not initialized, can't get unitsPerEM"
+msgstr ""
+
+#: libcore/Font.cpp:298
+#, c-format
+msgid ""
+"Could not create shape glyph for DisplayObject code %u (%c) with device font "
+"%s (%p)"
+msgstr ""
+
+#: libcore/Font.cpp:332
+msgid ""
+"No name associated with this font, can't use device fonts (should I use a "
+"default one?)"
+msgstr ""
+
+#: libcore/Font.cpp:340
+#, c-format
+msgid "Could not create a freetype face %s"
+msgstr ""
+
 #: libcore/asobj/Stage_as.cpp:146
 msgid "Stage.width is a read-only property!"
 msgstr ""
@@ -3848,6 +4212,33 @@ msgstr ""
 msgid "moveDisplayObject() -- can't find object at depth %d"
 msgstr ""
 
+#: libcore/DisplayList.cpp:312
+msgid "Request to move an unloaded DisplayObject"
+msgstr ""
+
+#: libcore/DisplayList.cpp:380
+#, c-format
+msgid "%s.swapDepth(%d) : ignored call with target depth less then %d"
+msgstr ""
+
+#: libcore/DisplayList.cpp:404
+msgid ""
+"First argument to DisplayList::swapDepth() is NOT a DisplayObject in the "
+"list. Call ignored."
+msgstr ""
+
+#: libcore/DisplayList.cpp:875
+#, c-format
+msgid ""
+"mergeDisplayList: DisplayObject %s (%s at depth %d [%d]) about to be "
+"discarded in given display list is not marked as unloaded and not found in "
+"the merged current displaylist"
+msgstr ""
+
+#: libcore/Geometry.cpp:198
+msgid "Collision detection for unidirectionally scaled strokes"
+msgstr ""
+
 #: libcore/TextField.cpp:221
 #, c-format
 msgid ""
@@ -3855,66 +4246,138 @@ msgid ""
 "[0..1048575], won't remove"
 msgstr ""
 
-#: libcore/TextField.cpp:910
+#: libcore/TextField.cpp:234
+#, c-format
+msgid "FIXME: attempt to remove a TextField being a child of a %s"
+msgstr ""
+
+#: libcore/TextField.cpp:328
+#, c-format
+msgid "rendering a Pol composed by corners %s"
+msgstr ""
+
+#: libcore/TextField.cpp:413 libcore/TextField.cpp:423
+#: libcore/TextField.cpp:441 libcore/TextField.cpp:456
+msgid "invalid restrict string"
+msgstr ""
+
+#: libcore/TextField.cpp:842
+#, c-format
+msgid ""
+"setTextValue: variable name %s points to a non-existent target, I guess we "
+"would not be registered if this was true, or the sprite we've registered our "
+"variable name has been unloaded"
+msgstr ""
+
+#: libcore/TextField.cpp:907
 #, c-format
 msgid ""
 "TextField text doesn't fit in its boundaries: width %g, margin %g - nothing "
 "to align"
 msgstr ""
 
-#: libcore/TextField.cpp:965
+#: libcore/TextField.cpp:962
 #, c-format
 msgid ""
 "TextField: missing glyph for space char (needed for TAB). Make sure "
 "DisplayObject shapes for font %s are being exported into your SWF file."
 msgstr ""
 
-#: libcore/TextField.cpp:1044
+#: libcore/TextField.cpp:1041
 msgid "No font for TextField!"
 msgstr ""
 
-#: libcore/TextField.cpp:1376
+#: libcore/TextField.cpp:1373
 msgid ""
 "HTML in a text field is unsupported, gnash will just ignore the tags and "
 "print their content"
 msgstr ""
 
-#: libcore/TextField.cpp:1460
+#: libcore/TextField.cpp:1441
+#, c-format
+msgid "Unexpected value '%s' in TextField font color attribute"
+msgstr ""
+
+#: libcore/TextField.cpp:1456
 msgid "Expected a font name in FACE attribute."
 msgstr ""
 
-#: libcore/TextField.cpp:1707
+#: libcore/TextField.cpp:1510
+msgid "<img> html tag in TextField"
+msgstr ""
+
+#: libcore/TextField.cpp:1548
+msgid "<span> html tag in TextField"
+msgstr ""
+
+#: libcore/TextField.cpp:1553
+msgid "in textformat"
+msgstr ""
+
+#: libcore/TextField.cpp:1620
+msgid "html <textformat> tag tabstops attribute"
+msgstr ""
+
+#: libcore/TextField.cpp:1654
+#, c-format
+msgid "<%s> tag is unsupported"
+msgstr ""
+
+#: libcore/TextField.cpp:1703
 #, c-format
 msgid ""
 "TextField: missing embedded glyph for char %d. Make sure DisplayObject "
 "shapes for font %s are being exported into your SWF file"
 msgstr ""
 
-#: libcore/TextField.cpp:1715
+#: libcore/TextField.cpp:1711
 #, c-format
 msgid ""
 "TextField: missing device glyph for char %d. Maybe you don't have font '%s' "
 "installed in your system."
 msgstr ""
 
-#: libcore/TextField.cpp:1897
+#: libcore/TextField.cpp:1739
+#, c-format
+msgid "Text in TextField %s exceeds width [ _bounds %s ]"
+msgstr ""
+
+#: libcore/TextField.cpp:1747
+msgid " wordWrap=false, autoSize=none"
+msgstr ""
+
+#: libcore/TextField.cpp:1764
+#, c-format
+msgid "Text bbox expanded to %s (width: %f)"
+msgstr ""
+
+#: libcore/TextField.cpp:1784
+msgid " wordWrap=true"
+msgstr ""
+
+#: libcore/TextField.cpp:1871
+#, c-format
+msgid " wordWrap=%d, autoSize=%d"
+msgstr ""
+
+#: libcore/TextField.cpp:1893
 #, c-format
 msgid "VariableName: %s"
 msgstr ""
 
-#: libcore/TextField.cpp:1906
+#: libcore/TextField.cpp:1902
 #, c-format
 msgid ""
 "Current environment has no target, can't bind VariableName (%s) associated "
 "to text field. Gnash will try to register again on next access."
 msgstr ""
 
-#: libcore/TextField.cpp:1921
+#: libcore/TextField.cpp:1917
 #, c-format
 msgid "Variable text Path: %s, Var: %s"
 msgstr ""
 
-#: libcore/TextField.cpp:1932
+#: libcore/TextField.cpp:1928
 #, c-format
 msgid ""
 "VariableName associated to text field refers to an unknown target (%s). It "
@@ -3922,11 +4385,11 @@ msgid ""
 "stream. Gnash will try to register again on next access."
 msgstr ""
 
-#: libcore/TextField.cpp:1953
+#: libcore/TextField.cpp:1949
 msgid "registerTextVariable() called"
 msgstr ""
 
-#: libcore/TextField.cpp:1968
+#: libcore/TextField.cpp:1964
 #, c-format
 msgid ""
 "VariableName associated to text field (%s) refer to an unknown target. It is "
@@ -3934,7 +4397,83 @@ msgid ""
 "stream. Gnash will try to register again on next access."
 msgstr ""
 
-#: libcore/DisplayObject.cpp:258
+#: libcore/TextField.cpp:2021 libcore/TextField.cpp:2055
+#: libcore/TextField.cpp:2146
+msgid "invalid html tag"
+msgstr ""
+
+#: libcore/TextField.cpp:2032 libcore/TextField.cpp:2068
+#: libcore/TextField.cpp:2099
+msgid "found NULL character in htmlText"
+msgstr ""
+
+#: libcore/TextField.cpp:2072
+msgid "malformed HTML tag, invalid attribute name"
+msgstr ""
+
+#: libcore/TextField.cpp:2122
+msgid "malformed HTML tag, invalid attribute value"
+msgstr ""
+
+#: libcore/TextField.cpp:2153
+#, c-format
+msgid "HTML tag: %s"
+msgstr ""
+
+#: libcore/TextField.cpp:2155
+msgid "I declare this a HTML syntax error"
+msgstr ""
+
+#: libcore/TextField.cpp:2171
+msgid "Calling updateText after change of variable name"
+msgstr ""
+
+#: libcore/TextField.cpp:2179
+msgid ""
+"Calling registerTextVariable after change of variable name and updateText "
+"call"
+msgstr ""
+
+#: libcore/SWFMovie.cpp:54
+#, c-format
+msgid "Frame %d never loaded. Total frames: %d"
+msgstr ""
+
+#: libcore/SWFMovie.cpp:77
+#, c-format
+msgid "Frame %d never loaded. Total frames: %d."
+msgstr ""
+
+#: libcore/SWFMovie.cpp:109
+#, c-format
+msgid ""
+"Attempt to perform initialized for a character %s that does not exist "
+"(either not exported or not defined)"
+msgstr ""
+
+#: libcore/LineStyle.cpp:186
+msgid ""
+"UNTESTED: Dunno how to interpolate line styles with different vertical "
+"thickness scaling"
+msgstr ""
+
+#: libcore/LineStyle.cpp:190
+msgid ""
+"UNTESTED: Dunno how to interpolate line styles with different horizontal "
+"thickness scaling"
+msgstr ""
+
+#: libcore/DisplayObject.cpp:121
+#, c-format
+msgid "loadMovie against a %s DisplayObject"
+msgstr ""
+
+#: libcore/DisplayObject.cpp:206
+#, c-format
+msgid "%p set_invalidated() of %s in %s:%d"
+msgstr ""
+
+#: libcore/DisplayObject.cpp:258
 msgid "blendMode"
 msgstr ""
 
@@ -4035,11 +4574,47 @@ msgstr ""
 msgid "Attempt to set %s._rotation to %s (evaluating to number %g) refused"
 msgstr ""
 
+#: libcore/DisplayObject.cpp:1352
+msgid "_soundbuftime setting"
+msgstr ""
+
 #: libcore/DisplayObject.cpp:1376
 #, c-format
 msgid "Setting _width=%g of DisplayObject %s (%s)"
 msgstr ""
 
+#: libcore/DisplayObject.cpp:1386 libcore/DisplayObject.cpp:1404
+msgid "_focusrect"
+msgstr ""
+
+#: libcore/StaticText.cpp:53
+msgid "StaticText::pointInShape"
+msgstr ""
+
+#: libcore/CharacterProxy.cpp:37
+#, c-format
+msgid ""
+"char %s (%s) was destroyed, stored its orig target (%s) for later rebinding"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:69
+msgid "AMF0: skip serialization of FUNCTION property"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:84
+#, c-format
+msgid " skip serialization of specially-named property %s"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:94
+#, c-format
+msgid " serializing property %s"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:98
+msgid "Problems serializing an object's member"
+msgstr ""
+
 #: libcore/AMFConverter.cpp:135
 #, c-format
 msgid "amf: serializing object (or function) as reference to %d"
@@ -4055,6 +4630,11 @@ msgstr ""
 msgid "amf: serializing array of %d elements as STRICT_ARRAY (index %d)"
 msgstr ""
 
+#: libcore/AMFConverter.cpp:212
+#, c-format
+msgid "Problems serializing strict array member %d=%s"
+msgstr ""
+
 #: libcore/AMFConverter.cpp:223
 #, c-format
 msgid "amf: serializing array of %d elements as ECMA_ARRAY (index %d) "
@@ -4065,6 +4645,10 @@ msgstr ""
 msgid "amf: serializing object (or function) with index %d"
 msgstr ""
 
+#: libcore/AMFConverter.cpp:242
+msgid "Could not serialize object"
+msgstr ""
+
 #: libcore/AMFConverter.cpp:276
 msgid "amf: serializing undefined"
 msgstr ""
@@ -4073,6 +4657,82 @@ msgstr ""
 msgid "amf: serializing null"
 msgstr ""
 
+#: libcore/AMFConverter.cpp:319
+#, c-format
+msgid "Unknown AMF type %s! Cannot proceed"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:376
+#, c-format
+msgid "AMF parsing error: %s"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:407
+msgid "Read past _end of buffer for strict array length"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:414
+#, c-format
+msgid "amf0 starting read of STRICT_ARRAY with %i elements"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:425
+msgid "Unable to read array elements"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:442
+msgid "Read past _end of buffer for array length"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:458
+#, c-format
+msgid "amf0 starting read of ECMA_ARRAY with %i elements"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:468 libcore/AMFConverter.cpp:489
+msgid "MALFORMED AMF: premature _end of ECMA_ARRAY block"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:480
+msgid "MALFORMED AMF: empty member name not followed by OBJECT_END_AMF0 byte"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:497
+#, c-format
+msgid "amf0 ECMA_ARRAY prop name is %s"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:504
+msgid "Unable to read array element"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:518
+msgid "amf0 starting read of OBJECT"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:528
+msgid "Could not read object property name"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:539
+msgid "AMF buffer terminated just before object _end byte. continuing anyway."
+msgstr ""
+
+#: libcore/AMFConverter.cpp:563
+#, c-format
+msgid "readAMF0: reference #%d"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:566
+#, c-format
+msgid "readAMF0: invalid reference to object %d (%d known objects)"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:579
+#, c-format
+msgid "amf0 read date: %e"
+msgstr ""
+
 #: libcore/AMFConverter.cpp:597
 msgid ""
 "Date type encoded timezone info %1%, even though this field should not be "
@@ -4722,18 +5382,51 @@ msgstr ""
 msgid "Unhandled button event %s"
 msgstr ""
 
-#: libcore/Button.cpp:955
+#: libcore/Button.cpp:685
+#, c-format
+msgid "Removed button record shifted from depth %d to depth %d"
+msgstr ""
+
+#: libcore/Button.cpp:788
+msgid "Button placed with an init object. This will be ignored."
+msgstr ""
+
+#: libcore/Button.cpp:956
 msgid "Enabled"
 msgstr ""
 
-#: libcore/Button.cpp:960
+#: libcore/Button.cpp:961
 msgid "Button state"
 msgstr ""
 
-#: libcore/Button.cpp:964
+#: libcore/Button.cpp:965
 msgid "Action characters"
 msgstr ""
 
+#: libcore/Button.cpp:994
+msgid "Button.blendMode"
+msgstr ""
+
+#: libcore/Button.cpp:1003
+msgid "Button.cacheAsBitmap"
+msgstr ""
+
+#: libcore/Button.cpp:1012
+msgid "Button.filters"
+msgstr ""
+
+#: libcore/Button.cpp:1021
+msgid "Button.scale9Grid"
+msgstr ""
+
+#: libcore/Button.cpp:1030
+msgid "Button.getTabIndex"
+msgstr ""
+
+#: libcore/Button.cpp:1039
+msgid "Button.setTabIndex"
+msgstr ""
+
 #: libcore/as_environment.cpp:182
 #, c-format
 msgid "invalid path '%s' (p=next_slash=%s)"
@@ -4744,22 +5437,49 @@ msgstr ""
 msgid "invalid path '%s' (dot not allowed after having seen a slash)"
 msgstr ""
 
+#: libcore/as_environment.cpp:332
+#, c-format
+msgid "-------------- %s = %s"
+msgstr ""
+
 #: libcore/as_environment.cpp:346
 #, c-format
 msgid "Path target '%s' not found while setting %s=%s"
 msgstr ""
 
+#: libcore/as_environment.cpp:407
+#, c-format
+msgid "path: %s, var: %s"
+msgstr ""
+
 #: libcore/as_environment.cpp:445
 #, c-format
 msgid "Won't set invalid raw variable name: %s"
 msgstr ""
 
-#: libcore/as_environment.cpp:488
+#: libcore/as_environment.cpp:474
+#, c-format
+msgid ""
+"as_environment::setVariableRaw(%s, %s): neither current target nor original "
+"target are defined, can't set the variable"
+msgstr ""
+
+#: libcore/as_environment.cpp:486
 #, c-format
 msgid "Won't get invalid raw variable name: %s"
 msgstr ""
 
-#: libcore/as_environment.cpp:569
+#: libcore/as_environment.cpp:549
+#, c-format
+msgid "Took %s as _global, returning _global"
+msgstr ""
+
+#: libcore/as_environment.cpp:558
+#, c-format
+msgid "Found %s in _global"
+msgstr ""
+
+#: libcore/as_environment.cpp:567
 #, c-format
 msgid "reference to non-existent variable '%s'"
 msgstr ""
@@ -4835,6 +5555,10 @@ msgid ""
 "dynamic, has a parent, no registered class and no clip events defined)"
 msgstr ""
 
+#: libcore/MovieClip.cpp:852
+msgid "MovieClip.unloadMovie()"
+msgstr ""
+
 #: libcore/MovieClip.cpp:872
 #, c-format
 msgid "Advance movieclip '%s' at frame %u/%u"
@@ -4883,6 +5607,15 @@ msgstr ""
 msgid "MovieClip::advance_movieclip we're in STOP mode"
 msgstr ""
 
+#: libcore/MovieClip.cpp:986
+msgid ""
+"Queuing init actions for DisplayObject %1% in frame %2% of MovieClip %3%"
+msgstr ""
+
+#: libcore/MovieClip.cpp:996
+msgid "Init actions for DisplayObject %1% already executed"
+msgstr ""
+
 #: libcore/MovieClip.cpp:1046
 #, c-format
 msgid "Executing %d tags in frame %d/%d of movieclip %s"
@@ -5112,93 +5845,298 @@ msgstr ""
 msgid "No Media handler registered, won't be able to decode embedded video"
 msgstr ""
 
+#: libcore/Video.cpp:69
+#, c-format
+msgid "Could not create Video Decoder: %s"
+msgstr ""
+
 #: libcore/Video.cpp:138
 msgid "No Video info in video definition"
 msgstr ""
 
-#: libcore/movie_root.cpp:403 libcore/movie_root.cpp:413
+#: libcore/Video.cpp:145
+#, c-format
+msgid "Video instance %s need display video frame (ratio) %d"
+msgstr ""
+
+#: libcore/Video.cpp:154
+#, c-format
+msgid "  current frame == _lastDecodedVideoFrameNum (%d)"
+msgstr ""
+
+#: libcore/Video.cpp:169
+#, c-format
+msgid "  current frame (%d) < _lastDecodedVideoFrameNum (%d)"
+msgstr ""
+
+#: libcore/Video.cpp:180
+#, c-format
+msgid "  decoding embedded frames from %d to %d for Video object %s"
+msgstr ""
+
+#: libcore/as_function.cpp:94
+#, c-format
+msgid "Native function called as constructor threw exception: %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:238
+#, c-format
+msgid "ActionParserException thrown during setRootMovie: %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:253
+#, c-format
+msgid "No user interface registered, assuming 'Yes' answer to question: %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:296
+msgid "Disabling scripts: %1%"
+msgstr ""
+
+#: libcore/movie_root.cpp:338
+msgid "Replacing starting movie"
+msgstr ""
+
+#: libcore/movie_root.cpp:343
+msgid "Loading into _level0"
+msgstr ""
+
+#: libcore/movie_root.cpp:391
+#, c-format
+msgid "Before swapLevels (source depth %d, target depth %d) levels are: "
+msgstr ""
+
+#: libcore/movie_root.cpp:394 libcore/movie_root.cpp:445
+#, c-format
+msgid " %d: %p (%s @ depth %d)"
+msgstr ""
+
+#: libcore/movie_root.cpp:402 libcore/movie_root.cpp:412
 #, c-format
 msgid ""
 "%s.swapDepth(%d): movie has a depth (%d) below static depth zone (%d), won't "
 "swap its depth"
 msgstr ""
 
-#: libcore/movie_root.cpp:479
+#: libcore/movie_root.cpp:423
+#, c-format
+msgid "%s.swapDepth(%d): target depth (%d) contains no movie"
+msgstr ""
+
+#: libcore/movie_root.cpp:443
+msgid "After swapLevels levels are: "
+msgstr ""
+
+#: libcore/movie_root.cpp:470
+msgid ""
+"movie_root::dropLevel called against a movie not found in the levels "
+"container"
+msgstr ""
+
+#: libcore/movie_root.cpp:477
 msgid "Original root movie can't be removed"
 msgstr ""
 
-#: libcore/movie_root.cpp:630
+#: libcore/movie_root.cpp:496
+#, c-format
+msgid ""
+"TESTME: loadMovie called on level %d which is not available at load time, "
+"skipped placement for now"
+msgstr ""
+
+#: libcore/movie_root.cpp:627
 #, c-format
 msgid "ActionLimits hit notifying key listeners: %s."
 msgstr ""
 
-#: libcore/movie_root.cpp:900
+#: libcore/movie_root.cpp:864
+msgid ""
+"movie_root tracking a streaming sound, but the sound handler is not "
+"streaming!"
+msgstr ""
+
+#: libcore/movie_root.cpp:896
 msgid ""
 "Time exceeded (%1% secs) while attempting to catch up to streaming sound. "
 "Give up on synchronization?"
 msgstr ""
 
-#: libcore/movie_root.cpp:952
+#: libcore/movie_root.cpp:948
 #, c-format
 msgid "Buffer overread during advance: %s"
 msgstr ""
 
-#: libcore/movie_root.cpp:1070
+#: libcore/movie_root.cpp:1008
+msgid "original root movie had null bounds, not displaying"
+msgstr ""
+
+#: libcore/movie_root.cpp:1031
+#, c-format
+msgid "_level%u has null frame size, skipping"
+msgstr ""
+
+#: libcore/movie_root.cpp:1066
 #, c-format
 msgid "ActionLimits hit notifying mouse events: %s."
 msgstr ""
 
-#: libcore/movie_root.cpp:1677
+#: libcore/movie_root.cpp:1316
+#, c-format
+msgid "Going to or from scaleMode=noScale. Viewport:%dx%d Def:%dx%d"
+msgstr ""
+
+#: libcore/movie_root.cpp:1390
+#, c-format
+msgid "Processing %d actions in priority queue %d (call %u)"
+msgstr ""
+
+#: libcore/movie_root.cpp:1406
+#, c-format
+msgid "Actions pushed in priority %d (< %d), restarting the scan (call %u)"
+msgstr ""
+
+#: libcore/movie_root.cpp:1417
+#, c-format
+msgid "Done processing actions in priority queue %d (call %u)"
+msgstr ""
+
+#: libcore/movie_root.cpp:1505
+#, c-format
+msgid "Pushed action buffer for target %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:1558
+#, c-format
+msgid "Couldn't process ExternalInterface Call %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:1575
+#, c-format
+msgid "Processing %s call from the Browser."
+msgstr ""
+
+#: libcore/movie_root.cpp:1603
+msgid "ExternalInterface::GotoFrame()"
+msgstr ""
+
+#: libcore/movie_root.cpp:1611
+msgid "ExternalInterface::LoadMovie()"
+msgstr ""
+
+#: libcore/movie_root.cpp:1672
 #, c-format
 msgid "Attempt to write response to ExternalInterface requests fd %d"
 msgstr ""
 
-#: libcore/movie_root.cpp:1681
+#: libcore/movie_root.cpp:1676
 #, c-format
 msgid "Could not write to user-provided host requests fd %d: %s"
 msgstr ""
 
-#: libcore/movie_root.cpp:1842 libcore/movie_root.cpp:1874
-#: libcore/movie_root.cpp:1930
+#: libcore/movie_root.cpp:1681
+#, c-format
+msgid "No response needed for %s request"
+msgstr ""
+
+#: libcore/movie_root.cpp:1691
+#, c-format
+msgid "Checking %d timers for expiry"
+msgstr ""
+
+#: libcore/movie_root.cpp:1837 libcore/movie_root.cpp:1869
+#: libcore/movie_root.cpp:1925
 #, c-format
 msgid "Could not write to browser fd #%d: %s"
 msgstr ""
 
-#: libcore/movie_root.cpp:2155
+#: libcore/movie_root.cpp:2043
+#, c-format
+msgid "Global instance list grew to %d entries"
+msgstr ""
+
+#: libcore/movie_root.cpp:2052
+#, c-format
+msgid "---- movie_root::advance: %d live DisplayObjects in the global list"
+msgstr ""
+
+#: libcore/movie_root.cpp:2114
+#, c-format
+msgid ""
+"Evaluating DisplayObject target path: element '%s' of path '%s' not found"
+msgstr ""
+
+#: libcore/movie_root.cpp:2128
+#, c-format
+msgid "%s: HOSTFD is %d"
+msgstr ""
+
+#: libcore/movie_root.cpp:2149
 #, c-format
 msgid "Launching URL: %s"
 msgstr ""
 
-#: libcore/movie_root.cpp:2158
+#: libcore/movie_root.cpp:2152
 #, c-format
 msgid "Fork failed launching url opener '%s'"
 msgstr ""
 
-#: libcore/movie_root.cpp:2199
+#: libcore/movie_root.cpp:2193
 #, c-format
 msgid "Attempt to write geturl requests fd #%d"
 msgstr ""
 
-#: libcore/movie_root.cpp:2205
+#: libcore/movie_root.cpp:2199
 #, c-format
 msgid "Could only write %d bytes to fd #%d"
 msgstr ""
 
-#: libcore/movie_root.cpp:2219
+#: libcore/movie_root.cpp:2213
 msgid ""
 "SWF ScriptLimits tag attempting to set recursionLimit=%1% and scriptsTimeout="
 "%2% ignored as per rcfile directive"
 msgstr ""
 
-#: libcore/movie_root.cpp:2228
+#: libcore/movie_root.cpp:2222
 #, c-format
 msgid "Setting script limits: max recursion %d, timeout %d seconds"
 msgstr ""
 
-#: libcore/movie_root.cpp:2293
+#: libcore/movie_root.cpp:2287
 msgid "Live MovieClips"
 msgstr ""
 
+#: libcore/movie_root.cpp:2389
+#, c-format
+msgid "LoadableObject Loaded %d bytes, reaching %d/%d"
+msgstr ""
+
+#: libcore/movie_root.cpp:2396
+#, c-format
+msgid "LoadableObject reached EOF (%d/%d loaded)"
+msgstr ""
+
+#: libcore/movie_root.cpp:2416
+#, c-format
+msgid "%s to utf8 conversion in LoadableObject input parsing"
+msgstr ""
+
+#: libcore/movie_root.cpp:2439
+#, c-format
+msgid ""
+"Hosting application registered no callback for events/queries, can't call %s"
+"(%s)"
+msgstr ""
+
+#: libcore/movie_root.cpp:2590
+#, c-format
+msgid "    advancing DisplayObject %s"
+msgstr ""
+
+#: libcore/movie_root.cpp:2596
+#, c-format
+msgid "    DisplayObject %s is unloaded, not advancing it"
+msgstr ""
+
 #: libcore/abc/AbcBlock.cpp:64 libcore/abc/AbcBlock.cpp:132
 msgid "ABC: Finalizing trait yielded bad type for slot."
 msgstr ""
@@ -5399,6 +6337,11 @@ msgstr ""
 msgid "Could not find SWF inside an exe file"
 msgstr ""
 
+#: libcore/MovieFactory.cpp:231
+#, c-format
+msgid "unknown file type, buf is %c%c%c"
+msgstr ""
+
 #: libcore/MovieFactory.cpp:273
 #, c-format
 msgid "Can't read image file from %s"
@@ -5419,40 +6362,139 @@ msgstr ""
 msgid "streamProvider opener can't open '%s'"
 msgstr ""
 
-#: libcore/as_object.cpp:440
+#: libcore/PropertyList.cpp:106
+#, c-format
+msgid "Simple AS property %s inserted with flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:195
+#, c-format
+msgid "  %s: %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:215
+#, c-format
+msgid "AS GetterSetter %s replaced copying flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:225
+#, c-format
+msgid "AS GetterSetter %s inserted with flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:248
+#, c-format
+msgid "Native GetterSetter %s replaced copying flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:258
+#, c-format
+msgid "Native GetterSetter %s in namespace %s inserted with flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:274
+#, c-format
+msgid "Property %s already exists, can't addDestructiveGetter"
+msgstr ""
+
+#: libcore/PropertyList.cpp:286
+#, c-format
+msgid "Destructive AS property %s inserted with flags %s"
+msgstr ""
+
+#: libcore/PropertyList.cpp:306
+#, c-format
+msgid "Destructive native property %s with flags %s"
+msgstr ""
+
+#: libcore/as_object.cpp:151
+msgid "Super has no associated prototype"
+msgstr ""
+
+#: libcore/as_object.cpp:169
+msgid "Super has no associated constructor"
+msgstr ""
+
+#: libcore/as_object.cpp:353
+#, c-format
+msgid "add_property: property %s is being watched"
+msgstr ""
+
+#: libcore/as_object.cpp:361
+#, c-format
+msgid "Property %s deleted by trigger on create (getter-setter)"
+msgstr ""
+
+#: libcore/as_object.cpp:439
 #, c-format
 msgid "Caught exception: %s"
 msgstr ""
 
-#: libcore/as_object.cpp:628
+#: libcore/as_object.cpp:627
 #, c-format
 msgid "Attempt to set read-only property '%s'"
 msgstr ""
 
-#: libcore/as_object.cpp:640
+#: libcore/as_object.cpp:639
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: libcore/as_object.cpp:655
+#: libcore/as_object.cpp:654
 #, c-format
 msgid "Unknown failure in setting property '%s' on object '%p'"
 msgstr ""
 
-#: libcore/as_object.cpp:684
+#: libcore/as_object.cpp:683
 #, c-format
 msgid "Attempt to initialize read-only property '%s' on object '%p' twice"
 msgstr ""
 
-#: libcore/as_object.cpp:850
+#: libcore/as_object.cpp:779
+#, c-format
+msgid "Object %p can't be an instance of an object (%p) with no 'prototype'"
+msgstr ""
+
+#: libcore/as_object.cpp:788
+#, c-format
+msgid ""
+"Object %p can't be an instance of an object (%p) with non-object "
+"'prototype' (%s)"
+msgstr ""
+
+#: libcore/as_object.cpp:807
+#, c-format
+msgid ""
+"Object %p is an instance of constructor %p as the constructor exposes our "
+"__proto__ %p"
+msgstr ""
+
+#: libcore/as_object.cpp:819
+#, c-format
+msgid ""
+"Object %p __proto__ %p had one interface matching with the constructor "
+"prototype %p"
+msgstr ""
+
+#: libcore/as_object.cpp:845
 msgid "Circular inheritance chain detected during isPrototypeOf call"
 msgstr ""
 
-#: libcore/as_object.cpp:860
+#: libcore/as_object.cpp:855
 #, c-format
 msgid "%d members of object %p follow"
 msgstr ""
 
+#: libcore/as_object.cpp:997
+#, c-format
+msgid "No watch for property %s"
+msgstr ""
+
+#: libcore/as_object.cpp:1003
+#, c-format
+msgid "Watch on %s not removed (is a getter-setter)"
+msgstr ""
+
 #: libdevice/egl/eglDevice.cpp:87 libdevice/egl/eglDevice.cpp:109
 msgid "Couldn't initialize EGL device!"
 msgstr ""

http://git.savannah.gnu.org/cgit//commit/?id=0b3438282e5b94065525d3c4f58646cfa51eb757


commit 0b3438282e5b94065525d3c4f58646cfa51eb757
Author: Rob Savoye <address@hidden>
Date:   Thu Dec 29 16:00:24 2011 -0700

    add macro so new strings get found by xgettext, so they can be translated.

diff --git a/libcore/AMFConverter.cpp b/libcore/AMFConverter.cpp
index 43e4e0b..41e82ed 100644
--- a/libcore/AMFConverter.cpp
+++ b/libcore/AMFConverter.cpp
@@ -66,7 +66,7 @@ public:
 
         // Tested with SharedObject and AMFPHP
         if (val.is_function()) {
-            log_debug("AMF0: skip serialization of FUNCTION property");
+            log_debug(_("AMF0: skip serialization of FUNCTION property"));
             return true;
         }
 
@@ -81,7 +81,7 @@ public:
         if (key == NSV::PROP_uuPROTOuu || key == NSV::PROP_CONSTRUCTOR)
         {
 #ifdef GNASH_DEBUG_AMF_SERIALIZE
-            log_debug(" skip serialization of specially-named property %s",
+            log_debug(_(" skip serialization of specially-named property %s"),
                     _st.value(key));
 #endif
             return true;
@@ -91,11 +91,11 @@ public:
         const std::string& name = _st.value(key);
 
 #ifdef GNASH_DEBUG_AMF_SERIALIZE
-        log_debug(" serializing property %s", name);
+        log_debug(_(" serializing property %s"), name);
 #endif
         _writer.writePropertyName(name);
         if (!val.writeAMF0(_writer)) {
-            log_error("Problems serializing an object's member");
+            log_error(_("Problems serializing an object's member"));
             _error = true;
         }
         return true;
@@ -209,8 +209,8 @@ Writer::writeObject(as_object* obj)
                 for (size_t i = 0; i < len; ++i) {
                     elem = getMember(*obj,arrayKey(vm, i));
                     if (!elem.writeAMF0(*this)) {
-                        log_error("Problems serializing strict array "
-                                "member %d=%s", i, elem);
+                        log_error(_("Problems serializing strict array "
+                                    "member %d=%s"), i, elem);
                         return false;
                     }
                 }
@@ -239,7 +239,7 @@ Writer::writeObject(as_object* obj)
     ObjectSerializer props(*this, vm);
     obj->visitProperties<IsEnumerable>(props);
     if (!props.success()) {
-        log_error("Could not serialize object");
+        log_error(_("Could not serialize object"));
         return false;
     }
     _buf.appendNetworkShort(0);
@@ -316,7 +316,7 @@ Reader::operator()(as_value& val, Type t)
         switch (t) {
             
             default:
-                log_error("Unknown AMF type %s! Cannot proceed", t);
+                log_error(_("Unknown AMF type %s! Cannot proceed"), t);
                 // A fatal error, since we don't know how much to parse
                 return false;
 
@@ -373,7 +373,7 @@ Reader::operator()(as_value& val, Type t)
         }
     }
     catch (const AMFException& e) {
-        log_error("AMF parsing error: %s", e.what());
+        log_error(_("AMF parsing error: %s"), e.what());
         return false;
     }
 
@@ -404,14 +404,14 @@ as_value
 Reader::readStrictArray()
 {
     if (_end - _pos < 4) {
-        throw AMFException("Read past _end of buffer for strict array length");
+        throw AMFException(_("Read past _end of buffer for strict array 
length"));
     }
 
     const boost::uint32_t li = readNetworkLong(_pos);
     _pos += 4;
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-    log_debug("amf0 starting read of STRICT_ARRAY with %i elements", li);
+    log_debug(_("amf0 starting read of STRICT_ARRAY with %i elements"), li);
 #endif
     
     as_object* array = _global.createArray();
@@ -422,7 +422,7 @@ Reader::readStrictArray()
 
         // Recurse.
         if (!operator()(arrayElement)) {
-            throw AMFException("Unable to read array elements");
+            throw AMFException(_("Unable to read array elements"));
         }
 
         callMethod(array, NSV::PROP_PUSH, arrayElement);
@@ -439,7 +439,7 @@ Reader::readArray()
 {
 
     if (_end - _pos < 4) {
-        throw AMFException("Read past _end of buffer for array length");
+        throw AMFException(_("Read past _end of buffer for array length"));
     }
 
     const boost::uint32_t li = readNetworkLong(_pos);
@@ -455,7 +455,7 @@ Reader::readArray()
     array->set_member(NSV::PROP_LENGTH, li);
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-    log_debug("amf0 starting read of ECMA_ARRAY with %i elements", li);
+    log_debug(_("amf0 starting read of ECMA_ARRAY with %i elements"), li);
 #endif
 
     as_value objectElement;
@@ -465,8 +465,8 @@ Reader::readArray()
         // It seems we don't mind about this situation, although it means
         // the next read will fail.
         if (_end - _pos < 2) {
-            log_error("MALFORMED AMF: premature _end of ECMA_ARRAY "
-                    "block");
+            log_error(_("MALFORMED AMF: premature _end of ECMA_ARRAY "
+                        "block"));
             break;
         }
         const boost::uint16_t strlen = readNetworkShort(_pos);
@@ -477,8 +477,8 @@ Reader::readArray()
         if (!strlen) {
             // expect an object terminator here
             if (*_pos != OBJECT_END_AMF0) {
-                log_error("MALFORMED AMF: empty member name not "
-                        "followed by OBJECT_END_AMF0 byte");
+                log_error(_("MALFORMED AMF: empty member name not "
+                            "followed by OBJECT_END_AMF0 byte"));
             }
             ++_pos;
             break;
@@ -486,22 +486,22 @@ Reader::readArray()
         
         // Throw exception instead?
         if (_end - _pos < strlen) {
-            log_error("MALFORMED AMF: premature _end of ECMA_ARRAY "
-                    "block");
+            log_error(_("MALFORMED AMF: premature _end of ECMA_ARRAY "
+                      "block"));
             break;
         }
 
         const std::string name(reinterpret_cast<const char*>(_pos), strlen);
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-        log_debug("amf0 ECMA_ARRAY prop name is %s", name);
+        log_debug(_("amf0 ECMA_ARRAY prop name is %s"), name);
 #endif
 
         _pos += strlen;
 
         // Recurse to read element.
         if (!operator()(objectElement)) {
-            throw AMFException("Unable to read array element");
+            throw AMFException(_("Unable to read array element"));
         }
         array->set_member(getURI(vm, name), objectElement);
     }
@@ -515,7 +515,7 @@ Reader::readObject()
     as_object* obj = createObject(_global); 
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-    log_debug("amf0 starting read of OBJECT");
+    log_debug(_("amf0 starting read of OBJECT"));
 #endif
 
     _objectRefs.push_back(obj);
@@ -525,7 +525,7 @@ Reader::readObject()
     for (;;) {
 
         if (!operator()(tmp, STRING_AMF0)) {
-            throw AMFException("Could not read object property name");
+            throw AMFException(_("Could not read object property name"));
         }
         keyString = tmp.to_string();
 
@@ -536,8 +536,8 @@ Reader::readObject()
             }
             else {
                 // What is the point?
-                log_error("AMF buffer terminated just before "
-                        "object _end byte. continuing anyway.");
+                log_error(_("AMF buffer terminated just before "
+                            "object _end byte. continuing anyway."));
             }
             return as_value(obj);
         }
@@ -560,11 +560,11 @@ Reader::readReference()
     _pos += 2;
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-    log_debug("readAMF0: reference #%d", si);
+    log_debug(_("readAMF0: reference #%d"), si);
 #endif
     if (si < 1 || si > _objectRefs.size()) {
-        log_error("readAMF0: invalid reference to object %d (%d known "
-                "objects)", si, _objectRefs.size());
+        log_error(_("readAMF0: invalid reference to object %d (%d known "
+                  "objects)"), si, _objectRefs.size());
         throw AMFException("Reference to invalid object reference");
     }
     return as_value(_objectRefs[si - 1]);
@@ -576,7 +576,7 @@ Reader::readDate()
     const double d = readNumber(_pos, _end);
 
 #ifdef GNASH_DEBUG_AMF_DESERIALIZE
-    log_debug("amf0 read date: %e", dub);
+    log_debug(_("amf0 read date: %e"), dub);
 #endif
 
     as_function* ctor = getMember(_global, NSV::CLASS_DATE).to_function();
diff --git a/libcore/Button.cpp b/libcore/Button.cpp
index 4cc267c..4c42e9e 100644
--- a/libcore/Button.cpp
+++ b/libcore/Button.cpp
@@ -682,7 +682,8 @@ Button::set_current_state(MouseState new_state)
                     int oldDepth = oldch->get_depth();
                     int newDepth = DisplayObject::removedDepthOffset - 
oldDepth;
 #ifdef GNASH_DEBUG_BUTTON_DISPLAYLIST
-                    log_debug("Removed button record shifted from depth %d to 
depth %d", oldDepth, newDepth);
+                    log_debug(_("Removed button record shifted from depth %d 
to depth %d"),
+                             oldDepth, newDepth);
 #endif
                     oldch->set_depth(newDepth);
                 }
@@ -784,8 +785,8 @@ Button::construct(as_object* initObj)
     // (see misc-ming.all/attachMovieTest.swf).
     if (initObj) {
         IF_VERBOSE_ASCODING_ERRORS(
-            log_aserror("Button placed with an init object. This will "
-                "be ignored.");
+               log_aserror(_("Button placed with an init object. This will "
+                             "be ignored."));
         );
     }
 
@@ -990,7 +991,7 @@ as_value
 button_blendMode(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.blendMode"));
+    LOG_ONCE(log_unimpl(_("Button.blendMode")));
     UNUSED(obj);
     return as_value();
 }
@@ -999,7 +1000,7 @@ as_value
 button_cacheAsBitmap(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.cacheAsBitmap"));
+    LOG_ONCE(log_unimpl(_("Button.cacheAsBitmap")));
     UNUSED(obj);
     return as_value();
 }
@@ -1008,7 +1009,7 @@ as_value
 button_filters(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.filters"));
+    LOG_ONCE(log_unimpl(_("Button.filters")));
     UNUSED(obj);
     return as_value();
 }
@@ -1017,7 +1018,7 @@ as_value
 button_scale9Grid(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.scale9Grid"));
+    LOG_ONCE(log_unimpl(_("Button.scale9Grid")));
     UNUSED(obj);
     return as_value();
 }
@@ -1026,7 +1027,7 @@ as_value
 button_getTabIndex(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.getTabIndex"));
+    LOG_ONCE(log_unimpl(_("Button.getTabIndex")));
     UNUSED(obj);
     return as_value();
 }
@@ -1035,7 +1036,7 @@ as_value
 button_setTabIndex(const fn_call& fn)
 {
     Button* obj = ensure<IsDisplayObject<Button> >(fn);
-    LOG_ONCE(log_unimpl("Button.setTabIndex"));
+    LOG_ONCE(log_unimpl(_("Button.setTabIndex")));
     UNUSED(obj);
     return as_value();
 }
@@ -1057,5 +1058,5 @@ button_getDepth(const fn_call& fn)
 // mode: C++
 // c-basic-offset: 8 
 // tab-width: 8
-// indent-tabs-mode: t
+// indent-tabs-mode: nil
 // End:
diff --git a/libcore/CharacterProxy.cpp b/libcore/CharacterProxy.cpp
index 88f8976..c2744fa 100644
--- a/libcore/CharacterProxy.cpp
+++ b/libcore/CharacterProxy.cpp
@@ -34,8 +34,8 @@ CharacterProxy::checkDangling() const
        if (_ptr && _ptr->isDestroyed()) {
                _tgt = _ptr->getOrigTarget();
 #ifdef GNASH_DEBUG_SOFT_REFERENCES
-               log_debug("char %s (%s) was destroyed, stored its orig target "
-                "(%s) for later rebinding", _ptr->getTarget(), typeName(*_ptr),
+               log_debug(_("char %s (%s) was destroyed, stored its orig target 
"
+                            "(%s) for later rebinding"), _ptr->getTarget(), 
typeName(*_ptr),
                 _tgt);
 #endif
                _ptr = 0;
diff --git a/libcore/ClassHierarchy.cpp b/libcore/ClassHierarchy.cpp
index 13a102e..e7fae18 100644
--- a/libcore/ClassHierarchy.cpp
+++ b/libcore/ClassHierarchy.cpp
@@ -74,21 +74,21 @@ public:
     virtual as_value call(const fn_call& fn)
     {
         string_table& st = getStringTable(fn);
-        log_debug("Loading native class %s", st.value(getName(_decl.uri)));
+        log_debug(_("Loading native class %s"), st.value(getName(_decl.uri)));
 
         _decl.initializer(*mTarget, _decl.uri);
         // Successfully loaded it, now find it, set its proto, and return.
         as_value us;
         if (mTarget->get_member(_decl.uri, &us)) {
             if (!toObject(us, getVM(fn))) {
-                log_error("Native class %s is not an object after "
-                        "initialization (%s)",
+                log_error(_("Native class %s is not an object after "
+                         "initialization (%s)"),
                         st.value(getName(_decl.uri)), us);
             }
         }
         else
         {
-            log_error("Native class %s is not found after initialization", 
+            log_error(_("Native class %s is not found after initialization"),
                 st.value(getName(_decl.uri)));
         }
         return us;
diff --git a/libcore/DisplayList.cpp b/libcore/DisplayList.cpp
index c77c8af..3ee3c22 100644
--- a/libcore/DisplayList.cpp
+++ b/libcore/DisplayList.cpp
@@ -309,7 +309,7 @@ DisplayList::moveDisplayObject(int depth, const SWFCxForm* 
color_xform,
     }
 
     if (ch->unloaded()) {
-        log_error("Request to move an unloaded DisplayObject");
+        log_error(_("Request to move an unloaded DisplayObject"));
         assert(!ch->unloaded());
     }
 
@@ -377,8 +377,8 @@ DisplayList::swapDepths(DisplayObject* ch1, int newdepth)
 
     if (newdepth < DisplayObject::staticDepthOffset) {
         IF_VERBOSE_ASCODING_ERRORS(
-        log_aserror("%s.swapDepth(%d) : ignored call with target depth "
-            "less then %d", ch1->getTarget(), newdepth,
+           log_aserror(_("%s.swapDepth(%d) : ignored call with target depth "
+                         "less then %d"), ch1->getTarget(), newdepth,
             DisplayObject::staticDepthOffset);
         );
         return;
@@ -401,8 +401,8 @@ DisplayList::swapDepths(DisplayObject* ch1, int newdepth)
             boost::bind(std::not2(DepthLessThan()), _1, newdepth));
 
     if (it1 == _charsByDepth.end()) {
-        log_error("First argument to DisplayList::swapDepth() "
-                "is NOT a DisplayObject in the list. Call ignored.");
+        log_error(_("First argument to DisplayList::swapDepth() "
+                   "is NOT a DisplayObject in the list. Call ignored."));
         return;
     }
 
@@ -872,10 +872,10 @@ DisplayList::mergeDisplayList(DisplayList& newList, 
DisplayObject& o)
             
             if (found == _charsByDepth.end())
             {
-                log_error("mergeDisplayList: DisplayObject %s (%s at depth "
+                log_error)_("mergeDisplayList: DisplayObject %s (%s at depth "
                         "%d [%d]) about to be discarded in given display list"
                         " is not marked as unloaded and not found in the"
-                        " merged current displaylist",
+                           " merged current displaylist"),
                         ch->getTarget(), typeName(*ch), ch->get_depth(),
                         ch->get_depth()-DisplayObject::staticDepthOffset);
                 std::abort();
diff --git a/libcore/DisplayObject.cpp b/libcore/DisplayObject.cpp
index 4238f0b..c644944 100644
--- a/libcore/DisplayObject.cpp
+++ b/libcore/DisplayObject.cpp
@@ -118,8 +118,8 @@ DisplayObject::DisplayObject(movie_root& mr, as_object* 
object,
 void
 DisplayObject::getLoadedMovie(Movie* extern_movie)
 {
-    LOG_ONCE(
-    log_unimpl("loadMovie against a %s DisplayObject", typeName(*this))
+    LOG_ONCE(log_unimpl(_("loadMovie against a %s DisplayObject"),
+                         typeName(*this))
     );
 
     // TODO: look at the MovieClip implementation, but most importantly
@@ -203,7 +203,7 @@ DisplayObject::set_invalidated(const char* debug_file, int 
debug_line)
         _invalidated = true;
         
 #ifdef DEBUG_SET_INVALIDATED
-        log_debug("%p set_invalidated() of %s in %s:%d",
+        log_debug(_("%p set_invalidated() of %s in %s:%d"),
             (void*)this, getTarget(), debug_file, debug_line);
 #else
         UNUSED(debug_file);
@@ -1349,7 +1349,7 @@ setName(DisplayObject& o, const as_value& val)
 void
 setSoundBufTime(DisplayObject& /*o*/, const as_value& /*val*/)
 {
-    LOG_ONCE(log_unimpl("_soundbuftime setting"));
+    LOG_ONCE(log_unimpl(_("_soundbuftime setting")));
 }
 
 as_value
@@ -1383,7 +1383,7 @@ setWidth(DisplayObject& o, const as_value& val)
 as_value
 getFocusRect(DisplayObject& o)
 {
-    LOG_ONCE(log_unimpl("_focusrect"));
+    LOG_ONCE(log_unimpl(_("_focusrect")));
 
     const boost::tribool fr = o.focusRect();
     if (boost::indeterminate(fr)) {
@@ -1401,7 +1401,7 @@ getFocusRect(DisplayObject& o)
 void
 setFocusRect(DisplayObject& o, const as_value& val)
 {
-    LOG_ONCE(log_unimpl("_focusrect"));
+    LOG_ONCE(log_unimpl(_("_focusrect")));
 
     VM& vm = getVM(*getObject(&o));
     if (!o.parent()) {
diff --git a/libcore/ExternalInterface.cpp b/libcore/ExternalInterface.cpp
index 0a8d55f..66835d1 100644
--- a/libcore/ExternalInterface.cpp
+++ b/libcore/ExternalInterface.cpp
@@ -130,7 +130,7 @@ ExternalInterface::_toXML(const as_value &val)
         as_object *obj = val.get_object();
         ss << _objectToXML(obj);
     } else {
-        log_error("Can't convert unknown type %d", val.to_string());
+        log_error(_("Can't convert unknown type %d"), val.to_string());
     }
 
     return ss.str();
@@ -149,7 +149,7 @@ ExternalInterface::ExternalEventCheck(int fd)
         if (bytes == 0) {
             return error;
         }
-        log_debug("There are %d bytes in the network buffer", bytes);
+        log_debug(_("There are %d bytes in the network buffer"), bytes);
         boost::scoped_array<char> buffer(new char[bytes + 1]);
         // Since we know how bytes are in the network buffer, allocate
         // some memory to read the data.
@@ -260,7 +260,7 @@ ExternalInterface::parseXML(const std::string &xml)
         }
     }
 
-//    log_debug("Argument is: %s", value.to_string());
+//    log_debug(_("Argument is: %s"), value.to_string());
     return value;
 }
 
@@ -344,7 +344,7 @@ ExternalInterface::readBrowser(int fd)
         return empty;
     }
 
-    log_debug("There are %d bytes in the network buffer", bytes);
+    log_debug(_("There are %d bytes in the network buffer"), bytes);
 
     std::string buf(bytes, '\0');
 
diff --git a/libcore/Font.cpp b/libcore/Font.cpp
index f7a75e9..b2555c4 100644
--- a/libcore/Font.cpp
+++ b/libcore/Font.cpp
@@ -198,7 +198,7 @@ Font::codeTableLookup(int glyph, bool embedded) const
         // that defines the same font twice and ends up with a glyph
         // table shorter than the number of glyphs. We don't know
         // whether it's a SWF or a Gnash bug.
-        log_error("Failed to find glyph %s in %s font %s",
+        log_error(_("Failed to find glyph %s in %s font %s"),
                 glyph, embedded ? "embedded" : "device", _name);
         return 0;
     }
@@ -273,8 +273,8 @@ Font::unitsPerEM(bool embed) const
     
     FreetypeGlyphsProvider* ft = ftProvider();
     if (!ft) {
-        log_error("Device font provider was not initialized, "
-                    "can't get unitsPerEM");
+        log_error(_("Device font provider was not initialized, "
+                    "can't get unitsPerEM"));
         return 0; 
     }
 
@@ -295,9 +295,9 @@ Font::add_os_glyph(boost::uint16_t code)
     std::auto_ptr<SWF::ShapeRecord> sh = ft->getGlyph(code, advance);
 
     if (!sh.get()) {
-        log_error("Could not create shape "
+        log_error(_("Could not create shape "
                 "glyph for DisplayObject code %u (%c) with "
-                "device font %s (%p)", code, code, _name, ft);
+                   "device font %s (%p)"), code, code, _name, ft);
         return -1;
     }
 
@@ -329,15 +329,15 @@ Font::ftProvider() const
     if (_ftProvider.get()) return _ftProvider.get();
 
     if (_name.empty()) {
-        log_error("No name associated with this font, can't use device "
-                "fonts (should I use a default one?)");
+        log_error(_("No name associated with this font, can't use device "
+                   "fonts (should I use a default one?)"));
         return 0;
     }
 
     _ftProvider = FreetypeGlyphsProvider::createFace(_name, _bold, _italic);
     
     if (!_ftProvider.get()) {
-        log_error("Could not create a freetype face %s", _name);
+        log_error(_("Could not create a freetype face %s"), _name);
         return 0;
     }
     
diff --git a/libcore/FreetypeGlyphsProvider.cpp 
b/libcore/FreetypeGlyphsProvider.cpp
index babf8e8..f1b2484 100644
--- a/libcore/FreetypeGlyphsProvider.cpp
+++ b/libcore/FreetypeGlyphsProvider.cpp
@@ -153,7 +153,7 @@ private:
     int moveTo(const FT_Vector* to)
     {
 #ifdef DEBUG_OUTLINE_DECOMPOSITION 
-        log_debug("moveTo: %ld,%ld", to->x, to->y);
+        log_debug(_("moveTo: %ld,%ld"), to->x, to->y);
 #endif
         _x = static_cast<boost::int32_t>(to->x * _scale);
         _y = - static_cast<boost::int32_t>(to->y * _scale);
@@ -166,7 +166,7 @@ private:
     int lineTo(const FT_Vector* to)
     {
 #ifdef DEBUG_OUTLINE_DECOMPOSITION 
-        log_debug("lineTo: %ld,%ld", to->x, to->y);
+        log_debug(_("lineTo: %ld,%ld"), to->x, to->y);
 #endif
         _x = static_cast<boost::int32_t>(to->x * _scale);
         _y = - static_cast<boost::int32_t>(to->y * _scale);
@@ -178,7 +178,7 @@ private:
     int conicTo(const FT_Vector* ctrl, const FT_Vector* to)
     {
 #ifdef DEBUG_OUTLINE_DECOMPOSITION 
-        log_debug("conicTo: %ld,%ld %ld,%ld", ctrl->x, ctrl->y, to->x, to->y);
+        log_debug(_("conicTo: %ld,%ld %ld,%ld"), ctrl->x, ctrl->y, to->x, 
to->y);
 #endif
         boost::int32_t x1 = static_cast<boost::int32_t>(ctrl->x * _scale);
         boost::int32_t y1 = static_cast<boost::int32_t>(ctrl->y * _scale);
@@ -193,7 +193,7 @@ private:
     cubicTo(const FT_Vector* ctrl1, const FT_Vector* ctrl2, const FT_Vector* 
to)
     {
 #ifdef DEBUG_OUTLINE_DECOMPOSITION 
-        log_debug("cubicTo: %ld,%ld %ld,%ld %ld,%ld", ctrl1->x,
+        log_debug(_("cubicTo: %ld,%ld %ld,%ld %ld,%ld"), ctrl1->x,
                 ctrl1->y, ctrl2->x, ctrl2->y, to->x, to->y);
 #endif
         float x = ctrl1->x + ( (ctrl2->x - ctrl1->x) * 0.5 );
@@ -325,15 +325,16 @@ FreetypeGlyphsProvider::getFontFilename(const std::string 
&name,
 
     if ( fs ) {
 #ifdef GNASH_DEBUG_DEVICEFONTS
-        log_debug("Found %d fonts matching the family %s (using "
-                "first)", fs->nfont, name);
+        log_debug(_("Found %d fonts matching the family %s (using "
+                    "first)"), fs->nfont, name);
 #endif
 
         for (int j = 0; j < fs->nfont; j++) {
             FcChar8 *file;
             if (FcPatternGetString (fs->fonts[j], FC_FILE, 0, &file) != 
FcResultMatch) {
 #ifdef GNASH_DEBUG_DEVICEFONTS
-        log_debug("Matching font %d has unknown filename, skipping", j);
+                log_debug(_("Matching font %d has unknown filename, skipping"),
+                          j);
 #endif
         continue;
             }
@@ -342,7 +343,7 @@ FreetypeGlyphsProvider::getFontFilename(const std::string 
&name,
             FcFontSetDestroy(fs);
 
 #ifdef GNASH_DEBUG_DEVICEFONTS
-            log_debug("Loading font from file %d", filename);
+            log_debug(_("Loading font from file %d"), filename);
 #endif
             return true;
 
@@ -351,13 +352,13 @@ FreetypeGlyphsProvider::getFontFilename(const std::string 
&name,
         FcFontSetDestroy(fs);
     }
 
-    log_error("No device font matches the name '%s', using hard-coded"
-            " font filename", name);
+    log_error(_("No device font matches the name '%s', using hard-coded"
+                " font filename"), name);
     filename = DEFAULT_FONTFILE;
     return true;
 #else
-    log_error("Font filename matching not implemented (no fontconfig"
-            " support built-in), using hard-coded font filename",
+    log_error(_("Font filename matching not implemented (no fontconfig"
+                " support built-in), using hard-coded font filename"),
             DEFAULT_FONTFILE);
     filename = DEFAULT_FONTFILE;
     return true;
@@ -389,7 +390,7 @@ FreetypeGlyphsProvider::createFace(const std::string& name, 
bool bold, bool ital
 std::auto_ptr<FreetypeGlyphsProvider>
 FreetypeGlyphsProvider::createFace(const std::string&, bool, bool)
 {
-    log_error("Freetype not supported");
+    log_error(_("Freetype not supported"));
     return std::auto_ptr<FreetypeGlyphsProvider>(NULL);
 }
 #endif 
@@ -465,7 +466,8 @@ FreetypeGlyphsProvider::FreetypeGlyphsProvider(const 
std::string& name,
     scale = (float)unitsPerEM()/_face->units_per_EM;
 
 #ifdef GNASH_DEBUG_DEVICEFONTS
-    log_debug("EM square for font '%s' is %d, scale is thus %g", name, 
_face->units_per_EM, scale);
+    log_debug(_("EM square for font '%s' is %d, scale is this %g"),
+              name, _face->units_per_EM, scale);
 #endif
 }
 #else // ndef(USE_FREETYPE)
@@ -485,24 +487,24 @@ FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, 
float& advance)
                                                 FT_LOAD_NO_SCALE);
 
     if (error) {
-        log_error("Error loading freetype outline glyph for char '%c' "
-                "(error: %d)", code, error);
+        log_error(_("Error loading freetype outline glyph for char '%c' "
+                    "(error: %d)"), code, error);
         return glyph;
     }
 
     // Scale advance by current scale, to match expected output coordinate 
space
     advance = _face->glyph->metrics.horiAdvance * scale;
 #ifdef GNASH_DEBUG_DEVICEFONTS 
-    log_debug("Advance value for glyph '%c' is %g (horiAdvance:%ld, "
-            "scale:%g)", code, advance, 
-            _face->glyph->metrics.horiAdvance, scale);
+    log_debug(_("Advance value for glyph '%c' is %g (horiAdvance:%ld, "
+                "scale:%g)"), code, advance, 
+              _face->glyph->metrics.horiAdvance, scale);
 #endif
 
     if ( _face->glyph->format != FT_GLYPH_FORMAT_OUTLINE )
     {
         unsigned long gf = _face->glyph->format;
-        log_unimpl("FT_Load_Char() returned a glyph format != "
-            "FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)",
+        log_unimpl(_("FT_Load_Char() returned a glyph format != "
+                     "FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"),
             static_cast<char>((gf>>24)&0xff),
             static_cast<char>((gf>>16)&0xff),
             static_cast<char>((gf>>8)&0xff),
@@ -521,7 +523,7 @@ FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, 
float& advance)
     walk.delta = 0; // ?
 
 #ifdef DEBUG_OUTLINE_DECOMPOSITION 
-    log_debug("Decomposing glyph outline for DisplayObject %u", code);
+    log_debug(_("Decomposing glyph outline for DisplayObject %u"), code);
 #endif
     
     glyph.reset(new SWF::ShapeRecord);
@@ -533,7 +535,7 @@ FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, 
float& advance)
 #if 0
     // Don't use VM::get if this is to be re-enabled.
     SWFRect bound; sh->compute_bound(&bound, VM::get().getSWFVersion());
-    log_debug("Decomposed glyph for DisplayObject '%c' has bounds %s",
+    log_debug(_("Decomposed glyph for DisplayObject '%c' has bounds %s"),
             code, bound.toString());
 #endif
 #endif
@@ -556,7 +558,7 @@ FreetypeGlyphsProvider::~FreetypeGlyphsProvider()
 #ifdef USE_FREETYPE 
     if (_face) {
         if (FT_Done_Face(_face) != 0) {
-            log_error("Could not release FT face resources");
+            log_error(_("Could not release FT face resources"));
         }
     }
 #endif
diff --git a/libcore/Geometry.cpp b/libcore/Geometry.cpp
index 0f052b8..234ea55 100644
--- a/libcore/Geometry.cpp
+++ b/libcore/Geometry.cpp
@@ -195,8 +195,8 @@ pointTest(const std::vector<Path>& paths,
             else if (ls.scaleThicknessVertically() != 
                     ls.scaleThicknessHorizontally())
             {
-                LOG_ONCE(log_unimpl("Collision detection for "
-                            "unidirectionally scaled strokes"));
+                LOG_ONCE(log_unimpl(_("Collision detection for "
+                                      "unidirectionally scaled strokes")));
             }
 
             double dist = thickness / 2.0;
diff --git a/libcore/LineStyle.cpp b/libcore/LineStyle.cpp
index 72e0b7d..e5a7f76 100644
--- a/libcore/LineStyle.cpp
+++ b/libcore/LineStyle.cpp
@@ -183,11 +183,11 @@ LineStyle::set_lerp(const LineStyle& ls1, const 
LineStyle& ls2, float ratio)
     m_color = lerp(ls1.get_color(), ls2.get_color(), ratio);
     if ( ls1._scaleVertically != ls2._scaleVertically )
     {
-        LOG_ONCE( log_error("UNTESTED: Dunno how to interpolate line styles 
with different vertical thickness scaling") );
+        LOG_ONCE(log_error(_("UNTESTED: Dunno how to interpolate line styles 
with different vertical thickness scaling")));
     }
     if ( ls1._scaleHorizontally != ls2._scaleHorizontally )
     {
-        LOG_ONCE( log_error("UNTESTED: Dunno how to interpolate line styles 
with different horizontal thickness scaling") );
+        LOG_ONCE(log_error(_("UNTESTED: Dunno how to interpolate line styles 
with different horizontal thickness scaling")));
     }
 }
 
diff --git a/libcore/LoadVariablesThread.cpp b/libcore/LoadVariablesThread.cpp
index 27c0428..06e4470 100644
--- a/libcore/LoadVariablesThread.cpp
+++ b/libcore/LoadVariablesThread.cpp
@@ -34,7 +34,7 @@ void
 LoadVariablesThread::completeLoad()
 {
 #ifdef DEBUG_LOAD_VARIABLES
-       log_debug("completeLoad called");
+    log_debug(_("completeLoad called"));
 #endif
 
 
@@ -54,7 +54,7 @@ LoadVariablesThread::completeLoad()
        while ( size_t bytesRead = _stream->read(buf.get(), chunkSize) )
        {
 #ifdef DEBUG_LOAD_VARIABLES
-               log_debug("Read %u bytes", bytesRead);
+            log_debug(_("Read %u bytes"), bytesRead);
 #endif
 
                if ( _bytesLoaded )
@@ -71,9 +71,9 @@ LoadVariablesThread::completeLoad()
                        if ( encoding != utf8::encUTF8 &&
                             encoding != utf8::encUNSPECIFIED )
                        {
-                               log_unimpl("%s to utf8 conversion in "
+                            log_unimpl(_("%s to utf8 conversion in "
                                            "MovieClip.loadVariables "
-                                           "input parsing",
+                                         "input parsing"),
                                            utf8::textEncodingName(encoding));
                        }
                        std::string chunk(ptr, dataSize);
@@ -81,7 +81,7 @@ LoadVariablesThread::completeLoad()
                }
 
 #ifdef DEBUG_LOAD_VARIABLES
-               log_debug("toparse: %s", toparse);
+               log_debug(_("toparse: %s"), toparse);
 #endif
 
                // parse remainder
@@ -90,12 +90,12 @@ LoadVariablesThread::completeLoad()
                {
                        std::string parseable = toparse.substr(0, lastamp);
 #ifdef DEBUG_LOAD_VARIABLES
-                       log_debug("parseable: %s", parseable);
+                       log_debug(_("parseable: %s"), parseable);
 #endif
                        parse(parseable);
                        toparse = toparse.substr(lastamp+1);
 #ifdef DEBUG_LOAD_VARIABLES
-                       log_debug("toparse nextline: %s", toparse);
+                       log_debug(_("toparse nextline: %s"), toparse);
 #endif
                        ++parsedLines;
                }
@@ -105,31 +105,28 @@ LoadVariablesThread::completeLoad()
                // eof, get out !
                if ( _stream->eof() ) break;
 
-               if ( cancelRequested() )
-               {
-                       log_debug("Cancelling LoadVariables download 
thread...");
+               if ( cancelRequested() ) {
+                    log_debug(_("Cancelling LoadVariables download 
thread..."));
                        _stream.reset();
                        return;
                }
        }
 
-       if ( ! toparse.empty() )
-       {
+       if ( ! toparse.empty() ) {
                parse(toparse);
        }
 
        try {
                _stream->go_to_end();
        }
-    catch (IOException& ex) {
-               log_error("Stream couldn't seek to end: %s", ex.what());
+        catch (IOException& ex) {
+        log_error(_("Stream couldn't seek to end: %s"), ex.what());
        }
        
     _bytesLoaded = _stream->tell();
-       if ( _bytesTotal !=  _bytesLoaded )
-       {
-               log_error("Size of 'variables' stream advertised to be %d 
bytes,"
-                        " but turned out to be %d bytes.",
+       if ( _bytesTotal !=  _bytesLoaded ) {
+            log_error(_("Size of 'variables' stream advertised to be %d bytes,"
+                          " but turned out to be %d bytes."),
                        _bytesTotal, _bytesLoaded);
                _bytesTotal = _bytesLoaded;
        }
diff --git a/libcore/MovieClip.cpp b/libcore/MovieClip.cpp
index 4cc3ca2..8a74b0d 100644
--- a/libcore/MovieClip.cpp
+++ b/libcore/MovieClip.cpp
@@ -849,7 +849,7 @@ MovieClip::setTextFieldVariables(const ObjectURI& uri, 
const as_value& val)
 void
 MovieClip::unloadMovie()
 {
-    LOG_ONCE(log_unimpl("MovieClip.unloadMovie()"));
+    LOG_ONCE(log_unimpl(_("MovieClip.unloadMovie()")));
 }
 
 void
@@ -983,8 +983,8 @@ MovieClip::execute_init_action_buffer(const action_buffer& 
a, int cid)
 
     if (_swf->initializeCharacter(cid)) {
 #ifdef GNASH_DEBUG
-        log_debug("Queuing init actions for DisplayObject %1% "
-                    "in frame %2% of MovieClip %3%",
+        log_debug(_("Queuing init actions for DisplayObject %1% "
+                    "in frame %2% of MovieClip %3%"),
                 cid, _currentFrame, getTarget());
 #endif
         std::auto_ptr<ExecutableCode> code(new GlobalCode(a, this));
@@ -993,7 +993,7 @@ MovieClip::execute_init_action_buffer(const action_buffer& 
a, int cid)
     }
     else {
 #ifdef GNASH_DEBUG
-        log_debug("Init actions for DisplayObject %1% already executed", cid);
+        log_debug(_("Init actions for DisplayObject %1% already executed"), 
cid);
 #endif
     }
 }
diff --git a/libcore/MovieFactory.cpp b/libcore/MovieFactory.cpp
index 16db8c0..0f9d314 100644
--- a/libcore/MovieFactory.cpp
+++ b/libcore/MovieFactory.cpp
@@ -228,7 +228,7 @@ getFileType(IOChannel& in)
         return GNASH_FILETYPE_SWF;
     }
 
-    log_error("unknown file type, buf is %c%c%c", buf[0], buf[1], buf[2]);
+    log_error(_("unknown file type, buf is %c%c%c"), buf[0], buf[1], buf[2]);
     return GNASH_FILETYPE_UNKNOWN;
 }
 
diff --git a/libcore/MovieLoader.cpp b/libcore/MovieLoader.cpp
index 9054f33..04ba647 100644
--- a/libcore/MovieLoader.cpp
+++ b/libcore/MovieLoader.cpp
@@ -60,7 +60,7 @@ MovieLoader::processRequests()
     _barrier.wait();
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-    log_debug("Starting movie loader thread");
+    log_debug(_("Starting movie loader thread"));
 #endif
 
 
@@ -69,19 +69,19 @@ MovieLoader::processRequests()
         // check for shutdown/cancel request
         if (killed()) {
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-            log_debug("Loader thread killed");
+            log_debug(_("Loader thread killed"));
 #endif
             return;
         }
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processRequests: lock on requests: trying");
+        log_debug(_("processRequests: lock on requests: trying"));
 #endif
 
         boost::mutex::scoped_lock lock(_requestsMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processRequests: lock on requests: obtained");
+        log_debug(_("processRequests: lock on requests: obtained"));
 #endif
 
         // Find first non-completed request (the others we'll wait)
@@ -92,17 +92,17 @@ MovieLoader::processRequests()
         if (it == endIt) {
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-            log_debug("Movie loader thread getting to sleep (nothing more to 
do)");
+            log_debug(_("Movie loader thread getting to sleep (nothing more to 
do)"));
 #endif
             // all completed, we can get to sleep
             _wakeup.wait(lock);
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-            log_debug("Movie loader thread waked up");
+            log_debug(_("Movie loader thread waked up"));
 #endif
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processRequests: lock on requests: release");
+            log_debug(_("processRequests: lock on requests: release"));
 #endif
 
             continue;
@@ -111,7 +111,7 @@ MovieLoader::processRequests()
         Request& lr = *it;
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processRequests: lock on requests: release");
+        log_debug(_("processRequests: lock on requests: release"));
 #endif
 
         lock.unlock(); // now main thread can continue to push requests
@@ -132,7 +132,7 @@ MovieLoader::processRequest(Request& r)
     const std::string* postdata = usePost ? &(r.getPostData()) : 0;
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-    log_debug("Movie loader thread processing request for target %s",
+    log_debug(_("Movie loader thread processing request for target %s"),
         r.getTarget());
 #endif
 
@@ -143,7 +143,7 @@ MovieLoader::processRequest(Request& r)
     r.setCompleted(md);
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-    log_debug("Movie loader thread completed request for target %s",
+    log_debug(_("Movie loader thread completed request for target %s"),
         r.getTarget());
 #endif
 }
@@ -156,45 +156,45 @@ MovieLoader::clear()
     if (_thread.get()) {
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on requests: trying");
+        log_debug(_("clear: lock on requests: trying"));
 #endif
 
         boost::mutex::scoped_lock requestsLock(_requestsMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on requests: obtained");
+        log_debug(_("clear: lock on requests: obtained"));
 #endif
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on kill: trying");
+        log_debug(_("clear: lock on kill: trying"));
 #endif
 
         boost::mutex::scoped_lock lock(_killMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on kill: obtained");
+        log_debug(_("clear: lock on kill: obtained"));
 #endif
 
         _killed = true;
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on kill: release for kill");
+        log_debug(_("clear: lock on kill: release for kill"));
 #endif
 
         lock.unlock();
 
-        log_debug("waking up loader thread");
+        log_debug(_("waking up loader thread"));
 
         _wakeup.notify_all(); // in case it was sleeping
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("clear: lock on requests: release ater notify_all");
+        log_debug(_("clear: lock on requests: release ater notify_all"));
 #endif
         requestsLock.unlock(); // allow the thread to die
 
-        log_debug("MovieLoader notified, joining");
+        log_debug(_("MovieLoader notified, joining"));
         _thread->join();
-        log_debug("MovieLoader joined");
+        log_debug(_("MovieLoader joined"));
         _thread.reset();
     }
 
@@ -202,7 +202,7 @@ MovieLoader::clear()
     clearRequests();
 
 #ifdef GNASH_DEBUG_LOCKING
-    log_debug("clear: lock on requests: release if not after notify_all");
+    log_debug(_("clear: lock on requests: release if not after notify_all"));
 #endif
 }
 
@@ -279,8 +279,8 @@ MovieLoader::processCompletedRequest(const Request& r)
             _movieRoot.setLevel(levelno, extern_movie);
         }
         else {
-            log_debug("Target %s of a loadMovie request doesn't exist at "
-                  "load complete time", target);
+            log_debug(_("Target %s of a loadMovie request doesn't exist at "
+                        "load complete time"), target);
             return true;
         }
     }
@@ -341,17 +341,17 @@ MovieLoader::processCompletedRequests()
     for (;;) {
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests: trying");
+        log_debug(_("processCompletedRequests: lock on requests: trying"));
 #endif
 
         boost::mutex::scoped_lock requestsLock(_requestsMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests: obtained");
+        log_debug(_("processCompletedRequests: lock on requests: obtained"));
 #endif
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-        log_debug("Checking %d requests for completeness",
+        log_debug(_("Checking %d requests for completeness"),
             _requests.size());
 #endif
 
@@ -363,14 +363,14 @@ MovieLoader::processCompletedRequests()
         if (it == endIt) break;
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests: releasing");
+        log_debug(_("processCompletedRequests: lock on requests: releasing"));
 #endif
         requestsLock.unlock();
 
         Request& firstCompleted = *it;
 
 #ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
-        log_debug("Load request for target %s completed",
+        log_debug(_("Load request for target %s completed"),
             firstCompleted->getTarget());
 #endif
 
@@ -378,22 +378,22 @@ MovieLoader::processCompletedRequests()
         assert(checkit);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests for removal: "
-                  "trying");
+        log_debug(_("processCompletedRequests: lock on requests for removal: "
+                    "trying"));
 #endif
 
         requestsLock.lock();
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests for removal: "
-                  "obtained");
+        log_debug(_("processCompletedRequests: lock on requests for removal: "
+                  "obtained"));
 #endif
 
         _requests.erase(it);
 
 #ifdef GNASH_DEBUG_LOCKING
-        log_debug("processCompletedRequests: lock on requests for removal: "
-                  "release");
+        log_debug(_("processCompletedRequests: lock on requests for removal: "
+                    "release"));
 #endif
     }
 }
@@ -431,19 +431,19 @@ MovieLoader::loadMovie(const std::string& urlstr,
         url.set_querystring(qs + varsToSend);
     }
 
-    log_debug("MovieLoader::loadMovie(%s, %s)", url.str(), target);
+    log_debug(_("MovieLoader::loadMovie(%s, %s)"), url.str(), target);
 
     const std::string* postdata = (method == MovieClip::METHOD_POST) ? &data
                                                                      : 0;
 
 #ifdef GNASH_DEBUG_LOCKING
-log_debug("loadMovie: lock on requests: trying");
+    log_debug(_("loadMovie: lock on requests: trying"));
 #endif
 
     boost::mutex::scoped_lock lock(_requestsMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-log_debug("loadMovie: lock on requests: obtained");
+    log_debug(_("loadMovie: lock on requests: obtained"));
 #endif
 
     _requests.push_front(
@@ -458,12 +458,12 @@ log_debug("loadMovie: lock on requests: obtained");
            _barrier.wait(); // let execution start before proceeding
     }
     else {
-        log_debug("loadMovie: waking up existing thread");
+        log_debug(_("loadMovie: waking up existing thread"));
         _wakeup.notify_all();
     }
 
 #ifdef GNASH_DEBUG_LOCKING
-    log_debug("loadMovie: lock on requests: release");
+    log_debug(_("loadMovie: lock on requests: release"));
 #endif
 }
 
@@ -481,20 +481,20 @@ MovieLoader::setReachable() const
 {
 
 #ifdef GNASH_DEBUG_LOCKING
-    log_debug("setReachable: lock on requests: trying");
+    log_debug(_("setReachable: lock on requests: trying"));
 #endif
 
     boost::mutex::scoped_lock lock(_requestsMutex);
 
 #ifdef GNASH_DEBUG_LOCKING
-    log_debug("setReachable: lock on requests: obtained");
+    log_debug(_("setReachable: lock on requests: obtained"));
 #endif
 
     std::for_each(_requests.begin(), _requests.end(),
             boost::mem_fn(&Request::setReachable));
 
 #ifdef GNASH_DEBUG_LOCKING
-    log_debug("setReachable: lock on requests: release");
+    log_debug(_("setReachable: lock on requests: release"));
 #endif
 }
 
diff --git a/libcore/PropertyList.cpp b/libcore/PropertyList.cpp
index c39840c..19d1664 100644
--- a/libcore/PropertyList.cpp
+++ b/libcore/PropertyList.cpp
@@ -103,7 +103,7 @@ PropertyList::setValue(const ObjectURI& uri, const 
as_value& val,
                _props.push_back(a);
 #ifdef GNASH_DEBUG_PROPERTY
         ObjectURI::Logger l(getStringTable(_owner));
-               log_debug("Simple AS property %s inserted with flags %s",
+        log_debug(_("Simple AS property %s inserted with flags %s"),
                        l(uri), a.getFlags());
 #endif
                return true;
@@ -192,7 +192,7 @@ PropertyList::dump()
     ObjectURI::Logger l(getStringTable(_owner));
        for (const_iterator it=_props.begin(), itEnd=_props.end();
             it != itEnd; ++it) {
-               log_debug("  %s: %s", l(it->uri()), it->getValue(_owner));
+            log_debug(_("  %s: %s"), l(it->uri()), it->getValue(_owner));
        }
 }
 
@@ -212,7 +212,7 @@ PropertyList::addGetterSetter(const ObjectURI& uri, 
as_function& getter,
 
 #ifdef GNASH_DEBUG_PROPERTY
         ObjectURI::Logger l(getStringTable(_owner));
-               log_debug("AS GetterSetter %s replaced copying flags %s", 
l(uri),
+        log_debug(_("AS GetterSetter %s replaced copying flags %s"), l(uri),
                 a.getFlags());
 #endif
 
@@ -222,7 +222,7 @@ PropertyList::addGetterSetter(const ObjectURI& uri, 
as_function& getter,
                _props.push_back(a);
 #ifdef GNASH_DEBUG_PROPERTY
         ObjectURI::Logger l(getStringTable(_owner));
-               log_debug("AS GetterSetter %s inserted with flags %s", l(uri),
+        log_debug(_("AS GetterSetter %s inserted with flags %s"), l(uri),
                 a.getFlags());
 #endif
        }
@@ -245,7 +245,7 @@ PropertyList::addGetterSetter(const ObjectURI& uri, 
as_c_function_ptr getter,
 
 #ifdef GNASH_DEBUG_PROPERTY
         ObjectURI::Logger l(getStringTable(_owner));
-               log_debug("Native GetterSetter %s replaced copying flags %s", 
l(uri),
+        log_debug(_("Native GetterSetter %s replaced copying flags %s"), 
l(uri),
                 a.getFlags());
 #endif
 
@@ -255,8 +255,8 @@ PropertyList::addGetterSetter(const ObjectURI& uri, 
as_c_function_ptr getter,
                _props.push_back(a);
 #ifdef GNASH_DEBUG_PROPERTY
                string_table& st = getStringTable(_owner);
-               log_debug("Native GetterSetter %s in namespace %s inserted with 
"
-                "flags %s", st.value(key), st.value(nsId), a.getFlags());
+               log_debug(_("Native GetterSetter %s in namespace %s inserted 
with "
+                          "flags %s"), st.value(key), st.value(nsId), 
a.getFlags());
 #endif
        }
 
@@ -271,7 +271,7 @@ PropertyList::addDestructiveGetter(const ObjectURI& uri, 
as_function& getter,
        if (found != _props.end())
        {
         ObjectURI::Logger l(getStringTable(_owner));
-               log_error("Property %s already exists, can't 
addDestructiveGetter",
+        log_error(_("Property %s already exists, can't addDestructiveGetter"),
                 l(uri));
                return false; // Already exists.
        }
@@ -283,7 +283,7 @@ PropertyList::addDestructiveGetter(const ObjectURI& uri, 
as_function& getter,
 
 #ifdef GNASH_DEBUG_PROPERTY
     ObjectURI::Logger l(getStringTable(_owner));
-       log_debug("Destructive AS property %s inserted with flags %s",
+    log_debug(_("Destructive AS property %s inserted with flags %s"),
             l(uri), a.getFlags());
 #endif
 
@@ -303,7 +303,7 @@ PropertyList::addDestructiveGetter(const ObjectURI& uri,
 
 #ifdef GNASH_DEBUG_PROPERTY
     ObjectURI::Logger l(getStringTable(_owner));
-       log_debug("Destructive native property %s with flags %s", l(uri),
+    log_debug(_("Destructive native property %s with flags %s"), l(uri),
             a.getFlags());
 #endif
        return true;
diff --git a/libcore/RGBA.cpp b/libcore/RGBA.cpp
index bb5d6e7..f7c43b4 100644
--- a/libcore/RGBA.cpp
+++ b/libcore/RGBA.cpp
@@ -44,8 +44,8 @@ colorFromHexString(const std::string& color)
     boost::uint32_t hexnumber;
     
     if (!(ss >> std::hex >> hexnumber)) {
-        log_error("Failed to convert string to RGBA value! This is a "
-                "Gnash bug");
+           log_error(_("Failed to convert string to RGBA value! This is a "
+                       "Gnash bug"));
         return rgba();
     }
 
diff --git a/libcore/SWFMovie.cpp b/libcore/SWFMovie.cpp
index 64ce573..783acc4 100644
--- a/libcore/SWFMovie.cpp
+++ b/libcore/SWFMovie.cpp
@@ -51,7 +51,7 @@ SWFMovie::construct(as_object* /*init*/)
     if ( !_def->ensure_frame_loaded(nextframe) )
     {
         IF_VERBOSE_MALFORMED_SWF(
-        log_swferror("Frame %d never loaded. Total frames: %d",
+            log_swferror(_("Frame %d never loaded. Total frames: %d"),
                         nextframe, get_frame_count());
         );
     }
@@ -74,7 +74,7 @@ SWFMovie::advance()
        if ( !_def->ensure_frame_loaded(nextframe) )
        {
                IF_VERBOSE_MALFORMED_SWF(
-               log_swferror("Frame %d never loaded. Total frames: %d.",
+                    log_swferror(_("Frame %d never loaded. Total frames: %d."),
                            nextframe, get_frame_count());
                );
        }
@@ -106,8 +106,8 @@ SWFMovie::initializeCharacter(boost::uint16_t cid)
     Characters::iterator it = _characters.find(cid);
     if (it == _characters.end()) {
         IF_VERBOSE_MALFORMED_SWF(
-            log_swferror("Attempt to perform initialized for a character %s "
-                "that does not exist (either not exported or not defined)",
+            log_swferror(_("Attempt to perform initialized for a character %s "
+                           "that does not exist (either not exported or not 
defined)"),
                 cid);
         );
         return false;
diff --git a/libcore/SWFStream.cpp b/libcore/SWFStream.cpp
index aad66c8..b0a4e1e 100644
--- a/libcore/SWFStream.cpp
+++ b/libcore/SWFStream.cpp
@@ -200,7 +200,7 @@ SWFStream::read_sint(unsigned short bitcount)
         value |= -1 << bitcount;
     }
 
-//        IF_DEBUG(log_debug("SWFStream::read_sint(%d) == %d\n", bitcount, 
value));
+//        IF_DEBUG(log_debug(_("SWFStream::read_sint(%d) == %d\n", bitcount, 
value)));
 
     return value;
 }
@@ -472,7 +472,7 @@ SWFStream::seek(unsigned long pos)
         unsigned long endPos = tb.second;
         if ( pos > endPos )
         {
-            log_error("Attempt to seek past the end of an opened tag");
+               log_error(_("Attempt to seek past the end of an opened tag"));
             // abort(); // ?
             // throw ParserException ?
             return false;
@@ -480,7 +480,7 @@ SWFStream::seek(unsigned long pos)
         unsigned long startPos = tb.first;
         if ( pos < startPos )
         {
-            log_error("Attempt to seek before start of an opened tag");
+               log_error(_("Attempt to seek before start of an opened tag"));
             // abort(); // ?
             // throw ParserException ?
             return false;
@@ -536,7 +536,7 @@ SWFStream::open_tag()
 
     if ( tagLength > 1024*64 )
     {
-        //log_debug("Tag %d has a size of %d bytes !!", tagType, tagLength);
+        //log_debug(_("Tag %d has a size of %d bytes !!"), tagType, tagLength);
     }
 
     unsigned long tagEnd = tell() + tagLength;
@@ -578,7 +578,7 @@ SWFStream::open_tag()
     _tagBoundsStack.push_back(std::make_pair(tagStart, tagEnd));
 
     IF_VERBOSE_PARSE (
-        log_parse("SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu",
+           log_parse(_("SWF[%lu]: tag type = %d, tag length = %d, end tag = 
%lu"),
         tagStart, tagType, tagLength, tagEnd);
     );
 
@@ -593,7 +593,7 @@ SWFStream::close_tag()
     std::streampos endPos = _tagBoundsStack.back().second;
     _tagBoundsStack.pop_back();
 
-    //log_debug("Close tag called at %d, stream size: %d", endPos);
+    //log_debug(_("Close tag called at %d, stream size: %d"), endPos);
 
     if (!m_input->seek(endPos))
     {
@@ -614,8 +614,8 @@ SWFStream::consumeInput()
                m_input->go_to_end();
        }
     catch (IOException& ex) {
-               log_error("SWFStream::consumeInput: underlying stream couldn't "
-                "go_to_end: %s", ex.what());
+           log_error(_("SWFStream::consumeInput: underlying stream couldn't "
+                       "go_to_end: %s"), ex.what());
                // eh.. and now ?!
        }
 }
diff --git a/libcore/StaticText.cpp b/libcore/StaticText.cpp
index d2eec7c..a827f75 100644
--- a/libcore/StaticText.cpp
+++ b/libcore/StaticText.cpp
@@ -50,7 +50,7 @@ StaticText::pointInShape(boost::int32_t x, boost::int32_t y) 
const
 {
     // TODO: check actual point in shape, as tested 
     //       in misc-ming.all/DefineTextTest.swf
-    LOG_ONCE(log_unimpl("StaticText::pointInShape"));
+    LOG_ONCE(log_unimpl(_("StaticText::pointInShape")));
     return pointInBounds(x, y);
 }
 
diff --git a/libcore/TextField.cpp b/libcore/TextField.cpp
index 37e59c4..a6503e6 100644
--- a/libcore/TextField.cpp
+++ b/libcore/TextField.cpp
@@ -231,7 +231,7 @@ TextField::removeTextField()
     MovieClip* parentSprite = p->to_movie();
 
     if (!parentSprite) {
-        log_error("FIXME: attempt to remove a TextField being a child of a %s",
+        log_error(_("FIXME: attempt to remove a TextField being a child of a 
%s"),
                 typeName(*p));
         return;
     }
@@ -325,7 +325,7 @@ TextField::display(Renderer& renderer, const Transform& 
base)
         if (drawBackground) backgroundColor = cx.transform(backgroundColor);
         
 #ifdef GNASH_DEBUG_TEXTFIELDS
-    log_debug("rendering a Pol composed by corners %s", _bounds);
+       log_debug(_("rendering a Pol composed by corners %s"), _bounds);
 #endif
 
         renderer.draw_poly(coords, backgroundColor, 
@@ -410,7 +410,7 @@ TextField::setRestrict(const std::string& restrict)
     while (rit != re) {
         while (rit != re && *rit != '^') { //This loop allows chars
             if (*rit == '-') {
-                log_error("invalid restrict string");
+                log_error(_("invalid restrict string"));
                 return;
             } else if (*(rit+1) == '-') {
                 if (re - (rit+2) != 0) {
@@ -420,7 +420,7 @@ TextField::setRestrict(const std::string& restrict)
                     }
                     rit += 3;
                 } else {
-                    log_error("invalid restrict string");
+                    log_error(_("invalid restrict string"));
                     return;
                 }
             } else if (*rit == '\\') {
@@ -438,7 +438,7 @@ TextField::setRestrict(const std::string& restrict)
         while (rit != re && *rit != '^') { //This loop restricts chars
             locate = _restrictedchars.find(*rit);
             if (*rit == '-') {
-                log_error("invalid restrict string");
+                log_error(_("invalid restrict string"));
                 return;
             } else if (*(rit+1) == '-') {
                 if (re - (rit+2) != 0) {
@@ -453,7 +453,7 @@ TextField::setRestrict(const std::string& restrict)
                     ++rit;
                     ++rit;
                 } else {
-                    log_error("invalid restrict string");
+                    log_error(_("invalid restrict string"));
                     return;
                 }
             } else if (*rit == '\\') {
@@ -839,10 +839,7 @@ TextField::setTextValue(const std::wstring& wstr)
         }
         else {
             // nothing to do (too early ?)
-            log_debug("setTextValue: variable name %s points to a non-existent"
-                    " target, I guess we would not be registered if this was "
-                    "true, or the sprite we've registered our variable name "
-                    "has been unloaded", _variable_name);
+            log_debug(_("setTextValue: variable name %s points to a 
non-existent target, I guess we would not be registered if this was true, or 
the sprite we've registered our variable name has been unloaded"), 
_variable_name);
         }
     }
 }
@@ -1441,8 +1438,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
                                     // FIXME: should this be a log_aserror
                                     //        or log_unimpl ? It is triggered
                                     //        by TextFieldHTML.as
-                                    log_error("Unexpected value '%s' in "
-                                        "TextField font color attribute",
+                                    log_error(_("Unexpected value '%s' in 
TextField font color attribute"),
                                         hexval);
                                 }
                                 else {
@@ -1511,7 +1507,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
                         }
                         else if (s == "IMG") {
                             //image
-                            log_unimpl("<img> html tag in TextField");
+                            log_unimpl(_("<img> html tag in TextField"));
                             handleChar(it, e, x, y, newrec, last_code,
                                     last_space_glyph, last_line_start_record);
                         }
@@ -1549,12 +1545,12 @@ TextField::handleChar(std::wstring::const_iterator& it,
                         }
                         else if (s == "SPAN") {
                             //span
-                            log_unimpl("<span> html tag in TextField");
+                            log_unimpl(_("<span> html tag in TextField"));
                             handleChar(it, e, x, y, newrec, last_code,
                                     last_space_glyph, last_line_start_record);
                         }
                         else if (s == "TEXTFORMAT") {
-                            log_debug("in textformat");
+                            log_debug(_("in textformat"));
                             //textformat
                             boost::uint16_t originalblockindent = 
getBlockIndent();
                             boost::uint16_t originalindent = getIndent();
@@ -1621,7 +1617,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
                             attloc = attributes.find("TABSTOPS");
                             if (attloc != attributes.end()) {
                                 //textformat TABSTOPS attribute
-                                log_unimpl("html <textformat> tag tabstops 
attribute");
+                                log_unimpl(_("html <textformat> tag tabstops 
attribute"));
                             }
                             handleChar(it, e, x, y, newrec, last_code,
                                     last_space_glyph, last_line_start_record);
@@ -1655,7 +1651,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
                                                                                
last_line_start_record, 1.0);
                         }
                         else {
-                            log_debug("<%s> tag is unsupported", s);
+                            log_debug(_("<%s> tag is unsupported"), s);
                             if (!selfclosing) { //then recurse, look for 
closing tag
                             handleChar(it, e, x, y, newrec, last_code,
                                                 last_space_glyph, 
last_line_start_record);
@@ -1740,7 +1736,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
         if (x >= width - getRightMargin() - PADDING_TWIPS)
         {
 #ifdef GNASH_DEBUG_TEXT_FORMATTING
-            log_debug("Text in TextField %s exceeds width [ _bounds %s ]", 
+            log_debug(_("Text in TextField %s exceeds width [ _bounds %s ]"), 
                     getTarget(), _bounds);
 #endif
 
@@ -1748,7 +1744,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
             if (!doWordWrap() && getAutoSize() == AUTOSIZE_NONE)
             {
 #ifdef GNASH_DEBUG_TEXT_FORMATTING
-                log_debug(" wordWrap=false, autoSize=none");
+                log_debug(_(" wordWrap=false, autoSize=none"));
 #endif 
                 // Truncate long line, but keep expanding text box
                 bool newlinefound = false;
@@ -1765,7 +1761,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
                     // of each glyph, even if we don't display it 
                     m_text_bounding_box.expand_to_point(x, y + fontDescent);
 #ifdef GNASH_DEBUG_TEXT_FORMATTING
-                    log_debug("Text bbox expanded to %s (width: %f)",
+                    log_debug(_("Text bbox expanded to %s (width: %f)"),
                             m_text_bounding_box, m_text_bounding_box.width());
 #endif
 
@@ -1785,7 +1781,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
             else if (doWordWrap()) {
 
 #ifdef GNASH_DEBUG_TEXT_FORMATTING
-                log_debug(" wordWrap=true");
+                log_debug(_(" wordWrap=true"));
 #endif
 
                 // Insert newline if there's space or autosize != none
@@ -1872,7 +1868,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
             else
             {
 #ifdef GNASH_DEBUG_TEXT_FORMATTING
-                log_debug(" wordWrap=%d, autoSize=%d", _wordWrap, _autoSize);
+                log_debug(_(" wordWrap=%d, autoSize=%d"), _wordWrap, 
_autoSize);
 #endif 
             }
         }
@@ -2022,7 +2018,7 @@ TextField::parseHTML(std::wstring& tag,
                 while (it != e) {
                     ++it;
                 }
-                log_error("invalid html tag");
+                log_error(_("invalid html tag"));
                 return false;
             }
         }
@@ -2033,7 +2029,7 @@ TextField::parseHTML(std::wstring& tag,
         
         // Check for NULL character
         if (*it == 0) {
-            log_error("found NULL character in htmlText");
+            log_error(_("found NULL character in htmlText"));
             return false;
         }
         tag.push_back(std::toupper(*it));
@@ -2056,7 +2052,7 @@ TextField::parseHTML(std::wstring& tag,
             while (it != e) {
                 ++it;
             }
-            log_error("invalid html tag");
+            log_error(_("invalid html tag"));
             return false;
         }
     }
@@ -2069,11 +2065,11 @@ TextField::parseHTML(std::wstring& tag,
         while (it != e && *it != '=' && *it != ' ') {
             
             if (*it == 0) {
-                log_error("found NULL character in htmlText");
+                log_error(_("found NULL character in htmlText"));
                 return false;
             }
             if (*it == '>') {
-                log_error("malformed HTML tag, invalid attribute name");
+                log_error(_("malformed HTML tag, invalid attribute name"));
                 while (it != e) {
                     ++it;
                 }
@@ -2100,7 +2096,7 @@ TextField::parseHTML(std::wstring& tag,
         while (it != e && *it != q) {
 
             if (*it == 0) {
-                log_error("found NULL character in htmlText");
+                log_error(_("found NULL character in htmlText"));
                 return false;
             }
 
@@ -2123,7 +2119,7 @@ TextField::parseHTML(std::wstring& tag,
         attvalue.clear();
 
         if ((*it != ' ') && (*it != '/') && (*it != '>')) {
-            log_error("malformed HTML tag, invalid attribute value");
+            log_error(_("malformed HTML tag, invalid attribute value"));
             while (it != e) {
                 ++it;
             }
@@ -2147,16 +2143,16 @@ TextField::parseHTML(std::wstring& tag,
                 while (it != e) {
                     ++it;
                 }
-                log_error("invalid html tag");
+                log_error(_("invalid html tag"));
                 return false;
             }
         }
     }
     
 #ifdef GNASH_DEBUG_TEXTFIELDS
-    log_debug ("HTML tag: %s", utf8::encodeCanonicalString(tag, 7));
+    log_debug(_("HTML tag: %s"), utf8::encodeCanonicalString(tag, 7));
 #endif
-    log_error("I declare this a HTML syntax error");
+    log_error(_("I declare this a HTML syntax error"));
     return false; //since we did not return already, must be malformed...?
 }
 
@@ -2172,7 +2168,7 @@ TextField::set_variable_name(const std::string& newname)
         _text_variable_registered = false;
 
 #ifdef DEBUG_DYNTEXT_VARIABLES
-        log_debug("Calling updateText after change of variable name");
+        log_debug(_("Calling updateText after change of variable name"));
 #endif
 
         // Use the original definition text if this isn't dynamically
@@ -2180,8 +2176,8 @@ TextField::set_variable_name(const std::string& newname)
         if (_tag) updateText(_tag->defaultText());
 
 #ifdef DEBUG_DYNTEXT_VARIABLES
-        log_debug("Calling registerTextVariable after change of variable "
-                "name and updateText call");
+        log_debug(_("Calling registerTextVariable after change of variable "
+                   "name and updateText call"));
 #endif
         registerTextVariable();
     }
@@ -2424,13 +2420,13 @@ TextField::typeValueName(TypeValue val)
 {
     switch (val) {
         case typeInput:
-            //log_debug("typeInput returned as 'input'");
+            //log_debug(_("typeInput returned as 'input'"));
             return "input";
         case typeDynamic:
-            //log_debug("typeDynamic returned as 'dynamic'");
+            //log_debug(_("typeDynamic returned as 'dynamic'"));
             return "dynamic";
         default:
-            //log_debug("invalid type %d returned as 'invalid'", (int)val);
+            //log_debug(_("invalid type %d returned as 'invalid'"), (int)val);
             return "invalid";
     }
 
diff --git a/libcore/Video.cpp b/libcore/Video.cpp
index 0872a9f..d14c0f3 100644
--- a/libcore/Video.cpp
+++ b/libcore/Video.cpp
@@ -54,7 +54,7 @@ Video::Video(as_object* object,
 
     media::MediaHandler* mh = getRunResources(*object).mediaHandler();
        if (!mh) {
-               LOG_ONCE( log_error(_("No Media handler registered, "
+               LOG_ONCE(log_error(_("No Media handler registered, "
                        "won't be able to decode embedded video")) );
                return;
        }
@@ -66,7 +66,7 @@ Video::Video(as_object* object,
            _decoder = mh->createVideoDecoder(*info);
        }
        catch (const MediaException& e) {
-           log_error("Could not create Video Decoder: %s", e.what());
+           log_error(_("Could not create Video Decoder: %s"), e.what());
        }
 }
 
@@ -142,7 +142,7 @@ Video::getVideoFrame()
         const boost::uint16_t current_frame = get_ratio(); 
 
 #ifdef DEBUG_EMBEDDED_VIDEO_DECODING
-               log_debug("Video instance %s need display video frame (ratio) 
%d",
+        log_debug(_("Video instance %s need display video frame (ratio) %d"),
                        getTarget(), current_frame);
 #endif
 
@@ -151,7 +151,7 @@ Video::getVideoFrame()
                if (_lastDecodedVideoFrameNum >= 0 &&
                 _lastDecodedVideoFrameNum == current_frame) {
 #ifdef DEBUG_EMBEDDED_VIDEO_DECODING
-                       log_debug("  current frame == _lastDecodedVideoFrameNum 
(%d)",
+                    log_debug(_("  current frame == _lastDecodedVideoFrameNum 
(%d)"),
                     current_frame);
 #endif
                        return _lastDecodedVideoFrame.get();
@@ -166,7 +166,7 @@ Video::getVideoFrame()
                // we restart decoding from scratch
                if (current_frame < 
static_cast<size_t>(_lastDecodedVideoFrameNum)) {
 #ifdef DEBUG_EMBEDDED_VIDEO_DECODING
-                       log_debug("  current frame (%d) < 
_lastDecodedVideoFrameNum (%d)",
+                    log_debug(_("  current frame (%d) < 
_lastDecodedVideoFrameNum (%d)"),
                     current_frame, _lastDecodedVideoFrameNum);
 #endif
                        from_frame = 0;
@@ -177,8 +177,7 @@ Video::getVideoFrame()
                _lastDecodedVideoFrameNum = current_frame;
 
 #ifdef DEBUG_EMBEDDED_VIDEO_DECODING
-               log_debug("  decoding embedded frames from %d to %d for Video "
-                "object %s", from_frame, current_frame, getTarget());
+               log_debug(_("  decoding embedded frames from %d to %d for Video 
object %s"), from_frame, current_frame, getTarget());
 #endif
 
         const size_t frames = m_def->visitSlice(
diff --git a/libcore/as_environment.cpp b/libcore/as_environment.cpp
index 3100085..9c98b4b 100644
--- a/libcore/as_environment.cpp
+++ b/libcore/as_environment.cpp
@@ -329,7 +329,7 @@ setVariable(const as_environment& env, const std::string& 
varname,
     const as_value& val, const as_environment::ScopeStack& scope)
 {
     IF_VERBOSE_ACTION(
-        log_action("-------------- %s = %s", varname, val);
+        log_action(_("-------------- %s = %s"), varname, val);
     );
 
     // Path lookup rigamarole.
@@ -404,7 +404,7 @@ parsePath(const std::string& var_path_in, std::string& 
path, std::string& var)
     const std::string v(var_path_in, lastDotOrColon + 1, var_path_in.size());
 
 #ifdef DEBUG_TARGET_FINDING 
-    log_debug("path: %s, var: %s", p, v);
+    log_debug(_("path: %s, var: %s"), p, v);
 #endif
 
     if (p.empty()) return false;
@@ -471,9 +471,7 @@ setVariableRaw(const as_environment& env, const 
std::string& varname,
         getObject(env.get_original_target())->set_member(varkey, val);
     }
     else {
-        log_error("as_environment::setVariableRaw(%s, %s): "
-           "neither current target nor original target are defined, "
-           "can't set the variable",
+        log_error(_("as_environment::setVariableRaw(%s, %s): neither current 
target nor original target are defined, can't set the variable"),
            varname, val);
     }
 }
@@ -548,7 +546,7 @@ getVariableRaw(const as_environment& env, const 
std::string& varname,
     as_object* global = vm.getGlobal();
     if (swfVersion > 5 && eq(key, NSV::PROP_uGLOBAL)) {
 #ifdef GNASH_DEBUG_GET_VARIABLE
-        log_debug("Took %s as _global, returning _global", varname);
+        log_debug(_("Took %s as _global, returning _global"), varname);
 #endif
         // The "_global" ref was added in SWF6
         if (retTarget) *retTarget = NULL; // correct ??
@@ -557,7 +555,7 @@ getVariableRaw(const as_environment& env, const 
std::string& varname,
 
     if (global->get_member(key, &val)) {
 #ifdef GNASH_DEBUG_GET_VARIABLE
-        log_debug("Found %s in _global", varname);
+        log_debug(_("Found %s in _global"), varname);
 #endif
         if (retTarget) *retTarget = global;
         return val;
diff --git a/libcore/as_function.cpp b/libcore/as_function.cpp
index 3e6437a..9c6d516 100644
--- a/libcore/as_function.cpp
+++ b/libcore/as_function.cpp
@@ -91,8 +91,8 @@ as_function::construct(as_object& newobj, const 
as_environment& env,
         // This is very effective at confusing debugging tools.
         // We only throw GnashExceptions. A std::bad_alloc may also be
         // reasonable, but anything else shouldn't be caught here.
-        log_debug("Native function called as constructor threw exception: "
-                "%s", ex.what());
+        log_debug(_("Native function called as constructor threw exception: 
%s")
+                  , ex.what());
 
         // If a constructor throws an exception, throw it back to the
         // caller. This is the only way to signal that a constructor
diff --git a/libcore/as_object.cpp b/libcore/as_object.cpp
index 1b9ebb4..52149ce 100644
--- a/libcore/as_object.cpp
+++ b/libcore/as_object.cpp
@@ -148,7 +148,7 @@ public:
        {
         as_object* proto = prototype();
         if (proto) return proto->get_member(uri, val);
-        log_debug("Super has no associated prototype");
+        log_debug(_("Super has no associated prototype"));
         return false;
        }
 
@@ -166,7 +166,7 @@ public:
         assert(fn2.isInstantiation());
         as_function* ctor = constructor();
         if (ctor) return ctor->call(fn2);
-        log_debug("Super has no associated constructor");
+        log_debug(_("Super has no associated constructor"));
         return as_value();
        }
 
@@ -350,7 +350,7 @@ as_object::add_property(const std::string& name, 
as_function& getter,
 
             Trigger& trig = trigIter->second;
 
-            log_debug("add_property: property %s is being watched" , name);
+            log_debug(_("add_property: property %s is being watched"), name);
             as_value v = trig.call(as_value(), as_value(), *this);
 
             // The trigger call could have deleted the property,
@@ -358,8 +358,7 @@ as_object::add_property(const std::string& name, 
as_function& getter,
             // it back in if it was deleted
             prop = _members.getProperty(uri);
             if (!prop) {
-                log_debug("Property %s deleted by trigger on create "
-                          "(getter-setter)", name);
+                log_debug(_("Property %s deleted by trigger on create 
(getter-setter)"), name);
                 return;
             }
             prop->setCache(v);
@@ -777,8 +776,7 @@ as_object::instanceOf(as_object* ctor)
     as_value protoVal;
     if (!ctor->get_member(NSV::PROP_PROTOTYPE, &protoVal)) {
 #ifdef GNASH_DEBUG_INSTANCE_OF
-        log_debug("Object %p can't be an instance of an object (%p) "
-                  "with no 'prototype'",
+        log_debug(_("Object %p can't be an instance of an object (%p) with no 
'prototype'"),
                   (void*)this, (void*)ctor);
 #endif
         return false;
@@ -787,8 +785,7 @@ as_object::instanceOf(as_object* ctor)
     as_object* ctorProto = toObject(protoVal, getVM(*this));
     if (!ctorProto) {
 #ifdef GNASH_DEBUG_INSTANCE_OF
-        log_debug("Object %p can't be an instance of an object (%p) "
-                  "with non-object 'prototype' (%s)",
+        log_debug(_("Object %p can't be an instance of an object (%p) with 
non-object 'prototype' (%s)"),
                   (void*)this, (void*)ctor, protoVal);
 #endif
         return false;
@@ -807,8 +804,7 @@ as_object::instanceOf(as_object* ctor)
         // Check our proto
         if (thisProto == ctorProto) {
 #ifdef GNASH_DEBUG_INSTANCE_OF
-            log_debug("Object %p is an instance of constructor %p as "
-                      "the constructor exposes our __proto__ %p",
+            log_debug(_("Object %p is an instance of constructor %p as the 
constructor exposes our __proto__ %p"),
                       (void*)obj, (void*)ctor, (void*)thisProto);
 #endif
             return true;
@@ -820,8 +816,7 @@ as_object::instanceOf(as_object* ctor)
             != thisProto->_interfaces.end()) {
 
 #ifdef GNASH_DEBUG_INSTANCE_OF
-            log_debug("Object %p __proto__ %p had one interface matching "
-                      "with the constructor prototype %p",
+            log_debug(_("Object %p __proto__ %p had one interface matching 
with the constructor prototype %p"),
                       (void*)obj, (void*)thisProto, (void*)ctorProto);
 #endif
             return true;
@@ -999,13 +994,13 @@ as_object::unwatch(const ObjectURI& uri)
 
     TriggerContainer::iterator trigIter = _trigs->find(uri);
     if (trigIter == _trigs->end()) {
-        log_debug("No watch for property %s",
+        log_debug(_("No watch for property %s"),
                   getStringTable(*this).value(getName(uri)));
         return false;
     }
     Property* prop = _members.getProperty(uri);
     if (prop && prop->isGetterSetter()) {
-        log_debug("Watch on %s not removed (is a getter-setter)",
+        log_debug(_("Watch on %s not removed (is a getter-setter)"),
                   getStringTable(*this).value(getName(uri)));
         return false;
     }
diff --git a/libcore/as_value.cpp b/libcore/as_value.cpp
index 3529edd..40c40fc 100644
--- a/libcore/as_value.cpp
+++ b/libcore/as_value.cpp
@@ -266,7 +266,7 @@ as_value::to_primitive(AsType hint) const
     if (_type != OBJECT) return *this; 
 
 #if GNASH_DEBUG_CONVERSION_TO_PRIMITIVE
-    log_debug("to_primitive(%s)", hint==NUMBER ? "NUMBER" : "STRING");
+    log_debug(_("to_primitive(%s)"), hint==NUMBER ? "NUMBER" : "STRING");
 #endif 
 
     // TODO: implement as_object::DefaultValue (ECMA-262 - 8.6.2.6)
@@ -306,7 +306,7 @@ as_value::to_primitive(AsType hint) const
     as_value ret = invoke(method, env, obj, args);
 
 #if GNASH_DEBUG_CONVERSION_TO_PRIMITIVE
-    log_debug("to_primitive: method call returned %s", ret);
+    log_debug(_("to_primitive: method call returned %s"), ret);
 #endif
 
     if (ret._type == OBJECT) {
diff --git a/libcore/movie_root.cpp b/libcore/movie_root.cpp
index 48a75a0..fd18182 100644
--- a/libcore/movie_root.cpp
+++ b/libcore/movie_root.cpp
@@ -235,7 +235,7 @@ movie_root::setRootMovie(Movie* movie)
         handleActionLimitHit(al.what());
     }
     catch (const ActionParserException& e) {
-        log_error("ActionParserException thrown during setRootMovie: %s",
+        log_error(_("ActionParserException thrown during setRootMovie: %s"),
                 e.what());
     }
 
@@ -250,8 +250,7 @@ movie_root::queryInterface(const std::string& what) const
         disable = callInterface<bool>(HostMessage(HostMessage::QUERY, what));
     }
     else {
-        log_error("No user interface registered, assuming 'Yes' answer to "
-            "question: %s", what);
+        log_error(_("No user interface registered, assuming 'Yes' answer to 
question: %s"), what);
     }
     return disable;
 }
@@ -294,7 +293,7 @@ movie_root::getRegisteredClass(const SWF::DefinitionTag* 
sprite) const
 void
 movie_root::handleActionLimitHit(const std::string& msg)
 {
-    log_debug("Disabling scripts: %1%", msg);
+    log_debug(_("Disabling scripts: %1%"), msg);
     disableScripts();
     clear(_actionQueue);
 }
@@ -336,12 +335,12 @@ movie_root::setLevel(unsigned int num, Movie* movie)
             //       use swapDepths against _level0
             //       and load into the new target while
             //       a timeout/interval is active.
-            log_debug("Replacing starting movie");
+            log_debug(_("Replacing starting movie"));
         }
 
         if (num == 0) {
 
-            log_debug("Loading into _level0");
+            log_debug(_("Loading into _level0"));
 
             // NOTE: this was tested but not automated, the
             //       test sets an interval and then loads something
@@ -389,10 +388,10 @@ movie_root::swapLevels(MovieClip* movie, int depth)
     const int oldDepth = movie->get_depth();
 
 #ifdef GNASH_DEBUG_LEVELS_SWAPPING
-    log_debug("Before swapLevels (source depth %d, target depth %d) "
-            "levels are: ", oldDepth, depth);
+    log_debug(_("Before swapLevels (source depth %d, target depth %d) levels 
are: "),
+              oldDepth, depth);
     for (Levels::const_iterator i=_movies.begin(), e=_movies.end(); i!=e; ++i) 
{
-        log_debug(" %d: %p (%s @ depth %d)", i->first,
+        log_debug(_(" %d: %p (%s @ depth %d)"), i->first,
                 (void*)(i->second), i->second->getTarget(),
                 i->second->get_depth());
     }
@@ -421,7 +420,7 @@ movie_root::swapLevels(MovieClip* movie, int depth)
     const int oldNum = oldDepth; 
     Levels::iterator oldIt = _movies.find(oldNum);
     if (oldIt == _movies.end()) {
-        log_debug("%s.swapDepth(%d): target depth (%d) contains no movie",
+        log_debug(_("%s.swapDepth(%d): target depth (%d) contains no movie"),
             movie->getTarget(), depth, oldNum);
         return;
     }
@@ -441,9 +440,9 @@ movie_root::swapLevels(MovieClip* movie, int depth)
     }
     
 #ifdef GNASH_DEBUG_LEVELS_SWAPPING
-    log_debug("After swapLevels levels are: ");
+    log_debug(_("After swapLevels levels are: "));
     for (Levels::const_iterator i=_movies.begin(), e=_movies.end(); i!=e; ++i) 
{
-        log_debug(" %d: %p (%s @ depth %d)", i->first, 
+        log_debug(_(" %d: %p (%s @ depth %d)"), i->first, 
                 (void*)(i->second), i->second->getTarget(),
                 i->second->get_depth());
     }
@@ -468,8 +467,7 @@ movie_root::dropLevel(int depth)
 
     Levels::iterator it = _movies.find(depth);
     if (it == _movies.end()) {
-        log_error("movie_root::dropLevel called against a movie not "
-                "found in the levels container");
+        log_error(_("movie_root::dropLevel called against a movie not found in 
the levels container"));
         return;
     }
 
@@ -495,8 +493,7 @@ movie_root::replaceLevel(unsigned int num, Movie* 
extern_movie)
     extern_movie->set_depth(num + DisplayObject::staticDepthOffset);
     Levels::iterator it = _movies.find(extern_movie->get_depth());
     if (it == _movies.end()) {
-        log_error("TESTME: loadMovie called on level %d which is not "
-                "available at load time, skipped placement for now");
+        log_error(_("TESTME: loadMovie called on level %d which is not 
available at load time, skipped placement for now"));
         return; 
     }
 
@@ -864,8 +861,7 @@ movie_root::advance()
         if (s && _timelineSound) {
 
             if (!s->streamingSound()) {
-                log_error("movie_root tracking a streaming sound, but "
-                        "the sound handler is not streaming!");
+                log_error(_("movie_root tracking a streaming sound, but the 
sound handler is not streaming!"));
 
                 // Give up; we've probably failed to catch up.
                 _timelineSound.reset();
@@ -1009,7 +1005,7 @@ movie_root::display()
     {
         // TODO: check what we should do if other levels
         //       have valid bounds
-        log_debug("original root movie had null bounds, not displaying");
+        log_debug(_("original root movie had null bounds, not displaying"));
         return;
     }
 
@@ -1032,7 +1028,7 @@ movie_root::display()
         const SWFRect& sub_frame_size = movie->get_frame_size();
 
         if (sub_frame_size.is_null()) {
-            log_debug("_level%u has null frame size, skipping", i->first);
+            log_debug(_("_level%u has null frame size, skipping"), i->first);
             continue;
         }
 
@@ -1317,8 +1313,8 @@ movie_root::setStageScaleMode(ScaleMode sm)
             (sm == SCALEMODE_NOSCALE || _scaleMode == SCALEMODE_NOSCALE)) {
 
         const movie_definition* md = _rootMovie->definition();
-        log_debug("Going to or from scaleMode=noScale. Viewport:%dx%d "
-                "Def:%dx%d", _stageWidth, _stageHeight,
+        log_debug(_("Going to or from scaleMode=noScale. Viewport:%dx%d 
Def:%dx%d"),
+                    _stageWidth, _stageHeight,
                 md->get_width_pixels(), md->get_height_pixels());
 
         if ( _stageWidth != md->get_width_pixels()
@@ -1391,7 +1387,7 @@ movie_root::processActionQueue(size_t lvl)
     ++calls;
     bool actionsToProcess = !q.empty();
     if (actionsToProcess) {
-        log_debug(" Processing %d actions in priority queue %d (call %u)",
+        log_debug(_("Processing %d actions in priority queue %d (call %u)"),
                     q.size(), lvl, calls);
     }
 #endif
@@ -1407,9 +1403,8 @@ movie_root::processActionQueue(size_t lvl)
         size_t minLevel = minPopulatedPriorityQueue();
         if (minLevel < lvl) {
 #ifdef GNASH_DEBUG
-            log_debug(" Actions pushed in priority %d (< "
-                    "%d), restarting the scan (call"
-                    " %u)", minLevel, lvl, calls);
+            log_debug(_("Actions pushed in priority %d (< %d), restarting the 
scan (call %u)"),
+                      minLevel, lvl, calls);
 #endif
             return minLevel;
         }
@@ -1419,8 +1414,8 @@ movie_root::processActionQueue(size_t lvl)
 
 #ifdef GNASH_DEBUG
     if (actionsToProcess) {
-        log_debug(" Done processing actions in priority queue "
-                "%d (call %u)", lvl, calls);
+        log_debug(_("Done processing actions in priority queue %d (call %u)"),
+                    lvl, calls);
     }
 #endif
 
@@ -1507,7 +1502,7 @@ void
 movie_root::pushAction(const action_buffer& buf, DisplayObject* target)
 {
 #ifdef GNASH_DEBUG
-    log_debug("Pushed action buffer for target %s", 
+    log_debug(_("Pushed action buffer for target %s"),
             target->getTargetPath());
 #endif
 
@@ -1560,7 +1555,7 @@ movie_root::executeAdvanceCallbacks()
         if (invoke) {
             if (processInvoke(invoke.get()) == false) {
                 if (!invoke->name.empty()) {
-                    log_error("Couldn't process ExternalInterface Call %s",
+                    log_error(_("Couldn't process ExternalInterface Call %s"),
                           invoke->name);
                 }
             }
@@ -1577,7 +1572,7 @@ movie_root::processInvoke(ExternalInterface::invoke_t 
*invoke)
 
     if (!invoke || invoke->name.empty()) return false;
 
-    log_debug("Processing %s call from the Browser.", invoke->name);
+    log_debug(_("Processing %s call from the Browser."), invoke->name);
 
     std::stringstream ss;       // ss is the response string
 
@@ -1605,7 +1600,7 @@ movie_root::processInvoke(ExternalInterface::invoke_t 
*invoke)
         // GetVariable sends the value of the variable
         ss << ExternalInterface::toXML(val);
     } else if (invoke->name == "GotoFrame") {
-        log_unimpl("ExternalInterface::GotoFrame()");
+        log_unimpl(_("ExternalInterface::GotoFrame()"));
         // GotoFrame doesn't send a response
     } else if (invoke->name == "IsPlaying") {
         const bool result = 
@@ -1613,7 +1608,7 @@ movie_root::processInvoke(ExternalInterface::invoke_t 
*invoke)
         as_value val(result);
         ss << ExternalInterface::toXML(val);    
     } else if (invoke->name == "LoadMovie") {
-        log_unimpl("ExternalInterface::LoadMovie()");
+    log_unimpl(_("ExternalInterface::LoadMovie()"));
     // LoadMovie doesn't send a response
     } else if (invoke->name == "Pan") {
         std::string arg = invoke->args[0].to_string();
@@ -1683,7 +1678,7 @@ movie_root::processInvoke(ExternalInterface::invoke_t 
*invoke)
             }
         }
     } else {
-        log_debug("No response needed for %s request", invoke->name);
+        log_debug(_("No response needed for %s request"), invoke->name);
     }
 
     return true;
@@ -1693,7 +1688,7 @@ void
 movie_root::executeTimers()
 {
 #ifdef GNASH_DEBUG_TIMERS_EXPIRATION
-    log_debug("Checking %d timers for expiry", _intervalTimers.size());
+    log_debug(_("Checking %d timers for expiry"), _intervalTimers.size());
 #endif
 
     // Don't do anything if we have no timers, just return so we don't
@@ -2045,7 +2040,7 @@ movie_root::cleanupDisplayList()
 #ifdef GNASH_DEBUG_INSTANCE_LIST
     if (_liveChars.size() > maxLiveChars) {
         maxLiveChars = _liveChars.size();
-        log_debug("Global instance list grew to %d entries", maxLiveChars);
+        log_debug(_("Global instance list grew to %d entries"), maxLiveChars);
     }
 #endif
 }
@@ -2054,8 +2049,8 @@ void
 movie_root::advanceLiveChars()
 {
 #ifdef GNASH_DEBUG
-    log_debug("---- movie_root::advance: %d live DisplayObjects in "
-            "the global list", _liveChars.size());
+    log_debug(_("---- movie_root::advance: %d live DisplayObjects in the 
global list"),
+                _liveChars.size());
 #endif
 
     // Iterate through the array once, instead of twice like it used to be.
@@ -2116,8 +2111,7 @@ movie_root::findCharacterByTarget(const std::string& 
tgtstr) const
 
         if (!o) {
 #ifdef GNASH_DEBUG_TARGET_RESOLUTION
-            log_debug("Evaluating DisplayObject target path: element "
-                    "'%s' of path '%s' not found", part, tgtstr);
+            log_debug(_("Evaluating DisplayObject target path: element '%s' of 
path '%s' not found"), part, tgtstr);
 #endif
             return NULL;
         }
@@ -2131,7 +2125,7 @@ void
 movie_root::getURL(const std::string& urlstr, const std::string& target,
         const std::string& data, MovieClip::VariablesMethod method)
 {
-    log_network("%s: HOSTFD is %d",  __FUNCTION__, _hostfd);
+    log_network(_("%s: HOSTFD is %d"),  __FUNCTION__, _hostfd);
     
     if (_hostfd < 0) {
         /// If there is no hosting application, call the URL launcher. For
@@ -2152,7 +2146,7 @@ movie_root::getURL(const std::string& urlstr, const 
std::string& target,
         std::string safeurl = url.encode(urlstr);
         boost::replace_all(command, "%u", safeurl);
         
-        log_debug (_("Launching URL: %s"), command);
+        log_debug(_("Launching URL: %s"), command);
         const int ret = std::system(command.c_str());
         if (ret == -1) {
             log_error(_("Fork failed launching url opener '%s'"), command);
@@ -2216,7 +2210,7 @@ movie_root::setScriptLimits(boost::uint16_t recursion, 
boost::uint16_t timeout)
     }
 
     if (RcInitFile::getDefaultInstance().lockScriptLimits()) {
-        LOG_ONCE( log_debug(_("SWF ScriptLimits tag attempting to set "
+        LOG_ONCE(log_debug(_("SWF ScriptLimits tag attempting to set "
             "recursionLimit=%1% and scriptsTimeout=%2% ignored "
             "as per rcfile directive"), recursion, timeout) );
         return;
@@ -2392,14 +2386,14 @@ movie_root::LoadCallback::processLoad()
 
         _obj->set_member(NSV::PROP_uBYTES_LOADED, _buf.size());
 
-        log_debug("LoadableObject Loaded %d bytes, reaching %d/%d",
+        log_debug(_("LoadableObject Loaded %d bytes, reaching %d/%d"),
             actuallyRead, _buf.size(), _stream->size());
     }
 
     // We haven't finished till EOF 
     if (!_stream->eof()) return false;
 
-    log_debug("LoadableObject reached EOF (%d/%d loaded)",
+    log_debug(_("LoadableObject reached EOF (%d/%d loaded)"),
                 _buf.size(), _stream->size());
 
     // got nothing, won't bother BOFs of nulls
@@ -2419,7 +2413,7 @@ movie_root::LoadCallback::processLoad()
     // NOTE: the call below will possibly change 'size' parameter
     char* bufptr = utf8::stripBOM((char*)_buf.data(), size, encoding);
     if (encoding != utf8::encUTF8 && encoding != utf8::encUNSPECIFIED) {
-        log_unimpl("%s to utf8 conversion in LoadableObject input parsing", 
+        log_unimpl(_("%s to utf8 conversion in LoadableObject input parsing"),
                 utf8::textEncodingName(encoding));
     }
 
@@ -2442,8 +2436,7 @@ void
 movie_root::callInterface(const HostInterface::Message& e) const
 {
     if (!_interfaceHandler) {
-        log_error("Hosting application registered no callback for "
-                "events/queries, can't call %s(%s)");
+        log_error(_("Hosting application registered no callback for 
events/queries, can't call %s(%s)"));
         return;
     }
     _interfaceHandler->call(e);
@@ -2594,13 +2587,13 @@ advanceLiveChar(MovieClip* mo)
 {
     if (!mo->unloaded()) {
 #ifdef GNASH_DEBUG
-        log_debug("    advancing DisplayObject %s", mo->getTarget());
+        log_debug(_("    advancing DisplayObject %s"), mo->getTarget());
 #endif
         mo->advance();
     }
 #ifdef GNASH_DEBUG
     else {
-        log_debug("    DisplayObject %s is unloaded, not advancing it",
+        log_debug(_("    DisplayObject %s is unloaded, not advancing it"),
                 mo->getTarget());
     }
 #endif

-----------------------------------------------------------------------

Summary of changes:
 libcore/AMFConverter.cpp           |   60 +-
 libcore/Button.cpp                 |   21 +-
 libcore/CharacterProxy.cpp         |    4 +-
 libcore/ClassHierarchy.cpp         |    8 +-
 libcore/DisplayList.cpp            |   14 +-
 libcore/DisplayObject.cpp          |   12 +-
 libcore/ExternalInterface.cpp      |    8 +-
 libcore/Font.cpp                   |   16 +-
 libcore/FreetypeGlyphsProvider.cpp |   50 +-
 libcore/Geometry.cpp               |    4 +-
 libcore/LineStyle.cpp              |    4 +-
 libcore/LoadVariablesThread.cpp    |   33 +-
 libcore/MovieClip.cpp              |    8 +-
 libcore/MovieFactory.cpp           |    2 +-
 libcore/MovieLoader.cpp            |   82 ++--
 libcore/PropertyList.cpp           |   20 +-
 libcore/RGBA.cpp                   |    4 +-
 libcore/SWFMovie.cpp               |    8 +-
 libcore/SWFStream.cpp              |   16 +-
 libcore/StaticText.cpp             |    2 +-
 libcore/TextField.cpp              |   72 ++--
 libcore/Video.cpp                  |   13 +-
 libcore/as_environment.cpp         |   12 +-
 libcore/as_function.cpp            |    4 +-
 libcore/as_object.cpp              |   25 +-
 libcore/as_value.cpp               |    4 +-
 libcore/movie_root.cpp             |   93 ++--
 po/gnash.pot                       | 1136 ++++++++++++++++++++++++++++++++++--
 28 files changed, 1379 insertions(+), 356 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]