text: < Localization | Tools/PologyRevision as of 16:35, 17 July 2012 by AnneW (talk | contribs)(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff) Embedded Diffing with Pology On Localization Tools Prerequisites Pology Related Articles n/a External Reading n/a Contents 1 Diffing of PO So Far 2 The Embedded Diff 2.1 Embedding Differences into Text 2.2 Message Parts Included in Diffing 2.3 Pairing Messages From Two Catalogs 2.4 Collecting Diffed Messages 3 Producing Ediffs: poediff 3.1 Diffing With Underlying VCS 4 Ediffs as Patches: poepatch 4.1 Handling Rejected Ediffs 4.2 Embedding Patches 5 Lightweight Diffing when Updating Translation Diffing of PO So Far Line-level diffing assumes that the maximal generaly recognizable unit of text file is one line, that each line carries a meaning of significant standalone value, and that the ordering of lines has been deliberately chosen and cannot be arbitrary. For example, this is typical of program code. Superficially, PO files could also be considered "a programming language of translations", and amenable to same treatment on diffing. However, some of the above assumptions which make line-level diffing viable are violated with PO format. Firstly, minimal unit of PO file is one message, whereas one line is of negligible semantic value. Secondly, ordering of messages can in principle be arbitrary (e.g. dependent on the order of extraction from source code), such that two line-wise very different PO files are actually equivalent from translator's viewpoint. And thirdly, good number of lines in the PO file are auxiliary, neither original text nor translation, generated either automatically or by the programmer (e.g. source references, extracted comments), all of which are out of translator's scope for modifications. Thus, a common way to use line-level diffing with PO files so far was only for review, and with some preparations. Due to myriad of equivalent but line-wise different representations of PO content, it is quite useless to send line diffs as patches; translators are instructed to always send full PO files to the reviewer/commiter, no matter the amount of modifications. Then, the reviewer merges the received PO file (new version), and possibly the original (old version), with current template, without wrapping of long lines in text fields. This "normalizes" old and new files with respect to all semantically non-significant elements, and only then can line diff be performed. Additionally, since a long non-wrapped line of translated text may differ only in some segments, a dedicated diff viewer which can highlight word-level differences has to be used; ordinary diff syntax highlighting (e.g. in shell, or in general text editor) won't cut it. Even with such preparations and dedicated diff viewer at hand, there is at least one significant case which is still not reasonably covered: when a fuzzy message, which had previous fields (PO was merged with --previous option to msgmerge), has been updated and unfuzzied. For example: old #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" diff #: main.c:110 - #, fuzzy - #| msgid "The Record of The Witch River" msgid "Records of The Witch River" - msgstr "Beleška o Veštičjoj reci" + msgstr "Beleške o Veštičjoj reci" Here, the diff viewer will know to show word-level diff for modified translation, but it cannot know that it should also show word-level diff between the removed previous and current msgid fields, so that reviewer can see what has changed in the original text (i.e. why the message became fuzzy), and based on that judge the change in translation. Finally, a dedicated PO editor may be able to show the truly proper, message-level difference (such as Lokalize can, operating in merge mode). Even then, however, there is still the need to send around full PO files, and, to some extent, to normalize them before comparing in the editor. The diff format becomes tied to and defined in terms of the given PO editor (which you may not want to use in general), instead of being intrinsically defined and modularly processable (such as line diffs are). The rest of this article will therefore propose a format and semantics for self-contained, message-level diffing of PO files -- the embedded diff -- and present two Pology scripts which embody it as proof of concept (but are also quite practically applicable). The Embedded Diff Difference between two PO messages should be primarily, though not exclusively, composed of differences between its text fields (msgid, msgctxt, etc.) Then, to be easily judged, differences in text should be presented as succinctly and locally as possible -- think of a long paragraph where only some spelling or punctuation has changed. Finally, the format of the complete message diff should be easily comprehendable to translators used to PO format itself, and as far as possible, to existing PO tools too. Previous considerations lead to the following decision: PO message diff will also be a PO message. Or, in other words, the diff will be embedded into the regular parts of a PO message. An embedded diff (ediff for short) message should be at least syntactically a valid PO entry, if not always semantically (i.e. if part of PO file, it should pass msgfmt, though not necessarily msgfmt --check). To enable ediffs to be passed around as patches for PO files, the embedding should be automatically resolvable (up to significant message parts) to the old and new messages from which the diff was created. In this way, if ediff messages are packed into a PO file (an ediff PO), existing PO tools can be used to review and modify the diff. For example, highlighting in a text editor will need only minimal upgrades to show the embedded differences (more on that below), and otherwise it will already highlight ediff message parts as usual. To complete the definition of ediffs in detail, the following questions should be answered: How to represent embedded differences in text? Which parts of the message should be diffed? How to pair for diffing messages from two files? How to present collection of diffed messages? Embedding Differences into Text Once the difference between the old and new strings, the word-level difference, has been determined, it should be decided how to embed it into the new (or, equivalently, old) string. One possibility is that of wdiff(1), where removed and added text segments are by default wrapped with [-...-] and {+...+}, respectively: old "The Record of The Witch River" new "Records of The Witch River" diff "[-The Record-]{+Records+} of The Witch River" However, search through PO files of several translation projects (KDE, Gnome, OpenOffice, Fedora, Mozilla) reveals the [- character combination to be frequently encountered, e.g. in synopsis of command usage. While there must exist an escaping mechanism for cases when diff wrappers are encountered in the original text, to enable unambiguous resolving of ediffs, it is nevertheless prudent to pick wrappers which reduce frequency of escaping (e.g. syntax highlighting may not be able to discern non-diff wrapper-like segments). Searching through same collection of PO files produces no hits for {-, so this combination is picked instead as wrapper of removed text segments: old "The Record of The Witch River" new "Records of The Witch River" ediff "{-The Record-}{+Records+} of The Witch River" If the text itself contains a wrapper-like combination, it is escaped by inserting tilde (~) between the brace and plus/minus sign: old "Foo {+ bar" new "Foo {+ qwyx" ediff "Foo {~+ {-bar-}{+qwyx+}" If the text already contains a substring with brace-tilde-plus/minus, then another tilde is inserted, and so on. Thus the ediff can be unambiguously resolved to old and new versions of the string. Inserting the tilde between the two characters of wrapper combinations also makes it easier on the syntax higlighting, as the difference highlighting trigger is automatically removed. It may happen that a given string is not merely empty in the old or new PO message, but that it does not exist at all (e.g. msgctxt field). Thus an ediff can be made between existing and non-existing strings too, in which case a tilde is appended to the very end of the ediff: old new "a-context-note" ediff "{+a-context-note+}~" Again, escaping is provided for by inserting further tildes if the ediff between two existing strings would result in trailing tilde (old: "~", new: "foo~", ediff: "{+foo+}~~"). How exactly the difference between two strings is formed, may be left to implementation. In fact, an implementation may allow translator to select between several diffing algorithms, depending on personal taste and situation. For example, the default algorithm of poediff does the following: words are diffed as whole, all non-word segments (interpunction, markup tags, etc.) character by character, and equal non-word segments between different words are taken into the difference segment. Hence the above ediff "{-The Record-}{+Records+} of The Witch River" instead of smaller "{-The -}Record{+s+} of The Witch River" as the former is (tentatively) easier to comprehend. Every difference segment in an ediff PO message will be represented like this, thus it is sufficient to upgrade PO syntax highlighting of an editor to indiscriminately highlight {-...-} and {+...+} segments everywhere in the message. Message Parts Included in Diffing A PO message consists of several types of parts: text fields, comments, flags, source references, etc. It would not be very constructive to diff all of them; for example, while msgstr fields should clearly be included into diffing, source references most probably should not. In order not to consider pros and cons of inclusion for each and every message part, there already exists a clear split of message parts into two groups, one of which will be taken into diffing, and the other ignored. These two groups are: extraction-invariant parts -- those which do not depend on placement (or even presence) of message in the sources, such as msgid field, msgstr fields, manual comments, etc. extraction-prescribed parts -- those which cannot exist independently of the source from which the message is extracted, such as format flags or extracted comments. Extraction-invariant parts are the ones which will be diffed. Working definition of exactly which parts belong into this group is provided by obsolete messages in PO files. Thus, these parts are: current original: msgctxt, msgid, and msgid_plural fields previous original: commented #| msgctxt, #| msgid, and #| msgid_plural fields translation: msgstr fields translator (manual) comments fuzzy state (whether the fuzzy flag is present) obsolete state (whether the message is obsolete) All the listed fields and manual comments are presented in ediff message as wrapped word-level differences, as described earlier. Change in states, fuzzy and obsolete, is represented slightly differently. A special "extracted" (automatic) comment is added to the ediff message, starting with ediff: and listing any extra info needed to describe the ediff, including the state changes. Here is an example of two messages and the ediff they would produce (whether two messages such as these would get paired for diffing in the first place, will be discussed later on): old #, fuzzy #~| msgid "Accurate subpolar weather cycles" #~ msgid "Accurate subpolar climate cycles" #~ msgstr "Tačni ciklusi subpolarnog vremena" new #. ui: property (text), widget (QCheckBox, accCyclesTrop) #: config.ui:180 #, fuzzy #| msgid "Accurate tropical weather cycles" msgctxt "some-superfluous-context" msgid "Accurate tropical climate cycles" msgstr "Tačni ciklusi tropskog vremena" ediff #. ediff: state {-obsolete-} #. ui: property (text), widget (QCheckBox, accCyclesTrop) #: config.ui:180 #, fuzzy #| msgid "Accurate {-subpolar-}{+tropical+} weather cycles" msgctxt "{+some-superfluous-context+}~" msgid "Accurate {-subpolar-}{+tropical+} climate cycles" msgstr "Tačni ciklusi {-subpolarnog-}{+tropskog+} vremena" Here is how this ediff message will look like in KWrite and Kate, starting with KDE 4.2: (In fact, ediff-aware PO syntax highlighting definition for Kate can be used with Kate versions as early as KDE 3.4. The definition file should simply be placed as ~/.kde/share/apps/katepart/syntax/gettext.xml, and it will override the system definition.) First thing to note is that the ediff message contains not only extraction-invariant parts, but also copies verbatim extraction-prescribed parts from the new message. Effectively, the ediff is embedded into the copy of new message. Extraction-prescribed parts are not simply discarded in order to provide more context when reviewing the diff. Here, for example, the extracted comment states that the text is a checkbox label, which may be important for the style of translation. The other important element is the #. ediff: dummy extracted comment, which here indicates that the obsolete state has been "removed", i.e. the message was unobsoleted going from old to new version. Aside from state changes, few other indicators may rarely be present, as described in API documentation of pology.misc.diff module, function msg_ediff. Some of these indicators will be mentioned later on. The ediff comment will be present only when necessary, if there are any indicators to show. If diffing of two messages would always be conducted part for part, for all parts which are taken into diffing, then in some cases the resulting ediff would not be very useful. Consider how the first example in the article, the line-level diff of a fuzzy and translated message, would look like as ediff if performed part for part: old #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" ediff #. ediff: state {-fuzzy-} #: main.c:110 #| msgid "{-The Record of The Witch River-}~" msgid "Records of The Witch River" msgstr "{-Beleška-}{+Beleške+} o Veštičjoj reci" The same problem as with the line-level diff persists: instead of showing the difference from previous to current msgid field, the current msgid is left untouched, and previous msgid is simply shown to have been entirely removed. Therefore, instead of straightforward, part for part diffing, a special transformation will take place when exactly one of the two diffed messages is fuzzy and equipped with previous original text fields. This splits into two directions: from fuzzy to non-fuzzy, and from non-fuzzy to fuzzy. Diffing from fuzzy to non-fuzzy message, such as above, is the more usual of the two directions. It is typical of translation updated after merging with template, where some fuzzied messages will have been resolved. In this case, the original old and new messages are transformed thusly prior to diffing (*-rest denotes all diffed parts that are neither original text nor fuzzy state): old fuzzy --> fuzzy old-previous-fields --> old-previous-fields old-current-fields --> old-previous-fields old-rest --> old-rest new - --> - - --> old-current-fields new-current-fields --> new-current-fields new-rest --> new-rest In this way, ediff message's current fields will show the important difference, that of previous fields of old fuzzy message and current fields of new non-fuzzy message. Ediff message's previous fields will show the less important difference of old fuzzy messages previous and current fields, but only if it is not equal to the difference in current fields; otherwise it is eliminated. This may sound confusing, but the final ediff produced in this way is quite intuitive: old #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" ediff #. ediff: state {-fuzzy-} #: main.c:110 msgid "{-The Record-}{+Records+} of The Witch River" msgstr "{-Beleška-}{+Beleške+} o Veštičjoj reci" The reviewer here sees that the message was unfuzzied, the change in the original text that caused the message to become fuzzy, and the change made in translation to unfuzzy it. Old version (in removed and equal segments) of original and translation is that of the message before it got fuzzied, and new version (in added and equal segments) is that of the message after it was unfuzzied. From non-fuzzy to fuzzy message should be the less frequent direction of diffing. It corresponds e.g. to case where the diff is taken from older fully complete translation to the one just after merging with newest template. In this case, the transformation is as follows: old - --> - - --> new-previous-fields old-current-fields --> old-current-fields old-rest --> old-rest new fuzzy --> fuzzy new-previous-fields --> new-current-fields new-current-fields --> new-current-fields new-rest --> new-rest Again, the difference presented by ediff messages's current fields will be the most important one, the difference in previous fields the less important one, and eliminated if equal to the other. Here is what this will do if applied to one step earlier (just after merging) of the running example: old #: main.c:89 msgid "The Record of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" ediff #. ediff: state {+fuzzy+} #: main.c:110 #, fuzzy msgid "{-The Record-}{+Records+} of The Witch River" msgstr "Beleška o Veštičjoj reci" The reviewer here sees that the message became fuzzy from new to old, and the change in original text that caused this. (On a side note, remember that ediff message is constructed by embedding differences into a copy of new message, so the source reference and the fuzzy flag from the new message appear here in the ediff message.) To be able to use the ediff as patch, it is necessary to reconstruct original old and new messages after resolving ediff into transformed old and new messages. This step is fortunatelly unambiguous; one just needs to check whether the non-fuzzy of the two resolved messages has previous fields, or, if not (due to elimination of equal difference in previous fields, or because template was merged without the --previous option), whether the current fields are equal. Then the back-transformation to original old and new messages can be performed. Pairing Messages From Two Catalogs So far the article has described how to make an embedded diff out of two messages, once it has been decided that those messages should be diffed. However, on the lowest level, the user decides not which messages to diff, but which two PO files to diff. The implementation should then automatically pair for diffing messages from the two catalogs, and this section described several possible ways to do this. In the first instance, messages should obviously be paired by key (primary pairing), the unique combination of msgctxt and msgid fields. In the most usual case -- reviewing an ediff from incomplete catalog with some fuzzy and untranslated messages, to an updated catalog with some or all of those messages translated -- pairing by key will be fully sufficient, as both catalogs contain exactly the same set of messages by keys. These two messages will be plainly paired by key: old #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" But what should happen if some messages cannot be paired by key? Consider the earlier example where diff was taken from older fully translated, to newer merged catalog: old #: main.c:89 msgid "The Record of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" The keys, here just current msgid fields, of the two message do not match, so they cannot be paired by key. Yet it would be rather ungainly to represent the old message as fully removed in the ediff, and the new message as fully added: ediff #: main.c:89 msgid "{-The Record of The Witch River-}~" msgstr "{-Beleška o Veštičjoj reci-}~" #. ediff: state {+fuzzy+} #: main.c:110 #, fuzzy #| msgid "{+The Record of The Witch River+}~" msgid "{+Records of The Witch River+}~" msgstr "{+Beleška o Veštičjoj reci+}~" (That the message has been fully added or removed can be seen by trailing tilde in the msgid field, which indicates that the old or new msgid does not exist at all, and so neither the message with it.) Instead, messages left unpaired by key should be tested for pairing by pivoting around previous fields (secondary pairing). The two messages above will thus be paired due to the fact that the current msgid of the old message is equal to the previous msgid of the new message, and will produce a single ediff message as shown earlier. Finally, consider the third related combination, when the old catalog has not yet been merged with the template, while the new catalog has both been merged and its translation updated: old #: main.c:89 msgid "The Record of The Witch River" msgstr "Beleška o Veštičjoj reci" new #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" Once again, it would be a waste to present the old message as fully removed and the new message as fully added in the ediff. When a message is left unpaired after both pairing by key and pairing by pivoting, then the two catalogs should be merged in the background -- as if the new is the template for the old, and vice versa -- and then tested for chained pairing by pivoting and by key with merged catalog as intermediary. This pairing by merging, or tertiary pairing, will then produce another natural ediff: ediff #: main.c:110 msgid "{-The Record-}{+Records+} of The Witch River" msgstr "{-Beleška-}{+Beleške+} o Veštičjoj reci" Implementations can decide which pairing modes beyond the primary, by key, to use. There should not be much reason not to perform secondary pairing, by pivoting, too. If tertiary pairing, by merging, is implemented, it should be provided that the user can disable it (sometimes this pairing may produce strange results, and needs msgmerge to be available on the system). Collecting Diffed Messages For ediff of two PO files to also be a syntactically valid PO file, constructed ediff messages should be preceded by a PO header on output. At first glance, this PO header could be itself the ediff of PO headers of the catalogs which were diffed. However, there are several issues with this approach: Reviewer of the ediff PO file would not be informed at once whereas there was any difference between the headers. Headers tend to be long, and a point change in one of the fields may go visually unnoticed. Depending on the amount of changes between the two headers, the resulting ediff message of the header could be too badly formed to represent the header as such (e.g. if header fields in msgstr were added or removed, embedded difference wrappers would invalidate MIME-header format of msgstr), and thus confuse the PO tools. How would the diff of two collections of PO files (e.g. directories) be packed into a single ediff PO, such as can normally be done with line-level diffing? To avert these difficulties, the following is done instead. First, the header of ediff PO is constructed as a minimal valid header (i.e. one that msgfmt would not complain about) independent of the content of original headers. poediff will produce something like: # +- ediff -+ msgid "" msgstr "" "Project-Id-Version: ediff\n" "PO-Revision-Date: 2009-02-08 01:20+0100\n" "Last-Translator: J. Random Translator\n" "Language-Team: Differs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Ediff-Header-Context: ~\n" PO-Revision-Date header field is naturally set to the date when the ediff is made. Last-Translator and Language-Team can be somehow pulled from environment (poediff will source them from ~/.pologyrc, or set some dummy values as above if not present). Encoding of the ediff PO can be chosen at will by the implementation, so long as all following ediff messages can be encoded with it (poediff will always use UTF-8). The purpose of the X-Ediff-Header-Context field will be explained shortly. It is the first next message in the ediff PO that will actually be the ediff of headers of the two diffed PO files. Headers are diffed just like any other message, but the resulting ediff is equiped with few extra decorations: # ========================================================= # Translation of The Witch River into Serbian. # Koja Kojic <[email protected]>, 2008. # {+Era Eric <[email protected]>, 2008.+}~ msgctxt "~" msgid "" "- l10n-wr/sr/wriver-main.po\n" "+ l10n-wr/sr-mod/wriver-main.po\n" msgstr "" "Project-Id-Version: wriver 0.1\n" "POT-Creation-Date: 2008-09-22 09:17+0200\n" "PO-Revision-Date: 2008-09-{-25 20:44-}{+28 21:49+}+0100\n" "Last-Translator: {-Koja Kojic <[email protected]}" "{+Era Eric <[email protected]+}.net>\n" "Language-Team: Serbian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" First observe the normal ediff segments: translator comment with a new translator who updated the PO file has been added, and PO-Revision-Date and Last-Translator header fields contain ediffs reflecting the update. These are the only actual differences between the two headers. More interesting are the extra decorations: The very first translator comment (here a long line of equality signs) can be anything, and serves to give good visual distinction to the header ediff. This is more so convenient when the ediff PO contains diffs of several pairs of PO files. That a particular message in the ediff PO is a header ediff, is indicated by the msgctxt set to a special value, here a single tilde. This value is given up front by the X-Ediff-Header-Context of the ediff PO header. It should be computed during diffing such that it does not conflict with msgctxt of one of the normal message ediffs (e.g. it may simply be a sufficiently long sequence tildes). The msgid field of the header ediff contains newline-separated paths of the diffed PO files. More precisely, the two lines of the msgid field are in form [+-] file-path[ <<< comment]\n (The trailing newline of the second file path is elided if the msgstr does not end in newline, to prevent msgfmt from complaining.) The optional, <<<-separated comment to the file path can be used for any purpose, one which will be demonstrated when describing functionality of poediff. Although when a PO file is properly updated there should always be some difference in its header, it may happen that there is none. In such case, the header ediff message is still added, but such that it only contains the extra decorations -- the visual separator comment, special msgctxt, and msgid with file paths. All other comments and msgstr should be empty, and the empty msgstr indicates that there was no difference in headers. Presence of this "empty" header ediff is necessary to provide diffed file paths and, if several POs were diffed, to separate them in the ediff PO. After the header ediff message, ordinary ediff messages follow. As already obvious by now, when several POs were diffed to construct a single ediff PO, each next PO in the ediff simply opens with a new header ediff message. Click on the thumbnail on the right to see how an ediff of two PO files looks like in entirety, with syntax highlighting in Kate. Especially when diffing several PO files, it may happen that two ediff messages have equal keys (msgid and msgctxt fields) and thus cannot be both added as such to the ediff PO. In such case, the ediff message which was added after the first with the same key, will have its msgctxt field padded by few random alphanumerics, such as to make its key unique. This padding sequence will be recorded in the ediff comment. For example: # ========================================================= msgctxt "~" msgid "...(first PO header ediff)..." msgstr "..." #. ediff: state {-fuzzy-} msgid "White{+ horizon+}" msgstr "Belo{+ obzorje+}" # ========================================================= msgctxt "~" msgid "...(second PO header ediff)..." msgstr "..." #. ediff: state {-fuzzy-}, ctxtpad q9ac3 msgctxt "|q9ac3~" msgid "White{+ horizon+}" msgstr "Belo{+ obzorje+}" The padding sequence is appended to the original msgctxt, separated by the pipe character. If there was no original msgctxt, the padding sequence is further extended by a tilde. Producing Ediffs: poediff Pology's poediff script implements embedded diffing as outlined in the previous section. To diff two PO files, executing the usual: $ poediff orig/foo.po mod/foo.po will write the ediff PO (if there is any difference) to standard output, with some basic shell highlighting of difference segments. Option -o can be used to output the ediff PO to file instead. Other options include --no-merge (-n) to not perform pairing by merging, and --strip-headers (-s) to take a quick look of differences without headers in the way (output with stripped headers is not a valid PO, and cannot be used as patch). It is equally simple to make ediff of directories: $ poediff orig/ mod/ Diffing of directories is by default recursive and takes into ediff added and removed catalogs. When a catalog has been added or removed, the msgid of corresponding header ediff will have one of the file paths, new or old, empty. To have non-dummy translator name and email address added to the header of ediff PO, set them in Pology's configuration file, ~/.pologyrc: [user] name = Koja Kojic original-name = Која Којић email = [email protected] (These entries cover all contexts in Pology where such information is of use; original-name field is used when the name is to be written differently in English and translator's native language.) This is pretty much where the story about poediff would end, if not for its ability to take into account the underlying VCS, if one is used to control PO files. Diffing With Underlying VCS When PO files are under version control, poediff can operate in VCS mode using the option -c VCSKEY (--vcs), where VCSKEY is the keyword of one of VCS known to poediff. Then, instead of giving two paths to diff, any number of version-controlled paths (files or directories) is given. Without other options, all modified PO files in these paths are diffed against the last commit known to local repository. For example, if an application uses Subversion repository, PO files in its po/ directory can be diffed with: $ poediff -c svn app/po/ Some other set of revisions to diff can be given by the option -r REV1[:REV2] (--revision). REV1 and REV2 are not necessarily proper revision IDs, but any strings that the underlying VCS will be able to convert into revision IDs. If REV2 is omitted, diffing is preformed from REV1 to current working copy. When ediff is made in VCS mode, msgid fields of header ediffs will use <<<-separated comments to file paths to indicate revision IDs: # ========================================================= # ... msgctxt "~" msgid "" "- app/po/lang.po <<< 20537\n" "+ app/po/lang.po" msgstr "..." As for supported VCS, Pology currently knows about Subversion (svn) and Git (git). To add a new VCS, its functionality should be wrapped for Pology's use in pology.misc.vcs, using the interface defined by VcsBase class. Ediffs as Patches: poepatch For basic functionality, applying an ediff patch is implementationally even easier than applying a line-level patch. Each ediff message in turn is resolved into originating old and new message, and if either the old or new message exists in target PO and is equal by extraction-invariant parts, then the message patch is applied, otherwise rejected. Applying the patch means overwriting extraction-invariant parts of the target message with those of the new message from the ediff, and leaving other parts untouched. If the target message is already equal to new message by extraction-invariant parts, then the patch is silently ignored. This means that if the same patch is applied twice, second application makes no modifications to the target catalog. Likewise if, by chance, the changes given by the patch were already independently introduced in the target catalog. Command-line interface of poepatch is much like patch(1), sans the myriad of its more obscure options. There is the -p option to strip leading elements of file paths in the ediff, and -d option to append to them a directory path where target POs are to be found. If the files were diffed with underlying VCS as in the previous example, then the ediff could be applied in any of the following ways: $ cd repos/app/po && poepatch <ediff.po $ cd repos/ && poepatch -p0 <ediff.po $ poepatch -d repos/app/po <ediff.po Header patch (coming from the header ediff message) is applied in a slightly more relaxed fashion: some of the header fields are ignored when checking whether the patch is applicable. These are the fields which are known to be volatile as the PO file goes through different translators, and do not influence the processing of the catalog directed by the header (such as encoding or plural forms). Currently, these fields are: POT-Creation-Date, PO-Revision-Date, Last-Translator, X-Generator. When a header patch is accepted, these fields in the target header are overwritten with those from the patch (including being added or removed). Handling Rejected Ediffs Any rejected ediff messages will be written out to stdin.rej.po if the patch was read from standard input, or to <catname>.rej.po if it was given as file through -i option (e.g. ediff.rej.po for input ediff.po). File with rejected ediff messages will again be an ediff PO file. It will have the header as before, except that its title comment will mention, in free prose, that this particular ediff PO contains rejects of some patching operation. Afterwards, ediff messages rejected as patch will follow. Header ediff messages will be present whether rejected or not, for the same purpose of separation and provision of file paths, but they will be stripped of comments and msgstr when the header patch itself was not rejected. Furthermore, to every straigh-out rejected ediff message an ediff-no-match flag will be added. This is done, naturally, because some ediff messages may not be rejected straight-out, but go through some post-processing instead. Consider the following scenario. A catalog has been merged to produce the fuzzy message: old #: tools/power.c:348 msgid "Active sonar low frequency" msgstr "Niska frekvencija aktivnog sonara" new #: tools/power.c:361 #, fuzzy #| msgid "Active sonar low frequency" msgid "Active sonar high frequency" msgstr "Niska frekvencija aktivnog sonara" Translator updates the translation, which produces the usual ediff message on update from fuzzy to translated: ediff #. ediff: state {-fuzzy-} #: tools/power.c:361 msgid "Active sonar {-low-}{+high+} frequency" msgstr "{-Niska-}{+Visoka+} frekvencija aktivnog sonara" However, before this patch could have been applied, the programmer adds a trailing colon to the same message, and the catalog is merged again to produce: new2 #: tools/power.c:361 #, fuzzy #| msgid "Active sonar low frequency" msgid "Active sonar high frequency:" msgstr "Niska frekvencija aktivnog sonara" The patch can no longer be cleanly applied, due to the extra colon added in the meantime to the msgid, so it has to be rejected. If nothing else is done, it would appear in the file of rejects as: #. ediff: state {-fuzzy-} #: tools/power.c:361 #, ediff-no-match msgid "Active sonar {-low-}{+high+} frequency" msgstr "{-Niska-}{+Visoka+} frekvencija aktivnog sonara" It seems a bit wastefull to reject such a near-match patch without any indication that it could be easily adapted to suit the latest message in the target PO. Therefore, when an ediff message is rejected, the following analysis is performed: by trying out message pairings as described for diffing, could the old message from the patch be paired with a current message from the target PO, and that current message with the new message from the patch? Or, in other words, can an existing message in the target PO be "fitted in between" the old and new messages defined by the patch? If this is the case, instead of the original, two special ediff messages -- split rejects -- are constructed and written out: one from the old to the current message, and another from the current to the new message. They are flagged as ediff-to-cur and ediff-to-new, respectively: #: tools/power.c:361 #, fuzzy, ediff-to-cur #| msgid "Active sonar low frequency" msgid "Active sonar high frequency{+:+}" msgstr "Niska frekvencija aktivnog sonara" #. ediff: state {-fuzzy-} #: tools/power.c:361 #, ediff-to-new #| msgid "Active sonar {-low-}{+high+} frequency{+:+}" msgid "Active sonar {-low-}{+high+} frequency" msgstr "{-Niska-}{+Visoka+} frekvencija aktivnog sonara" There are more ways to interpret split rejects, depending on the circumstances. In this example, from ediff-to-cur message reviewer can see what had changed in the target message after the translator made the ediff. This can also be seen by comparing difference embedded into previous and current msgid fields in the ediff-to-new message. With slightly more extensive editing, the reviewer can fold these two messages into an applicable patch: #. ediff: state {-fuzzy-} #: tools/power.c:361 #, ediff msgid "Active sonar {-low-}{+high+} frequency:" msgstr "{-Niska-}{+Visoka+} frekvencija aktivnog sonara" Given that the file of rejected ediffs is also an ediff PO, after edits to make some of the rejected patches applicable, it can be reapplied as patch. If that is done, poepatch will silently ignore all ediff messages having ediff-no-match and ediff-to-new flag, as these have already been determined inapplicable. That is why in the example above the reviewer has replaced the ediff-to-new with the plain ediff flag on the folded ediff. Embedding Patches Depending on the type of text which is being translated, and distance of translation language's grammar, ortography and style from English, it may be difficult to review an ediff in isolation. In general, messages in ediff PO will lack positional context, which is in the full PO provided by messages immediately preceding and following the target message. For example, a long passage from documentation probably needs no positional context. But a short newly added message such as "Crimson" could very well need one, if it has neither msgctxt nor extracted comment describing it. Is it really a color? What grammatical ending should it have, in a language which matches adjective to noun gender? Several messages around it in the full PO could easily show whether it is just another color in a row, and their grammatical endings (determined by a translator earlier) would show the needed ending for the new color. Then, if an ediff message needs some editing before being applied, it may not be easy to do this directly in the ediff PO. Everything is fine so long as only added text segments ({+...+}) are edited, but if the sentence needs to be restructured more thoroughly, reviewer would have to make sure to put all additions into existing or new {+...+} segments, and to wrap all removals as {-...-} segments. If this is not carefully performed, the patch will not be applicable any more, as old message resolved from it will no longer exactly match a message in the target PO. For these reasons, poepatch can apply the patch such as not to resolve the ediff, but to set all its extraction-invariant fields to the message in the patched PO. In effect, the patched PO becomes an ediff PO by itself, but only in the messages which were actually patched. To mark these messages for lookup, ediff flag is added to them. If the message in the ediff PO was: #: title.c:274 msgid "Tutorial" msgstr "{-Tutorijal-}{+Podučavanje+}" then when the patch is successfully applied with embedding, the patched message in target PO will look like this: #: main.c:110 msgid "Records of The Witch River" msgstr "Beleške o Veštičjoj reci" #: title.c:292 #, ediff msgid "Tutorial" msgstr "{-Tutorijal-}{+Podučavanje+}" #: title.c:328 msgid "Start the Expedition" msgstr "Pođi u ekspediciju" Other than the addition ediff flag, note that the patched message also kept its source reference, rather than it being overwritten by that from ediff PO. Same holds for all extraction-prescribed parts. Reviewer can now jump from ediff to edif flag, always having the full positional context for each patched message, and being able to edit it to heart's content, with only minimal care not to invalidate the ediff format. Wrapped difference segments can be entirely removed, non-wrapped segments can be freely edited; it should only not happen that a wrapped segment looses its opening or closing sequence. But this does not mean that the reviewer needs to remove or touch difference segments at all, that is, to unembed patched messages by hand -- poepatch will do that automatically, when run on embedded-patched POs with a particular option. A patch is applied with embedding by issuing the -e (--embed) option (E in parenthesis in progress output indicates that embedding is engaged): $ poepatch -e <ediff.po patched (E): lang.po $ When the patched PO has been reviewed and patched messages possibly edited, all remaining embedded differences are removed, i.e. resolved to new versions, by running: $ poepatch -u lang.po Only those messages having the ediff flag are resolved, therefore the reviewer should never remove them (unless manually unembedding the whole patched message). What happens with rejected patches when embedding is engaged? They are also added into the target PO, with heuristic positioning, and no separate ediff PO with rejects is created. Same as with plain patching, straight-out rejects will have ediff-no-match flag, and split rejects ediff-to-cur and ediff-to-new. If these are not manually resolved during the review (ediff-no-match messages removed, ediff-to-* messages removed or folded), when poepatch is run to unembed the patch, it will remove all ediff-no-match and ediff-to-new messages, and resolve ediff-to-cur messages to new version (effectively rejecting patches from which split rejects had originated). Lightweight Diffing when Updating Translation Rather than for reviewing changes and sending patches, the translator may want to have only a convenient diff between the previous and new original text when updating a catalog merged with --previous option. Repeating the (by now) usual example message: #: main.c:110 #, fuzzy #| msgid "The Record of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" Obviously, a dedicated PO editor could automatically present appropriate diff for messages like these (e.g. Lokalize can do it since inception), so for translators using such an editor, diffing of fuzzies is either already available or a strong candidate for a feature request. The rest of this section therefore applies only to translators who stick to general text editors (with or without some power-assists for editing PO files). One could use poediff and poepatch for the purpose of diffing of fuzzies, by first diffing from previous complete to new merged catalog, embedding the patch into the merged catalog, updating translation, and then unembedding ediffs. One drawback of this, however, is that two version of the catalog are necessary, when only the merged one contains all the information. More drawbacks are that the catalog has to be cleared of ediffs after updating, or that each diffed message contains more information than necessary (ediff flag, #. ediff: comment) since all ediffs are of one and the same type. In short, full embedded diffing is too heavyweight as an assist to updating fuzzy messages. Instead, there is a Pology sieve intended for this particular purpose, diff-previous, which embeds the difference from previous to current original text into previous fields. Executing: $ posieve diff-previous lang.po will modify fuzzy messages in-place in the processed catalog, to the following partial ediff: #: main.c:110 #, fuzzy #| msgid "{-The Record-}{+Records+} of The Witch River" msgid "Records of The Witch River" msgstr "Beleška o Veštičjoj reci" The format of embedding is the same as before, so the ediff-aware syntax highlighting works here too. When the message is updated and properly unfuzzied (both fuzzy flag and previous fields removed), none of the ediff remains, so there is no need for post-unembedding. In other words, translator updates translation just as used to before, with the free benefit of having the ediff of original text. Note that no embedding should remain in previous fields by the time the catalog is merged again, as it would throw off msgmerge when matching to create new fuzzies. This will normally not be an issue, as the translator will have unfuzzied all messages when updating the catalog after last merging. However, if there were a lot of fuzzy messages, and translator didn't have the time to update all of them, diff-previous sieve can also be used to unembed any remaining ediffs, restoring the original values of previous fields. It just needs to be run on the catalog with extra parameter strip: $ posieve diff-previous -sstrip lang.po Retrieved from "https://techbase.kde.org/index.php?title=Localization/Tools/Pology/PO_Embedded_Diffing&oldid=73448" Category: Localization This page was last edited on 17 July 2012, at 16:35. Content is available under Creative Commons License SA 4.0 unless otherwise noted.


text:
Article 66 of the Charter allows state parties to the Charter to make special protocols or agreements where necessary to supplement the provisions of the Charter. A number of protocols and conventions have been adopted to supplement the substance of the Charter.
The African Charter on the Rights and Welfare of the Child was adopted in Addis Ababa, Ethiopia, on 11 July 1990, and entered into force on 29 November 1999. As of 21 October 2011, 46 member states of the AU have ratified the Children Charter.
The Charter defines a 'child' as every human being below the age of 18 years. Four principles underpin the Charter. These are: nondiscrimination, participation, the best interest of the child, and survival and development. More specifically, the Charter prohibits child marriage, child labour and child abuse. It also addressed such children rights-related themes as juvenile justice, armed conflict, adoption, drug abuse, sexual exploitation and human trafficking.
The African Children's Charter established the African Committee of Experts on the Rights and Welfare of the Child (African Children's Rights Committee) to promote and protect the rights and welfare of the child. The Committee comprises 11 members elected by the AU Assembly for a term of 5 years. The seat of its Secretariat is in Addis Ababa, Ethiopia.
The Committee is mandated to promote and protect the rights stipulated in the Children's Charter, monitor its implementation, and to interpret its provisions. State parties to the Children's Charter are required to submit state reports setting out measures they have adopted to implement the provisions of the Charter. The Committee is also competent to receive communications from individuals, groups, NGOs and state parties to the Children's Charter. The Committee's first finding, in 2011, dealt with the failure of Kenya to register and provide nationality to children of Nubian descent in the country. The Committee held Kenya in violation of the African Children's Charter.
' … although states maintain the sovereign right to regulate nationality, in the African Committee's view, state discretion must be and is indeed limited by international human rights standards, in this particular case the African Children's Charter, as well as customary international law and general principles of law that protect individuals against arbitrary state actions. In particular, states are limited in their discretion to grant nationality by their obligations to guarantee equal protection and to prevent, avoid, and reduce statelessness.'
Children of Nubian Descent in Kenya case, para 48
For more information on the African Children's Rights Committee, visit www.acerwc.org
The Protocol on the Establishment of an African Court on Human and Peoples' Rights was adopted in Ouagadougou, Burkina Faso, on 9 June 1998 and entered into force on 25 January 2004. All member states of the AU except Eritrea and Cape Verde have signed the Protocol, but so far only 26 states have ratified it. Under article 34(6) of the Protocol, states may also make an optional declaration, accepting the competence of individuals and NGOs with observer status before the Commission to submit cases directly to the Court. By 21 October 2011, five states have made such a declaration: Burkina Faso, Ghana, Mali, Malawi and Tanzania.
The Protocol to the African Charter on Human and Peoples' Rights on the Rights of Women in Africa (Women's Protocol) was adopted in Maputo, Mozambique, in July 2003 and entered into force in November 2005. It was inspired by a recognised need to compensate for the inadequate protection afforded to women by the African Charter on Human and Peoples' Rights. While the African Charter guarantees non-discrimination on the basis of sex, equality before the law, and the elimination of discrimination against women, it does not articulate specific violations of women's rights which result from discrimination.
The Women's Protocol is comprehensive with its inclusion of civil and political rights, economic, social and cultural rights, group rights and, for the first time in an international treaty, health and reproductive rights. It also contains innovative provisions that advance women's rights further than any existing legally binding international treaty. For example, the legal prohibition of female genital mutilation is prescribed as well as the authorisation of abortion in cases of sexual assault, rape, incest, and where the continued pregnancy endangers the mental and physical health of the mother or the life of the mother or the foetus. Furthermore, the Protocol is the first international human rights treaty to explicitly refer to HIV/AIDS, in this case, in the context of sexual and reproductive health rights. Other provisions address violence against women, harmful traditional practices, child marriage, polygamy, inheritance, economic empowerment, women's political participation, education, and women in armed conflict. Notably, the Women's Protocol recognises that certain women suffer multiple forms of discrimination and accordingly, separate provisions for widows, elderly women, and disabled women are included.
Thirty countries have ratified the Women's Protocol as of 21 October 2011.
In addition to the foregoing instruments, the African Union (AU) has also adopted a number of treaties relevant to the promotion and protection of human rights in Africa. These instruments include the Constitutive Act of the AU 2000, Protocol on the Pan-African Parliament 2001, Protocol on the Peace and Security Council 2002, Statute of the Economic, Social and Cultural Council 2004, Convention on the Prevention and Combating of Terrorism 1999, Convention on the Conservation of Nature and Natural Resources 2003, Convention on the Prevention and Combating Corruption 2003, African Charter on Democracy, Elections and Governance 2007, and the Convention for the Protection and Assistance of Internally Displaced Persons 2009. The AU, as well as the African Commission, has also adopted various declarations and resolutions relevant to the understanding and advancement of the African Charter provisions.
For more information on these human rights instruments, see Heyns C & Killander M (eds) (2010) Compendium of key human rights documents of the African Union.

subset: commoncrawl


text:
Register or transfer your domain name from an ICANN accredited Registrar.
Discover all of our hosting packages that meet all of your needs.
The ultimate solution to respond to all you needs in terms of mailing. Enjoy the stability and the security of your mailing server with Genious Communications !
If you desire to start a web hosting business, our reseller pack is the right fit for you !
A range of additional services for more insurance on the web.
Genious Communications is first and foremost a team! Do you want to learn more ? Check this out !
Dokeos is an elearning and course management web application. It provides all the features needed for e-learning and blended learning management : From Authoring to Reporting. Dokeos supports many different kinds of learning and collaboration activities. Teachers/trainers can create, manage and publish their courses through the web. Students/trainees can follow courses, read content or participate actively through groups, forums, chat.Official Website Order
Install Dokeos on your hosting for free in a few clicks from your control panel
Genious Communications © 2003 - 2020 - All rights reserved.


text:
Surprising Impacts of Gravity Waves
Jim Fuller, Caltech
NASA, Exoplanets, and Life After NMSU
Dawn Gelino, NASA Exoplanet Science Institute, CalTech
Abstract: Are you interested in learning more about the search for life in the Universe? Or perhaps you may be interested in being awarded time on 10 m telescopes for your science? Or maybe you are ready to learn more about prestigious NASA Postdoctoral Fellowships? This talk will touch on some recent and exciting results in the exoplanet field, as well as the different NASA HQ programs that I currently run for all of astrophysics (many of which may be helpful and applicable to YOU), and the path I took from NMSU to where I am now.
Stellar Winds and Stellar Rotation
Don Terndrup, Ohio State University
For more than 50 years, we have known that stars rotate quickly when they are young and slow down as they age. This process gives us important clues about magnetic field strength and geometry, as well as the nature of stellar winds, in solar-like stars. We have been working to put the analysis of stellar rotation on a modern statistical footing, and in this talk I will give you an update on our efforts. There are a number of critical observational problems that must be considered in calibrating models of angular momentum loss, especially problems of data censorship (older or less active stars are not detected in studies of rotation). I will conclude by evaluating the prospects for using stellar rotation as an age indicator, and demonstrate that such ages are far less precise – though still useful – than our group and others have previously claimed.
The Chemical Composition and Dynamics of Titan's Atmosphere as Revealed by ALMA
Alexander Thelen, NMSU
Over the last century, remarkable advances in our understanding of Titan's atmosphere have been accomplished by a campaign of ground- and space-based observations revealing a wealth of complex, organic species in the moon's upper atmosphere. Many of Titan's atmospheric constituents produced through the photochemistry and ionospheric interactions of N2 and CH4 exhibit significant variations with latitude and time, particularly towards the poles and within the winter circumpolar vortex. The measurement of spatial and temporal variations in Titan's atmosphere enables us to elucidate connections between its dynamics, photochemistry, and the influence of seasonal changes. At the end of the Cassini mission in 2017, we can employ the Atacama Large Millimeter/submillimeter Array (ALMA) for future observations of Titan's atmosphere. Here we detail the analysis of numerous short integration (~3 minute) ALMA observations from 2012 to 2015 to investigate Titan's stratospheric composition, temporal variations, and search for new molecular species. Using the Non-linear optimal Estimator for MultivariatE spectral analySIS (NEMESIS) radiative transfer code, we retrieved vertical profiles of temperature and abundance in Titan's lower stratosphere through mesosphere (~50–550 km) from three spatially independent regions. We modeled CO emission lines to obtain temperature measurements, and retrieved abundance profiles for HCN, HC3N, C3H4, and CH3CN. The combination of integrated flux maps and vertical atmospheric profiles from spatially resolved observations allowed us to study the circulation of Titan's middle atmosphere during northern spring. We observed increased temperatures in Titan's stratopause at high northern latitudes and a persistent northern enrichment of HCN, C3H4, and CH3CN during this epoch; however, increased abundances of all molecules in the southern mesosphere, particularly HCN, and spatial maps of HC3N also show evidence for subsidence at the south pole. We validated these measurements through direct comparisons with contemporaneous Cassini data, previous ground-based observations, and photochemical model results. While no new trace species were detected, ALMA has proven to be a highly capable asset to enhance the data from the final few years of the Cassini mission, and for the continued study of Titan's atmospheric dynamics, composition, and chemistry into Titan's northern summer.


text:
Nov 26, 2013 | ISBN 9780345511515
"Rapid-fire adventure [that] adds yet another dimension of enjoyment to a rousing galactic romp."—Library Journal
"Highly entertaining . . . excellent Star Wars . . . There are many twists and turns [and] Zahn manages to find ways to twist them one step further than you'd expect."—Examiner.com
"[Scoundrels] brings freshness to the franchise."—USA Today


text:
701 Ocean Street, Room 520
Santa Cruz, CA 95060
Information: (831) 454-2323
Fax: (831) 454-2327
The Clerk of the Board is a division of the County Administration Office. The Clerk of the Board's principal responsibilities are to maintain and publish the record of the proceedings of the Board of Supervisors and assist in the preparation of the agenda for the Board's weekly public meetings, including placing the agenda and minutes on the Internet. The office is also Clerk to the Assessment Appeals Board, the Nuisance Abatement Appeals Commission, and the Environmental Health Appeals Commission. The Clerk of the Board maintains the County's on-line version of the County Code and updates the list of appointments and notices of vacancies for County Commissions and committees on the Internet.
Please note: a non-refundable processing fee of $30 must accompany all Applications for Changed Assessment. Click on the links below for the application and filing information:
If the above link does not work, please go to the App Store on your device and search for "My Santa Cruz County" to download the latest version.


text:
Reid spot on for Shots
Craig Reid's second-half penalty proved the difference as Aldershot gained a valuable 1-0 away win to leapfrog 10-man Barnet at the bottom of League Two.
In the absence of the sidelined player/managerEdgar Davids, Barnet had their chances in the first half but Reid's spot-kick soon after the interval, followed almost immediately by a straight red card for Jon Nurse, put paid to their chances.
Barnet started sluggishly, but it they forced the game's first save as Jamie Young reacted smartly to palm Ricky Holmes' drive round the post.
And with 30 minutes played the Bees should have taken the lead but, after Nurse saw his strike clawed away, Barry Fuller screwed the rebound wide of the near post.
At the other end, Reid twice went close in a matter of seconds but after the break he made no mistake, slamming home from the spot after Sonny Bradley's drive was handled in the area.
Nurse then got his marching orders for a dangerous challenge on Dani Lopez but the hosts nearly snatched an equaliser when Jake Hyde was ruled narrowly offside as he bundled in Holmes' near-post centre.
Source: PA
Source: PA


text:
- You may wish to consult
Series 4for other, similarly-named pages.
The term Series 4 of Doctor Who was one that had several different meanings, making a precise and universally-agreed definition difficult. It was nevertheless generally considered the "2008 series". It ran between 16 November 2007 and 1 January 2010. It mainly starred David Tennant as the Tenth Doctor and Catherine Tate as Donna Noble. The regular series was preceded by Voyage of the Damned, opened with Partners in Crime and concluded with Journey's End, before being followed by a number of specials ending with The End of Time.
Overview Edit
It consisted of eighteen stories and twenty-one episodes. From a production standpoint, the series began with Voyage of the Damned, continued to Time Crash, and concluded with The End of Time. This view was amply supported by Russell T Davies in his memoir, The Writer's Tale, and by production code and production block numbering, and is how this wiki presents the series and information relating to it.
Subsequent home video releases suggested — by their very contents — that series could be considered as having begun with Time Crash and having ended with Journey's End. Additionally, the BBC's official Doctor Who website blurred the marketing message by treating Christmas specials as independent of any series. Whatever one's perspective, though, there was universal agreement that the regular, weekly portion of series 4 began on 5 April 2008 with the broadcast of Partners in Crime and continued through to the 5 July 2008 broadcast of Journey's End. It was the second series of BBC Wales to have received a BAFTA nomination in the "Best Drama Series" category, although it did not win, as series 1 had done. The four principal producers — Phil Collinson, Russell T Davies, Julie Gardner and Susie Liggat — were all named nominees.
The final two (or three in the case of Billie Piper) episodes saw the return of Freema Agyeman (Martha Jones), John Barrowman (Jack Harkness), Elisabeth Sladen (Sarah Jane Smith) and Billie Piper (Rose Tyler) to the main cast, accompanied by Noel Clarke (Mickey Smith), Camille Coduri (Jackie Tyler), Penelope Wilton (Harriet Jones), Adjoa Andoh (Francine Jones), Eve Myles (Gwen Cooper), and Gareth David-Lloyd (Ianto Jones). Kylie Minogue starred as Astrid Peth in the Christmas special Voyage of the Damned. Peter Davison returned to the role of the Fifth Doctor for the Children in Need special Time Crash. It also featured the return of Davros, the creator of the Daleks, not seen on television since 1988's Remembrance of the Daleks. Davros was recast and was played by Julian Bleach.
Although the majority of the series was broadcast in 2008, all stories from Partners in Crime through to The End of Time were actually set in the following year, meaning there was almost a year's gap between Voyage of the Damned and its successor.
Broadcast milestones Edit
Series 4 featured several milestones. It is the 30th broadcast season of Doctor Who, and features the 750th broadcast episode; The Stolen Earth, and the 50th new series episode; Silence in the Library. The finale episodes The Stolen Earth and Journey's End also took the revived series to new heights of popularity, scoring the highest viewership ratings since the Tom Baker era and according to the media both episodes scored Appreciation Index ratings unprecedented for an ongoing scripted drama series.
In terms of production, the season marked the first production of a "Companion-lite" episode, Midnight (as opposed to the usual "Doctor-lite" episodes, ie. Love & Monsters and Blink), although a Doctor-lite episode, Turn Left was also produced. This was necessitated by the need to film several episodes at the same time, including an unprecedented 15th episode, The Next Doctor, which would air as the 2008 Christmas special.
Series 4 marked the last full season to be produced by Russell T Davies, Phil Collinson and Julie Gardner. Collinson left following Journey's End, and Davies and Gardner announced they would depart following production of a series of specials planned for 2009 in lieu of a regular season. When the show resumed weekly broadcast in 2010, Steven Moffat became the head writer and show-runner. It also marked the last full season featuring David Tennant as the Tenth Doctor as, in October 2008, he announced his intention to leave the role following the production of the 2009 specials; in January 2009 Matt Smith was announced as his successor, with Karen Gillan appearing as his companion Amy Pond.
From a retroactive standpoint, the series was also noteable for containing two instances that forshadowed the Doctor's eventual twelfth incarnation. The Fires of Pompeii saw the Doctor saving Lobus Caecilius (portrayed by eventual Twelfth Doctor actor, Peter Capaldi) and his family from being killed in the distruction of Pompeii at Donna's urging, which would lead the Doctor to take on Caecilius' appearance in his twelfth incarnation, as a subconcious reminder to himself to always save people - no matter how impossible or "wrong" it might seem, as revealed in Series 9's The Girl Who Died. Furthermore, in Silence in the Library, River Song explains to the Doctor that a "future version" of him gave her her sonic screwdriver during their last night together at Darillium, this "future Doctor" would, indeed, turn out to be the Twelfth Doctor, and the events described would take place in The Husbands of River Song, 7 years later.
Awards Edit
- Winner, "Favourite Foreign Drama of the Year", 2009 Seoul International Drama Awards (shared with CSI: Crime Scene Investigation)
Cast Edit
- The Doctor - David Tennant
- Donna Noble - Catherine Tate
- Martha Jones - Freema Agyeman
- Rose Tyler - Billie Piper
- Captain Jack Harkness - John Barrowman
- Sarah Jane Smith - Elisabeth Sladen
- The Master - John Simm
- Wilfred Mott - Bernard Cribbins
- Astrid Peth - Kylie Minogue
- Jackson Lake - David Morrissey
- Christina de Souza - Michelle Ryan
- Adelaide Brooke - Lindsay Duncan, Rachel Fewell
- and introducing Matt Smith as the Doctor
Recurring Edit
- Midshipman Alonso Frame - Russell Tovey
- Newsreader - Jason Mohammad
- Sylvia Noble - Jacqueline King
- Ood Sigma - Paul Kasey, Silas Carson
- Voice of the Ood - Silas Carson
- Harris - Clive Standen
- Trinity Wells - Lachele Carl
- Professor River Song - Alex Kingston
- Capt Erisa Magambo - Noma Dumezweni
- Oliver Morgenstern - Ben Righton
- Harriet Jones - Penelope Wilton
- Luke Smith - Tommy Knight
- Francine Jones - Adjoa Andoh
- Judoon - Paul Kasey and voiced by Nicholas Briggs
- Daleks - operated by Barnaby Edwards, Nick Pegg, David Hankinson, Anthony Spargo, and voiced by Nicholas Briggs
- Mickey Smith - Noel Clarke
- Jackie Tyler - Camille Coduri
- K9 - John Leeson
- Cyber-Leader - Paul Kasey
- Cybermen - Nicholas Briggs
- Lucy Saxon - Alexandra Moen
- Miss Trefusis - Sylvia Seymour
- Nerys - Krystal Archer
Guest Edit
- Fifth Doctor - Peter Davison
- Max Capricorn - George Costigan
- Cofelia - Sarah Lancashire
- Soothsayer - Karen Gillan
- Lobus Caecilius - Peter Capaldi
- Klineman Halpen - Tim McInnerny
- Luke Rattigan - Ryan Sampson
- General Staal - Christopher Ryan
- Commander Skorr - Dan Starkey
- Jenny - Georgia Moffett
- Cobb - Nigel Terry
- Agatha Christie - Fenella Woolgar
- Arnold Golightly - Tom Goodman-Hill
- Colonel Hugh Curbishley - Christopher Benjamin
- Doctor Moon - Colin Salmon
- Charlotte Lux - Eve Newton
- Lee McAvoy - Jason Pitt
- Sky Silvestry - Lesley Sharp
- Professor Winfold Hobbes - David Troughton
- Fortune teller - Chipo Chung
- Ianto Jones - Gareth David-Lloyd
- Gwen Cooper - Eve Myles
- Davros - Julian Bleach
- Shadow Architect - Kelly Hunter
- Mr Smith - Alexander Armstrong
- Mercy Hartigan - Dervla Kirwan
- Carmen - Ellen Thomas
- Andy Stone - Alan Ruscoe
- Rassilon - Timothy Dalton
- The Woman - Claire Bloom
- Verity Newman - Jessica Hynes
Television stories Edit
Story arcs Edit
As with the preceding three seasons, Series 4 incorporated several ongoing story arcs which were resolved in the finale episodes. In Series 4 these threads included: Donna Noble's evolution, Rose Tyler's attempts to return to her original world and the Doctor, the disappearance of bees from planet Earth, recurring references to planets and moons disappearing, and the coming of "the Darkness", mainly represented by the attempts of the Daleks and Davros to wipe out all reality. Additionally, most episodes include a running gag: namely, that people keep mistaking the Doctor and Donna for a couple.
Mini-episode Edit
|Time Crash
|Steven Moffat
|Graeme Harper
|Return of the Fifth Doctor
Christmas special Edit
|Voyage of the Damned
|Russell T Davies
|James Strong
|First appearance of Wilfred Mott. Dedicated to Verity Lambert.
Regular series Edit
|Partners in Crime
|Russell T Davies
|James Strong
|Return of Donna Noble, Sylvia Noble and Wilfred Mott. First appearance of Rose Tyler since Doomsday. The character Geoff Noble is implied to have died, due to the sudden passing of Howard Attfield mid-production. All scenes with Attfield were re-shot to feature Bernard Cribbins as Donna's grandfather in place of her father.
|The Fires of Pompeii
|James Moran
|Colin Teague
|Foretelling of the events in the final three episodes of Series 4; Peter Capaldi and Karen Gillan's first character roles on the series.
|Planet of the Ood
|Keith Temple
|Graeme Harper
|Reappearance of the Ood. First appearance of Ood Sigma. Fortelling of the Tenth Doctor's ultimate fate.
|4 & 5
|The Sontaran Stratagem / The Poison Sky
|Helen Raynor
|Douglas Mackinnon
|Reintroduction of the Sontarans, return of Martha Jones. Second brief cameo of Rose Tyler.
|The Doctor's Daughter
|Stephen Greenhorn
|Alice Troughton
|First and only appearance of Jenny. Martha Jones leaves the TARDIS once again.
|The Unicorn and the Wasp
|Gareth Roberts
|Graeme Harper
|Doctor Who's take on Agatha Christie's disappearance.
|8 & 9
|Silence in the Library / Forest of the Dead
|Steven Moffat
|Euros Lyn
|Introduction of River Song. Subsequent death of River Song, though her soul is digitally preserved in the the Library. Debut of a future sonic screwdriver model with a red setting.
|Russell T Davies
|Alice Troughton
|Companion-lite episode; Catherine Tate's role as Donna Noble is minimal. Third brief cameo of Rose Tyler.
|Turn Left
|Graeme Harper
|Return of the Bad Wolf meme and Rose Tyler. Doctor-lite episode.
|12 & 13
|The Stolen Earth / Journey's End
|Graeme Harper
|Reintroduction of Davros. Return of Martha Jones, Jack Harkness, Sarah Jane Smith, Mickey Smith, and Jackie Tyler. First direct crossover with Torchwood and The Sarah Jane Adventures. Last regular appearances of Donna Noble, Sylvia Noble and Wilfred Mott. Final appearance & death of Harriet Jones. Creation of Meta-Crisis Doctor. The Doctor pairs Rose with his meta-crisis duplicate and leaves them to enjoy life in Pete's World.
Mini-episode Edit
|Music of the Spheres
|Russell T Davies
|Euros Lyn
|Shown during the BBC Proms season
Specials Edit
Sometimes referred to "Series 4b," the "David Tennant Specials" and the "2009 Specials," five special episodes following the regular season were broadcast at Christmas 2008, Easter 2009, November 2009, Christmas 2009 and New Year's Day 2010. These four stories (the last two broadcasts were a single two-part story) were overseen by Russell T Davies and Julie Gardner, but long-term line producer Phil Collinson did not return for them. All starred David Tennant. For these, the Doctor was travelling alone, with each story featuring a one-off companion.
There had been conflicting reports given as to why a year was taken off. Initial media reports suggested this was to allow David Tennant to perform a season of Shakespeare during the time a regular season would have normally entered production.[1] However, these reports were directly contradicted in Russell T Davies' book Doctor Who: The Writer's Tale, which has correspondence from the spring of 2007, months before the gap year plan was announced. Davies indicated the intent was to take the series off for a year, except for a few specials, to let the new production team make its transition. Davies had already informed the BBC that he would not executive-produce a fifth season.
Exactly how to refer to these specials is a matter of some debate. Aside from informal terms such as "2009 Special" or "Gap Year", it is known that Planet of the Dead was considered Episode 15 of Series 4 by the production team, as revealed by David Tennant in his video diary of the episode's read through, and The Writer's Tale - The Final Chapter shows the specials were all numbered 4.X. On the DVD/Blu-ray release of the four specials plus The Next Doctor (in a box set titled The Complete Specials), a bonus feature of deleted scenes was entitled Series 4 Specials Deleted Scenes.
2008-10 Specials Edit
|Number of episodes
|The Next Doctor
|Russell T Davies
|Andy Goddard
|Return of the Cybermen.
|Planet of the Dead
|Russell T Davies & Gareth Roberts
|James Strong
|Introduction of Lady Christina de Souza. Reappearance of U.N.I.T.. Revealing of the "he will knock four times" prophecy.
|The Waters of Mars
|Russell T Davies & Phil Ford
|Graeme Harper
|Dedicated to Barry Letts. Reappearance of Ood Sigma, seen in a vision.
|The End of Time
|Russell T Davies
|Euros Lyn
|Last regular appearance of the Tenth Doctor and first appearance of the Eleventh. Reappearance of the Master, Rassilon, the High Council of Time Lords, Ood Sigma and many of the Tenth Doctor's companions. Final appearance of Elisabeth Sladen as Sarah Jane Smith on Doctor Who proper, continuing to appear in her spin-off until passing away in 2011.
Animated special Edit
|Phil Ford
|Gary Russell
|First Doctor Who story produced entirely in 3-D computer animation.
Dreamland was a serialised animated story initially made available on the BBC's Red Button service before being televised in December 2009. Its writer has stated it takes place after the events of The Waters of Mars but it is not officially considered one of the Specials.
Other productions Edit
- David Tennant appeared as the Doctor in a two-part episode of The Sarah Jane Adventures entitled The Wedding of Sarah Jane Smith. This is not considered one of the 2009 Specials.
- A 3-minute Doctor Who skit featuring John Barrowman with a cameo by David Tennant out of character aired as part of the Tonight's the Night talent series.
- In December 2009, Tennant appeared as the Doctor in a series of brief Christmas idents produced for BBC One and BBC America.
Adaptations and merchandising Edit
Home media Edit
DVD and Bluray Edit
All episodes of Series 4 were released between 2008 and 2010. It was also included in the Doctor Who: Complete Series 1-7 Bluray boxset, released on November 5, 2013 in the US and November 4th, 2013 in the UK, split into the "Complete Fourth Series" and "The Complete Specials" sets respectively.
Series 4 was released on Blu-ray steelbook on 27 May 2019. The artwork created by Sophie Cowdrey.[2]
Of note, the inclusion of "The Next Doctor" on the Complete Specials Bluray set makes this story the first standard-definition Doctor Who story to be upscaled for high-definition.
| Number and duration
of episodes
|R2 release date
|R4 release date
|R1 release date
| Doctor Who: Voyage of the Damned
Time Crash
Voyage of the Damned
| 1 x 8 min.
1 x 72 min.
|10 March 2008
|20 June 2008
| Doctor Who: Series 4, Volume 1
Partners in Crime
The Fires of Pompeii
Planet of the Ood
| 2 x 50 min.
1 × 45 min.
|2 June 2008
|7 August 2008
| Doctor Who: Series 4, Volume 2
The Sontaran Stratagem /
The Poison Sky
The Doctor's Daughter
The Unicorn and the Wasp
|4 × 45 min.
|7 July 2008
|4 September 2008
| Doctor Who: Series 4, Volume 3
Silence in the Library /
Forest of the Dead
|3 × 45 min.
|4 August 2008
|2 October 2008
| Doctor Who: Series 4, Volume 4
Turn Left
The Stolen Earth /
Journey's End
| 1 x 50 min.
1 × 45 min.
1 x 65 min.
|1 September 2008
|6 November 2008
|Doctor Who: The Complete Fourth Series
| 1 x 8 min.
1 x 72 min.
9 x 45 min.
3 x 50 min.
1 x 65 min.
|17 November 2008
|4 December 2008
|18 November 2008
| Doctor Who: The Next Doctor
The Next Doctor
Music of the Spheres
| 1 x 60 min.
1 x 7 min.
|19 January 2009
|5 March 2009
|15 September 2009
| Doctor Who: Planet of the Dead
Planet of the Dead
|1 x 60 min.
|29 June 2009
|2 July 2009
|28 July 2009
| Doctor Who: 2009 Winter Specials
The Waters of Mars
The End of Time
| 2 x 60 min.
1 x 75 min.
|11 January 2010
| Doctor Who: The Waters of Mars
The Waters of Mars
|1 x 60 min.
|4 February 2010
|2 February 2010
| Doctor Who: The End of Time
The End of Time
| 1 x 60 min.
1 x 75 min.
|4 March 2010
|2 February 2010
|Doctor Who: The Complete Specials
| 1 x 8 min.
4 x 60 min
1 x 75 min.
|11 January 2010
|1 July 2010
|2 February 2010
Soundtrack Edit
- Main article: Doctor Who - Series 4 - The Specials (soundtrack)
The official soundtrack of the specials was released on 4 October, 2010.
Stories set during this season Edit
Novels Edit
- Ghosts of India
- Shining Darkness
- The Doctor Trap
- Beautiful Chaos
- The Eyeless
- Judgement of the Judoon
- The Slitheen Excursion
- Prisoner of the Daleks
- The Taking of Chelsea 426
- The Krillitane Storm
- Autonomy
- Code of the Krillitanes
- In the Blood
BBC Audio audiobooks Edit
- Pest Control
- The Forever Trap
- The Nemonite Invasion
- The Rising Night
- The Day of the Troll
- The Last Voyage
- Dead Air
Big Finish full-cast audio stories Edit
Promotional trailers Edit
As with previous seasons, trailers were created to promote the season, though this year they were shown in theatres as well as on television in the UK. Of particular note is the second trailer that was released, which utilised unique, specially shot footage of Donna sitting by a camp- or bonfire talking to either an unseen individual or the audience about the Doctor "coming back to save us" and "I'll be ready" interspersed with images of Sontarans, Ood and Daleks. There is no scene like this in any of the episodes; the meaning of "he'll come back to save us" is unknown as there is no circumstance within Series 4 in which Donna would be in such a position to make such a remark.
The other major trailers included another Donna-centric trailer utilising a scene between Donna and Wilfred Mott from Partners in Crime, and a mid-season trailer focusing in part on the return of Rose Tyler in Turn Left.
External links Edit
Footnotes Edit


text:
When Team USA's men's hockey roster was announced at the Winter Classic on January 1st, there were quite a few surprises in store for hockey fans.
For one, the team was missing one of the most dynamic offensive forwards that the US has to offer, as Bobby Ryan was left off the list. The US also elected not to bring Phoenix Coyotes defenseman Keith Yandle to Sochi, despite his reputation as a puck-moving offensive facilitator.
Finally, the US also elected to leave talented youngster Brandon Saad off the roster, despite the potent offensive game and blossoming defensive prowess that he has shown with the Chicago Blackhawks this season.
Instead, David Poile and company went for a team that was more predicated on physical, defensive-minded hockey, and the results of those selections were apparent on Monday as the team got together for its first practice in Russia.
Here were the lines that Team USA ran with in their first practice under head coach Dan Bylsma:
Dustin Brown – Ryan Kesler – Patrick Kane
Zach Parise – David Backes – TJ Oshie
James van Riemsdyk – Joe Pavelski – Phil Kessel
Max Paciroetty – Paul Stastny – Ryan Callahan
Spares: Derek Stepan – Blake Wheeler
There are a couple of things that stand out immediately about these lines. The first is that the Pavelski grouping with Kessel and van Riemsdyk might be the strongest out of the bunch. Pavelski is a gifted two-way forward with an aggressive defensive attitude and a lightning quick wrist shot, and pairing him with a speedster like van Riemsdyk and a sniper like Kessel is going to be a match-up nightmare for a lot of teams in Sochi.
Outside of that however, the US lines really aren't that impressive. Separating Parise and Kane doesn't seem like that great of an idea, and putting Kane with guys like Brown, who spends more time delivering hits than passes to teammates, and Kesler, who takes a ton of shots and isn't much of a passer either, doesn't make much sense.
As for Parise, he is slightly better off than Kane since he does have Oshie to help spread the ice around a bit, but it'll be interesting to see whether or not he can develop much chemistry with Backes, who is another one of the US' top physical options.
It would seem to make more sense to set up the lines like this:
Zach Parise – David Backes – Patrick Kane
James van Riemsdyk – Joe Pavelski – Phil Kessel
Max Paciroetty – Ryan Kesler – TJ Oshie
Dustin Brown – Paul Stastny – Ryan Callahan
If the US were to organize their lines like that, it would come with several benefits. Kane is one of the most gifted passers in the NHL, and being able to feed the puck to Backes and Parise would be a very nice option for Bylsma to use. In addition, moving Pacioretty up to a higher line with Kesler and Oshie would provide a great mix of grit and offense, and would maintain the scoring balance that Bylsma is seeking by keeping Kane and Parise separate.
Finally, Brown and Callahan are both good defenders, and having that kind of shutdown line to send out against some of the tough lines that squads like Canada and Russia will field would be a big boost too.
At any rate, no one's really sure of what lines will look like as pool play wears on. The only thing for sure is that when the US takes to the ice on Thursday for their opening game against Slovakia (6:30am Central time on NBCSN), there will be plenty of eyes watching for how their grit-inspired offense will produce on the biggest stage in the world.


text:
Interstate 29 to Close Due to Big Sioux River Crest Near Sioux City
Flood preparations are coming into place for a 100-year flooding event on the Big Sioux River.
Governor Dennis Daugaard and Union County officials were in Elk Point Wednesday to reveal what measures will be taken.
One component includes shutting down Interstate 29 at Exit 4 on Thursday. "The Department of Transportation, National Guard and local officials will be plugging the underpass for the four lanes of interstate (using) sandbagging protective measures so that the interchange will become part of the levee."
The downside of that effort will be excess water flowing toward the community of McCook Lake while the existing levee will protect North Sioux City and Dakota Dunes. No evacuation order has been given, but residents may choose to leave of their own volition.
A detour will be set up using Exit 26 on the north through Vermillion across the Newcastle Bridge into Nebraska then back east until reaching Sioux City.


text:
Heretical Nonsense has a rating of 5.0 stars based on 32 reviews.
This stamp will let the reader know the theological dangers ahead in any book! Great as a gift or to mark all the books in your personal collection.
The stamp reads: Heretical Nonsense For Research Purposes Only
Stamp Area: L 1.5" H 0.375 (3/8)"
The shipping rates available to you for any given product are based on weight as governed by USPS:
First Class: 15oz or less
Priority: 1lb or more
Priority and First class come with with tracking depending on what you order.
If you order using Priority service, your order will come with $100 insurance through USPS should it get lost or damaged during shipment. We recommend on more expensive products for customer to select this option to safeguard thier investment.
As we are a small business, and currently it is just one man processing all the orders... please know we are a "create on demand" business. All orders are uniquely created after the order is placed, there is no pre-made inventory of products kept on hand which is why processing times vary from 1-14 business days.
Please understand, I must balance the requirements of church, family, seminary, a full time job and running Reformed Sage store and social media accounts.
Typically we get all orders shipped within 3-7 days.
Shipping speeds after fulfillment depending on your choice of mail service, this chart provides a rough estimation of shipping transit times:
2-8 business days
5-10business days without tracking
10-20business days without tracking
International from USA
10-20business days without tracking
International from Europe
5-10business days within Europe
10-20business days worldwide
Below are the locations we currently ship to:
USA Domestic: All 50 states
Europe: Albania, Andorra, Austria, Belarus, Belgium, Bosnia and Herzegovina, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Faroe Islands, Finland, France, Germany, Gibraltar, Greece, Guernsey, Hungary, Iceland, Ireland, Italy, Jersey, Latvia, Liechtenstein, Lithuania, Luxembourg, Macedonia, Malta, Moldova, Monaco, Montenegro, Netherlands, Norway, Poland, Portugal, Romania, Russian Federation, San Marino, Serbia, Slovakia, Slovenia, Spain, Svalbard and Jan Mayen, Sweden, Switzerland, Ukraine, United Kingdom, Vatican City
(Certain items) Worldwide:
Armenia, Azerbaijan, Australia, Bahrain, Canada, China, Georgia, Hong Kong, Indonesia, India, Israel, Japan, Jordan, Kazakhstan, Korea, Kuwait, Kyrgyzstan, Lebanon, Macao, Malaysia, Mexico, Mongolia, Oman, Pakistan, Philippines, Saudi Arabia, Singapore, Sri Lanka, Taiwan, Tajikistan, Thailand, Turkey, Turkmenistan, United Arab Emirates, Uzbekistan, Vietnam, Yemen, Qatar, Anguilla, Antigua and Barbuda, Argentina, Brazil, Chile, Colombia, Dominica, Greenland, Jamaica, Paraguay, Peru, Suriname, Uruguay, Venezuela, Benin, Botswana, Cameroon, Cape Verde, Congo, Egypt, Eritrea, Ghana, Kenya, Mali, Mauritius, Morocco, Mozambique, Namibia, Nigeria, Seychelles, South Africa, Tanzania, Tunisia
Customs: If your country charges customs duties for imported orders from the US, we are not responsible and we will not pay the cost that is charged to you. We recommend you check with your local customs officials to determine if an order placed with us will incur customs duties before you place an order with us so you can factor that into your decision to place an order.


text:
|Mopatop's Shop
|Written by
|Sally-Ann Lever
|Simon Spencer
Mopatop opens the episode by offering a slurpy dog, a snorty hog in a squelchy bog, or a big bag of silent fog.
Princess Lulabelle is tired of living in a great big palace all by herself. She's hoping to find a handsome Prince Charming to love. Moosey Mouse wishes that he was a handsome prince, and tries to offer himself to Lulabelle. Puppyduck suggests that the Princess try kissing a frog -- but there aren't any frogs in stock.
Seeing the slurpy dog, she decides to try kissing him instead -- "dog" sounds like "frog". It doesn't work with the slurpy dog, the snorty hog, or the silent fog. Moosey tries to get in the way of her kisses, but the princess rejects him -- "mouse" doesn't even sound like "frog"!
A frog comes into the shop looking for a fly sandwich, and Lulabelle springs to his side. She kisses him -- and he turns into a handsome frog prince! Actually, he looks exactly the same, but now he's wearing a crown and a royal robe. Lulabelle is thrilled with her prince, and the frog is happy to return to the castle with her.
- Princess Lulabelle is recycled from Shakey Sanchez, from The Muppet Show.
- The frog puppet is recycled from Leapovitch the Frog, from The Animal Show.
- Mak Wilson: Mopatop
- Nigel Plaskitt: Moosey Mouse, Frog
- Victoria Willing: Puppyduck
- Brian Herring: Dog
- Susan Beattie: Hog
- Louise Gold: Princess Lulabelle
|Previous episode:
|Next episode:
|Where's The Blue Paint?
|Light Up My Life


text:
City of Manhattan BeachHome Menu
City Calendar - Month View
CANCELLED - Senior Advisory Committee (SAC) Meeting
- Date: 08/13/2019 1:00 PM - 3:00 PM
- Location: Joslyn Community Center
1601 North Valley Drive
Manhattan Beach, California 90266
|Follow us on
The nine-member Senior Advisory Committee works in conjunction with the Parks and Recreation Department's Older Adults Program to make recommendations regarding the delivery of senior programs, activities and policies. Meetings are held on the second Tuesday of each month at 1:00 PM at the Joslyn Community Center. For more information, feel free to contact the Senior Advisory Committee Liaison at (310) 802-5407.


text:
Staff at China's People's Daily aren't the only people who've mistaken an Onion punchline for the real thing. City Pages alerted readers to the Facebook page of a Minnesota radio host who confused a doctored image from a satirical Onion story about Barack Obama's inauguration for reality.
The Onion published its story, "Obama Begins Inauguration Festivities With Ceremonial Drone Flyover," on Jan. 21, along with a photoshopped image of drones flying over the National Mall. Andy Driscoll, host of KFAI's "TruthToTell" show in St. Paul, shared the photo on his Facebook page Tuesday and captioned it "Ugly."
"1984 is no longer fiction," wrote one commenter.
"Sad, but true - and been increasingly intrusive since 1984," Driscoll replied, later adding, "Never seen three in a cluster formation like that, but they're obviously scanning the crowd for potential trouble - all monitored by a site in Las Vegas."
After one commenter linked to The Onion's original story, writing "Luckily, this version of 1984 is still a ways off," Driscoll responded:
There's a reason the Onion can make satire out of this photo, which was obviously doctored to give us a laugh (ceremonial drone flyover, indeed! HA!), is that satire is a stretch of the truth. Drone use for domestic surveillance and targeting killing abroad is a very real - and frightening - deployment of US firepower. So - the photo is satire - but why wouldn't a surveillance drone have flown over the crowd of a half-million attendees at the inaugural? A very effective use of the technology, perhaps. So. Have a laugh about formation flyovers of drones, but keep in mind that truth is the basis for all satire.
The burden of proof for factual and researched content falls to everyone - and this dialogue is a perfect example of how important knowing the facts should be - in all quarters. Thanks to Art Hughes for finding the photo's true source - the Photoshopped "flyover". But, we do, in fact, live in a country where easily 50% or more of everything we're told is believed, often because it sounds "official". There may be no completely "reliable" sources for our news. But, it's often what we're NOT told that determines where the truth lies.
President Obama has been criticized for his persistent use of unmanned aerial vehicles, also known as drones, in the war on terror.
Driscoll's KFAI profile describes him as a "veteran broadcaster and public affairs specialist" who has run for local office three times.
[Via Yahoo!]


text:
(Pocket-lint) - Back in June, Pocket-lint hop-skipped over the Atlantic to take a butchers at HP's latest web-based print solutions, the ePrint range, that were unveiled at Internet Week in New York. At the time we were mighty impressed with what we saw - especially the unique (at the time) email to print option that offered home printing from anywhere, anytime and from anything (that could send an email, at least).
But what of our opinion now that we've been able to spend some quality time with one of the devices - the HP Photosmart Wireless e-All-in-One printer? Does it measure up to our early lofty impression?
Let's first admit the fact that printers aren't that exciting. There, we've said it. And whilst the HP Photosmart Wireless e-All-in-One printer is no exception to this rule, it does take away a lot of the boring aspects of printing such as installing software and drivers, and hooking it up to your PC.
Sure, you'll still need to install a load of drivers and software if you really want to get the most out of the printer, such as HP Photo Creations, which lets you create personalised albums, greeting cards, invites and the like, and HP Smart Web printing which makes it easier to print exactly what you want from a webpage, but if you're looking for a literal plug and play printer then this could be the one for you.
You see, once you've set-up your printer for the first time (which is very straightforward with the colour control panel screen, called the TouchSmart frame) you'll be presented with a print-out and a unique email address for your printer. Simply register your own email address, and any others that you may want to print from, in the web-based ePrint Center and you're away. From thereon in if you want something printed simply email it to the printer.
Documents, spreadsheets and presentations can be emailed as attachments and photos can even be sent straight from your iPad, or smartphone.
The ePrint Center is also home to the HP App Store where you can get print-based apps for the printer. You can sign in to the ePrint Center using your Facebook, Google, Yahoo or AOL ID as well, meaning you don't have the chore of having to set-up yet another account. There's a load of apps available, ranging from the likes of Bing Maps to Martha Stewart's food recipes, although this particular printer (based in the UK at least) could only receive a few - the most notable being a Yahoo-based one that could print the day's news and one called Tabbloid which gathered material from selected RSS feeds and printed off a personalised newspaper.
Back to the basics of the Photosmart, and it also offers a decent scanner (1200 x 2400 dpi, with 48-bit colour) and all of the other bells and whistles that you'd expect from a modern HP printer, such as an integrated card-reader (with direct printing), borderless printing, plenty of eco-options and individual inks - so you only need to replace the one that you've used up.
There are also a few nice features thrown in such as passport photo printing directly from the machine and the ability to scan an image and save it directly to your PC. You can even browse through the images on its 6cm screen and save the ones you like to your PC as well.
Print quality was good, very good in fact, if slightly dark for photo prints onto photo paper. The printer is fairly noisy, as most are, but it seems to chuck out prints fairly quickly so the noise wasn't too much of an issue - the official blurb states that it can print 32 pages per minute of black and white, or 30 pages of colour (text), and this wasn't too far off from what we experienced.
If there's a criticism of this printer, and it is a big if, it is that we ran into a bit of difficulty with the instant photo printing, onto 10 x 15cm photo paper, using the email route. If a photo was sent from an iPad or iPhone, it seemed to align the picture to the top right of the paper, rather than using it all. Printing onto A4 via this method produced no problems at all though, and if you were serious about getting some good pictures printed then you'd be much better off using the supplied software, or by using the options on the TouchSmart frame.
For less than £100 (or even less than £80 at selected retailers) the HP Photosmart Wireless e-All-in-One really is the perfect solution for anyone that wants to take the hassle out of printing. We know that printing isn't the most riveting thing in the world, but it's a necessary evil and this device definitely makes it much easier.
It's multifunctional too, with scanning, copying and saving options, and you can even print without turning your PC on, using the memory card reader.
Plus, with the email to print feature, you don't even have to worry about leaving the printer turned on. Anything that you email to the printer when it isn't switched on, will simply be stored on the email servers and printed once you fire it up.
There are definitely better printers out there in terms of quality, especially when it comes to printing your photos, but if you're serious about photo printing you should really be buying a dedicated photo printer. And there are definitely similar spec'd printers out there for less money.
But, for the sake of an extra £20-30 or so, the HP Photosmart Wireless e-All-in-One printer brings with it a wealth of features, including the killer email one, that makes it stand out.