[rkward-cvs] [rkward] packages/rkwarddev: rkwarddev: began to replace the static i18n stuff with the method to be introduced with RKWard 0.6.3. this breaks compatibility with rkwarddev 0.06-4, but it wasn't ever really used except for a proof of concept anyway.

m.eik michalke meik.michalke at uni-duesseldorf.de
Sun Nov 23 22:32:21 UTC 2014


Git commit facf71e26ac90198adc6edaed54bea0b24327ecc by m.eik michalke.
Committed on 23/11/2014 at 22:24.
Pushed by meikm into branch 'master'.

rkwarddev: began to replace the static i18n stuff with the method to be introduced with RKWard 0.6.3. this breaks compatibility with rkwarddev 0.06-4, but it wasn't ever really used except for a proof of concept anyway.

this commit brings the "i18n" argument to (hopefully) every function where it could be used. it also accepts a simple character string, which will be taken as context info.

there's a new function rk.i18n.comment() and a rewrite of i18n(), which is now a convenient all-in-one wrapper for the JS functions i18n(), i18nc(), i18np() and i18ncp().

M  +6    -1    packages/rkwarddev/ChangeLog
M  +2    -1    packages/rkwarddev/DESCRIPTION
M  +1    -0    packages/rkwarddev/NAMESPACE
M  +72   -34   packages/rkwarddev/R/i18n.R
M  +4    -0    packages/rkwarddev/R/id.R
M  +16   -9    packages/rkwarddev/R/rk-internal.R
M  +3    -3    packages/rkwarddev/R/rk.XML.attribute.R
M  +8    -1    packages/rkwarddev/R/rk.XML.browser.R
M  +2    -1    packages/rkwarddev/R/rk.XML.cbox.R
M  +8    -1    packages/rkwarddev/R/rk.XML.component.R
M  +8    -1    packages/rkwarddev/R/rk.XML.dialog.R
M  +14   -5    packages/rkwarddev/R/rk.XML.dropdown.R
M  +8    -1    packages/rkwarddev/R/rk.XML.embed.R
M  +8    -1    packages/rkwarddev/R/rk.XML.frame.R
M  +9    -1    packages/rkwarddev/R/rk.XML.input.R
M  +8    -1    packages/rkwarddev/R/rk.XML.matrix.R
M  +8    -1    packages/rkwarddev/R/rk.XML.menu.R
M  +8    -1    packages/rkwarddev/R/rk.XML.option.R
M  +8    -1    packages/rkwarddev/R/rk.XML.optioncolumn.R
M  +8    -1    packages/rkwarddev/R/rk.XML.plugin.R
M  +8    -1    packages/rkwarddev/R/rk.XML.preview.R
M  +16   -7    packages/rkwarddev/R/rk.XML.radio.R
M  +8    -1    packages/rkwarddev/R/rk.XML.saveobj.R
M  +14   -5    packages/rkwarddev/R/rk.XML.select.R
M  +8    -1    packages/rkwarddev/R/rk.XML.spinbox.R
M  +8    -1    packages/rkwarddev/R/rk.XML.tabbook.R
M  +8    -2    packages/rkwarddev/R/rk.XML.text.R
M  +11   -3    packages/rkwarddev/R/rk.XML.valueselector.R
M  +8    -1    packages/rkwarddev/R/rk.XML.valueslot.R
M  +8    -1    packages/rkwarddev/R/rk.XML.varselector.R
M  +8    -1    packages/rkwarddev/R/rk.XML.varslot.R
M  +8    -1    packages/rkwarddev/R/rk.XML.wizard.R
C  +9    -14   packages/rkwarddev/R/rk.i18n.comment.R [from: packages/rkwarddev/R/rk.rkh.usage.R - 064% similarity]
M  +4    -0    packages/rkwarddev/R/rk.paste.JS.R
M  +8    -1    packages/rkwarddev/R/rk.rkh.caption.R
M  +10   -2    packages/rkwarddev/R/rk.rkh.link.R
M  +8    -2    packages/rkwarddev/R/rk.rkh.related.R
M  +8    -1    packages/rkwarddev/R/rk.rkh.section.R
M  +8    -1    packages/rkwarddev/R/rk.rkh.setting.R
M  +8    -2    packages/rkwarddev/R/rk.rkh.summary.R
M  +8    -2    packages/rkwarddev/R/rk.rkh.technical.R
M  +8    -2    packages/rkwarddev/R/rk.rkh.title.R
M  +8    -2    packages/rkwarddev/R/rk.rkh.usage.R
M  +1    -1    packages/rkwarddev/R/rkwarddev-package.R
M  +6    -0    packages/rkwarddev/R/show-methods.R
M  +11   -1    packages/rkwarddev/inst/NEWS.Rd
M  +-    --    packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
M  +21   -19   packages/rkwarddev/man/i18n.Rd
M  +3    -5    packages/rkwarddev/man/rk.XML.attribute.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.browser.Rd
M  +2    -2    packages/rkwarddev/man/rk.XML.cbox.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.component.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.dialog.Rd
M  +12   -4    packages/rkwarddev/man/rk.XML.dropdown.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.embed.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.frame.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.input.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.matrix.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.menu.Rd
M  +8    -1    packages/rkwarddev/man/rk.XML.option.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.optioncolumn.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.plugin.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.preview.Rd
M  +14   -6    packages/rkwarddev/man/rk.XML.radio.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.saveobj.Rd
M  +12   -4    packages/rkwarddev/man/rk.XML.select.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.spinbox.Rd
M  +8    -1    packages/rkwarddev/man/rk.XML.tabbook.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.text.Rd
M  +10   -3    packages/rkwarddev/man/rk.XML.valueselector.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.valueslot.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.varselector.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.varslot.Rd
M  +7    -1    packages/rkwarddev/man/rk.XML.wizard.Rd
A  +22   -0    packages/rkwarddev/man/rk.i18n.comment.Rd
M  +7    -1    packages/rkwarddev/man/rk.rkh.caption.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.link.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.related.Rd
M  +8    -1    packages/rkwarddev/man/rk.rkh.section.Rd
M  +7    -1    packages/rkwarddev/man/rk.rkh.setting.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.summary.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.technical.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.title.Rd
M  +5    -1    packages/rkwarddev/man/rk.rkh.usage.Rd
M  +1    -1    packages/rkwarddev/man/rkwarddev-package.Rd
M  +3    -0    packages/rkwarddev/man/show-methods.Rd

http://commits.kde.org/rkward/facf71e26ac90198adc6edaed54bea0b24327ecc

diff --git a/packages/rkwarddev/ChangeLog b/packages/rkwarddev/ChangeLog
index 5d28b84..f8c56de 100644
--- a/packages/rkwarddev/ChangeLog
+++ b/packages/rkwarddev/ChangeLog
@@ -1,6 +1,6 @@
 ChangeLog for package rkwarddev
 
-changes in version 0.06-6 (2014-11-19)
+changes in version 0.06-6 (2014-11-23)
 fixed:
   - rk.XML.optionset() does now allow to re-use objects defined in the same
     function call (i.e., refer to optioncolumns in the logic section)
@@ -15,6 +15,11 @@ added:
   - rk.XML.pluginmap() now adds a "po_id" attribute to pluginmaps, necessary for i18n
   - new attribute "i18n" added to several XML functions; it takes a list with the named arguments
     "comment" or "context" to either produce an i18n comment node or an "i18n_context" attribute
+  - new function rk.i18n.comment() to give context for translators
+changed:
+  - function i18n() was changed to be used in JavaScript generation only; this breaks code
+    using the function introduced with 0.06-4, but that was to be shortlived from the start...
+    the i18n features of 0.06-4 will be completely replaced with some proper methods now
 
 changes in version 0.06-5 (2014-10-19)
 fixed:
diff --git a/packages/rkwarddev/DESCRIPTION b/packages/rkwarddev/DESCRIPTION
index a15b658..8af1d6a 100644
--- a/packages/rkwarddev/DESCRIPTION
+++ b/packages/rkwarddev/DESCRIPTION
@@ -15,7 +15,7 @@ URL: http://rkward.sourceforge.net
 Authors at R: c(person(given="Meik", family="Michalke",
     email="meik.michalke at hhu.de", role=c("aut", "cre")))
 Version: 0.06-6
-Date: 2014-11-09
+Date: 2014-11-23
 Collate:
     '00_class_01_rk.JS.arr.R'
     '00_class_02_rk.JS.var.R'
@@ -100,6 +100,7 @@ Collate:
     'rk.get.comp.R'
     'rk.get.language.R'
     'rk.get.rkh.prompter.R'
+    'rk.i18n.comment.R'
     'rk.paste.JS.R'
     'rk.paste.JS.graph.R'
     'rk.plotOptions.R'
diff --git a/packages/rkwarddev/NAMESPACE b/packages/rkwarddev/NAMESPACE
index e7fae0f..cd5668a 100644
--- a/packages/rkwarddev/NAMESPACE
+++ b/packages/rkwarddev/NAMESPACE
@@ -76,6 +76,7 @@ export(rk.comment)
 export(rk.get.comp)
 export(rk.get.language)
 export(rk.get.rkh.prompter)
+export(rk.i18n.comment)
 export(rk.paste.JS)
 export(rk.paste.JS.graph)
 export(rk.plotOptions)
diff --git a/packages/rkwarddev/R/i18n.R b/packages/rkwarddev/R/i18n.R
index d18be24..cde2814 100644
--- a/packages/rkwarddev/R/i18n.R
+++ b/packages/rkwarddev/R/i18n.R
@@ -16,43 +16,81 @@
 # along with rkwarddev.  If not, see <http://www.gnu.org/licenses/>.
 
 
-#' Translate parts of a plugin
+#' Mark JavaScript strings as translatable
 #' 
-#' Takes a list of entries named after abbreviated languages, and returns
-#' either the one matching the language set with \code{\link[rkwarddev:rk.set.language]{rk.set.language}},
-#' or the first entry if no language was set at all or the set language cannot be found in
-#' \code{...}.
+#' Similar to \code{\link[rkwarddev:echo]{echo}}, this function should help you to write
+#' your JavaScript portions in R. Depending on the provided values for its arguments,
+#' will return one of \code{i18n()}, \code{i18nc()}, \code{i18np()}, or \code{i18ncp()}.
 #' 
-#' If used in an \code{rkwarddev} script, this can be used to toggle the generation of plugins
-#' in a certain language.
-#' 
-#' @param ... Comma separated, named elements, see description.
-#' @param lang Character string, the language to return.
+#' @param msgid Character string, the message to be translated (if applicable, its singular form).
+#' @param ... Either character string wich will be pasted unquoted to be used in conjunctions with
+#'    placeholders in msgid, or XiMpLe.node objects of which the JavaScript variable name will be
+#'    used.
+#' @param context Character string, optional context information for this string.
+#' @param plural Character string for plural form of \code{msgid}, must at least include one
+#'    placeholder, and the first one has to represent an integer value in the dialog.
+#' @param newline Character string, can be set to e.g. \code{"\n"} to force a newline after the call.
 #' @export
 #' @examples
-#' rk.set.language("en", c("en_EN", "en_US"))
-#' (var.select <- rk.XML.varselector(label=i18n(en="Select data", de="Wähle Daten")))
-#' 
-#' # now try the same with the alternate language
-#' rk.set.language("de", "de_DE")
-#' (var.select <- rk.XML.varselector(label=i18n(en="Select data", de="Wähle Daten")))
+#' i18n("Select data")
+#' i18n("Comparing a single pair", "n_pairs", plural="Comparing %1 distinct pairs")
+
+i18n <- function(msgid, ..., context=NULL, plural=NULL, newline=""){
+  placeholders <- list(...)
+  pluralQuoted <- placeholderString <- NULL
+  JSfunction <- "i18n"
 
-i18n <- function(..., lang=rk.get.language()){
-  obj <- list(...)
-  # check if any language is set at all
-  if(is.null(lang)){
-    # if not, simply return the first entry as the default
-    warning("i18n() was called, but no language is set, using default values!")
-    return(obj[[1]])
-  } else {
-    # there is a language set, but is there also a translation
-    # given for that language?
-    if(lang %in% names(obj)){
-      return(obj[[lang]])
-    } else {
-      # if not, again fall back to the first entry as default
-      warning(paste("i18n() was called, but no translation into", dQuote(lang), "was found, using default values!"))
-      return(obj[[1]])
-    }
-  }
+  if(!is.null(context)){
+    JSfunction <- paste0(JSfunction, "c")
+    context <- paste0(qp(context), ", ")
+  } else {}
+  if(!is.null(plural)){
+    JSfunction <- paste0(JSfunction, "p")
+    pluralQuoted <- paste0(", ", qp(plural))
+  } else {}
+ 
+  if(length(placeholders) > 0){
+    # do some sanitiy checks here -- is there a placeholder in the strings for each dots value?
+    # grep valid placeholders out of the messages
+    msgSplit <- unique(unlist(strsplit(paste(msgid, plural), "[[:space:]]+")))
+    msgPlHd <- msgSplit[grep("%[[:digit:]]", msgSplit)]
+    # which placeholders are needed?
+    plHdNeeded <- paste0("%", 1:length(placeholders))
+    missingPlHd <- plHdNeeded[!plHdNeeded %in% msgPlHd]
+    missingVals <- msgPlHd[!msgPlHd %in% plHdNeeded]
+    if(length(missingPlHd) > 0){
+      stop(simpleError(paste0("i18n: some placeholders in this string are missing: ", paste0(missingPlHd, collapse=", "), "!")))
+    } else {}
+    if(length(missingVals) > 0){
+      stop(simpleError(paste0("i18n: some placeholders in this string do not have a corresponding value: ", paste0(missingVals, collapse=", "), "!")))
+    } else {}
+    placeholderString <- paste0(", ", paste0(sapply(placeholders, function(ph){id(ph, js=TRUE)}), collapse=", "))
+  } else {}
+  
+  result <- new("rk.JS.i18n",
+    value=paste0(
+      JSfunction, "(",
+      context,
+      qp(msgid),
+      pluralQuoted,
+      placeholderString,
+      ")",
+      newline
+    )
+  )
+
+  return(result)
 }
+
+## internal class rk.JS.i18n
+# this is a quick fix to be able to include i18n() calls inside echo()
+setClass("rk.JS.i18n",
+  representation=representation(
+    value="character",
+    end="character"
+  ),
+  prototype(
+    value=character(),
+    end=";"
+  )
+)
diff --git a/packages/rkwarddev/R/id.R b/packages/rkwarddev/R/id.R
index ba91db9..ce74616 100644
--- a/packages/rkwarddev/R/id.R
+++ b/packages/rkwarddev/R/id.R
@@ -83,6 +83,10 @@ id <- function(..., quote=FALSE, collapse="", js=TRUE){
       } else if(inherits(this.part, "rk.JS.echo")){
         node.id <- slot(this.part, "value")
         return(node.id)
+      } else if(inherits(this.part, "rk.JS.i18n")){
+        # strip all semicolons from i18n calls
+        node.id <- slot(this.part, "value")
+        return(node.id)
       } else {
         if(isTRUE(quote)){
           text.part <- deparse(this.part)
diff --git a/packages/rkwarddev/R/rk-internal.R b/packages/rkwarddev/R/rk-internal.R
index 34e1105..7326eb9 100644
--- a/packages/rkwarddev/R/rk-internal.R
+++ b/packages/rkwarddev/R/rk-internal.R
@@ -1278,7 +1278,7 @@ get.optionIDs <- function(){
 
 ## function rk.check.options()
 # - options: a list, containig either named vectors in the form of
-#       label=c(val=NULL, chk=FALSE)
+#       label=c(val=NULL, chk=FALSE, i18n=NULL)
 #     or an "option" node of class XiMpLe.node
 # - parent: the parent node type, e.g. "radio"
 rk.check.options <- function(options, parent){
@@ -1294,12 +1294,18 @@ rk.check.options <- function(options, parent){
         } else {
           checked <- FALSE
         }
+        if("i18n" %in% names(options[[this.num]])){
+          i18n <- isTRUE(as.logical(options[[this.num]][["i18n"]]))
+        } else {
+          i18n <- NULL
+        }
         return(
           rk.XML.option(
             label=names(options)[[this.num]],
             val=options[[this.num]][["val"]],
             chk=checked,
-            id.name=NULL
+            id.name=NULL,
+            i18n=i18n
           )
         )
       }
@@ -1350,8 +1356,9 @@ rk.register.options <- function(options, parent.node){
 ## function check.i18n()
 # checks for additional i18n info in XiMpLe nodes. returns either an appended or altered list of
 # attributes, or a XiMpLe node with an i18n comment
-# i18n: either a list with possible named elements "context" or "comment", or FALSE;
-#   if the latter, "label" will be renamed to "noi18n_label", "title" to "noi18n_title"
+# i18n: either a list with possible named elements "context" or "comment",
+#   or a charcter string (for wich it is assumed to describe a context),
+#   or FALSE; if the latter, "label" will be renamed to "noi18n_label", "title" to "noi18n_title"
 # attrs: a list of previously defined attributes
 # comment: if TRUE, returns a comment node, else a list of attributes
 check.i18n <- function(i18n=NULL, attrs=list(), comment=FALSE){
@@ -1369,21 +1376,21 @@ check.i18n <- function(i18n=NULL, attrs=list(), comment=FALSE){
       } else {}
       if(isTRUE(comment)){
         if("comment" %in% names(i18n)){
-          result <- XMLNode("!--", paste0("i18n: ", i18n[["comment"]]))
+          result <- rk.i18n.comment(i18n[["comment"]])
         } else {}
       } else {
         if("context" %in% names(i18n)){
           result[["i18n_context"]] <- i18n[["context"]]
         } else{}
       }
+    } else if(is.character(i18n) & length(i18n) == 1){
+      result[["i18n_context"]] <- i18n[[1]]
     } else if(is.logical(i18n) & !isTRUE(i18n)){
       if("label" %in% names(result)){
-        result[["noi18n_label"]] <- result[["label"]]
-        result[["label"]] <- NULL
+        names(result)[names(result) == "label"] <- "noi18n_label"
       } else {}
       if("title" %in% names(result)){
-        result[["noi18n_title"]] <- result[["title"]]
-        result[["title"]] <- NULL
+        names(result)[names(result) == "title"] <- "noi18n_title"
       } else {}
     } else {}
   }
diff --git a/packages/rkwarddev/R/rk.XML.attribute.R b/packages/rkwarddev/R/rk.XML.attribute.R
index 5888ab0..ef67399 100644
--- a/packages/rkwarddev/R/rk.XML.attribute.R
+++ b/packages/rkwarddev/R/rk.XML.attribute.R
@@ -25,9 +25,9 @@
 #'    or an object of class \code{XiMpLe.node} (whose \code{id} will be extracted and used).
 #' @param value Character string, new value for the attribute.
 #' @param label Character string, label associated with the attribute.
-#' @param i18n A named list with the optional element \code{context}, to give some \code{i18n_context}
-#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
-#'    \code{noi18n_label}.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context} information for this node. If set to \code{FALSE},
+#'    the attribute \code{label} will be renamed into \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
diff --git a/packages/rkwarddev/R/rk.XML.browser.R b/packages/rkwarddev/R/rk.XML.browser.R
index 44d46bb..f6b525b 100644
--- a/packages/rkwarddev/R/rk.XML.browser.R
+++ b/packages/rkwarddev/R/rk.XML.browser.R
@@ -33,6 +33,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -42,7 +46,7 @@
 
 
 rk.XML.browser <- function(label, type="file", initial=NULL, urls=FALSE, filter=NULL, required=TRUE, id.name="auto",
-  help=NULL, component=rk.get.comp()){
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   attr.list <- list(label=label)
 
   if(length(type) == 1 & type %in% c("dir", "file", "savefile")){
@@ -69,6 +73,9 @@ rk.XML.browser <- function(label, type="file", initial=NULL, urls=FALSE, filter=
     attr.list[["required"]] <- "false"
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("browser", attrs=attr.list)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.cbox.R b/packages/rkwarddev/R/rk.XML.cbox.R
index 01b1d86..f687e3d 100644
--- a/packages/rkwarddev/R/rk.XML.cbox.R
+++ b/packages/rkwarddev/R/rk.XML.cbox.R
@@ -30,7 +30,8 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
-#' @param i18n A named list with the optional element \code{context}, to give some \code{i18n_context}
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
 #'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
 #'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/R/rk.XML.component.R b/packages/rkwarddev/R/rk.XML.component.R
index 5f56032..8f83893 100644
--- a/packages/rkwarddev/R/rk.XML.component.R
+++ b/packages/rkwarddev/R/rk.XML.component.R
@@ -28,6 +28,10 @@
 #'    just implemented for completeness.
 #' @param dependencies An object of class \code{XiMpLe.node} to define \code{<dependencies>} for this component.
 #'    See \code{\link[XiMpLe:rk.XML.dependencies]{rk.XML.dependencies}} for details. Skipped if \code{NULL}.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -37,7 +41,7 @@
 #' @examples
 #' test.component <- rk.XML.component("My GUI dialog", "plugins/MyGUIdialog.xml")
 
-rk.XML.component <- function(label, file, id.name="auto", type="standard", dependencies=NULL){
+rk.XML.component <- function(label, file, id.name="auto", type="standard", dependencies=NULL, i18n=NULL){
   if(identical(id.name, "auto")){
     # try autogenerating some id
     id.name <- auto.ids(label, prefix=ID.prefix("component"), chars=10)
@@ -65,6 +69,9 @@ rk.XML.component <- function(label, file, id.name="auto", type="standard", depen
     dependencies <- list("")
   }
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("component", attrs=attr.list, .children=dependencies)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.XML.dialog.R b/packages/rkwarddev/R/rk.XML.dialog.R
index 04144fb..1b099cc 100644
--- a/packages/rkwarddev/R/rk.XML.dialog.R
+++ b/packages/rkwarddev/R/rk.XML.dialog.R
@@ -28,6 +28,10 @@
 #' @param recommended Logical, whether the dialog should be the recommended interface (unless the user has configured
 #'    RKWard to default to a specific interface). This attribute currently has no effect, as it is implicitly "true",
 #'    unless the wizard is recommended.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -42,7 +46,7 @@
 #' test.dialog <- rk.XML.dialog(rk.XML.col(test.input, test.cbox1, test.cbox2))
 #' cat(pasteXML(test.dialog))
 
-rk.XML.dialog <- function(..., label=NULL, recommended=FALSE){
+rk.XML.dialog <- function(..., label=NULL, recommended=FALSE, i18n=NULL){
   nodes <- list(...)
 
   # check the node names and allow only valid ones
@@ -58,6 +62,9 @@ rk.XML.dialog <- function(..., label=NULL, recommended=FALSE){
     attr.list[["recommended"]] <- "true"
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("dialog",
       attrs=attr.list,
       .children=child.list(nodes, empty=FALSE)
diff --git a/packages/rkwarddev/R/rk.XML.dropdown.R b/packages/rkwarddev/R/rk.XML.dropdown.R
index 519ea10..6856269 100644
--- a/packages/rkwarddev/R/rk.XML.dropdown.R
+++ b/packages/rkwarddev/R/rk.XML.dropdown.R
@@ -21,8 +21,9 @@
 #' @param label Character string, a text label for this plugin element.
 #' @param options A named list with options to choose from. The names of the list elements will become
 #'    labels of the options, \code{val} defines the value to submit if the option is checked, and
-#'    \code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-#'    \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.
+#'    \code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+#'    for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+#'    are accepted as well.
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"} and a label was provided, an ID will be generated automatically from the label.
 #' @param help Character string or list of character values and XiMpLe nodes, will be used as the \code{text} value for a setting node in the .rkh file.
@@ -31,6 +32,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @export
@@ -40,19 +45,23 @@
 #'   "Second Option"=c(val="val2", chk=TRUE)))
 #' cat(pasteXML(test.dropdown))
 
-rk.XML.dropdown <- function(label, options=list(label=c(val="", chk=FALSE)), id.name="auto", help=NULL, component=rk.get.comp()){
+rk.XML.dropdown <- function(label, options=list(label=c(val="", chk=FALSE, i18n=NULL)), id.name="auto",
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     id <- auto.ids(label, prefix=ID.prefix("dropdown"))
   } else {
     id <- id.name
   }
-  drp.attr.list <- list(id=id, label=label)
+  attr.list <- list(id=id, label=label)
 
   # convert list elements into a list of XiMpLe nodes (if they aren't already)
   dd.options <- rk.check.options(options, parent="dropdown")
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   dropdown <- XMLNode("dropdown",
-      attrs=drp.attr.list,
+      attrs=attr.list,
       .children=child.list(dd.options, empty=FALSE)
     )
 
diff --git a/packages/rkwarddev/R/rk.XML.embed.R b/packages/rkwarddev/R/rk.XML.embed.R
index feb5672..48afeed 100644
--- a/packages/rkwarddev/R/rk.XML.embed.R
+++ b/packages/rkwarddev/R/rk.XML.embed.R
@@ -23,6 +23,10 @@
 #' @param label A character string, text label for the button (only used if \code{button=TRUE}).
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"}, an ID will be generated automatically from the label and component strings.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -30,7 +34,7 @@
 #' test.embed <- rk.XML.embed("someComponent")
 #' cat(pasteXML(test.embed))
 
-rk.XML.embed <- function(component, button=FALSE, label="Options", id.name="auto"){
+rk.XML.embed <- function(component, button=FALSE, label="Options", id.name="auto", i18n=NULL){
   attr.list <- list(component=component)
 
   if(isTRUE(button)){
@@ -47,6 +51,9 @@ rk.XML.embed <- function(component, button=FALSE, label="Options", id.name="auto
     attr.list[["id"]] <- id.name
   }
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("embed", attrs=attr.list)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.XML.frame.R b/packages/rkwarddev/R/rk.XML.frame.R
index 732239f..92c1d47 100644
--- a/packages/rkwarddev/R/rk.XML.frame.R
+++ b/packages/rkwarddev/R/rk.XML.frame.R
@@ -26,6 +26,10 @@
 #'    If \code{"auto"} and a label was provided, an ID will be generated automatically from the label
 #'    if presen, otherwise from the objects in the frame.
 #'    If \code{NULL}, no ID will be given.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @seealso
 #'    \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -36,7 +40,7 @@
 #'   "Second Option"=c(val="val2", chk=TRUE)))
 #' cat(pasteXML(rk.XML.frame(test.dropdown, label="Some options")))
 
-rk.XML.frame <- function(..., label=NULL, checkable=FALSE, chk=TRUE, id.name="auto"){
+rk.XML.frame <- function(..., label=NULL, checkable=FALSE, chk=TRUE, id.name="auto", i18n=NULL){
   nodes <- list(...)
 
   if(!is.null(label)){
@@ -63,6 +67,9 @@ rk.XML.frame <- function(..., label=NULL, checkable=FALSE, chk=TRUE, id.name="au
     attr.list[["id"]] <- id.name
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   frame <- XMLNode("frame",
       attrs=attr.list,
       .children=child.list(nodes, empty=FALSE)
diff --git a/packages/rkwarddev/R/rk.XML.input.R b/packages/rkwarddev/R/rk.XML.input.R
index a387e99..42d2bb4 100644
--- a/packages/rkwarddev/R/rk.XML.input.R
+++ b/packages/rkwarddev/R/rk.XML.input.R
@@ -30,6 +30,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @seealso
 #'    \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -38,7 +42,8 @@
 #' test.input <- rk.XML.input("Type some text")
 #' cat(pasteXML(test.input))
 
-rk.XML.input <- function(label, initial=NULL, size="medium", required=FALSE, id.name="auto", help=NULL, component=rk.get.comp()){
+rk.XML.input <- function(label, initial=NULL, size="medium", required=FALSE, id.name="auto",
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   attr.list <- list(label=label)
 
   if(identical(id.name, "auto")){
@@ -57,6 +62,9 @@ rk.XML.input <- function(label, initial=NULL, size="medium", required=FALSE, id.
     attr.list[["required"]] <- "true"
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("input", attrs=attr.list)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.matrix.R b/packages/rkwarddev/R/rk.XML.matrix.R
index 1be9dd3..00d4c46 100644
--- a/packages/rkwarddev/R/rk.XML.matrix.R
+++ b/packages/rkwarddev/R/rk.XML.matrix.R
@@ -52,6 +52,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -62,7 +66,7 @@
 rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=NULL,
   allow_missings=FALSE, allow_user_resize_columns=TRUE,
   allow_user_resize_rows=TRUE, fixed_width=FALSE, fixed_height=FALSE,
-  horiz_headers=NULL, vert_headers=NULL, id.name="auto", help=NULL, component=rk.get.comp()){
+  horiz_headers=NULL, vert_headers=NULL, id.name="auto", help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     # try autogenerating some id
     id.name <- auto.ids(label, prefix=ID.prefix("matrix"), chars=10)
@@ -129,6 +133,9 @@ rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=N
     }
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("matrix", attrs=attr.list)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.menu.R b/packages/rkwarddev/R/rk.XML.menu.R
index 5b821f2..f6a70e3 100644
--- a/packages/rkwarddev/R/rk.XML.menu.R
+++ b/packages/rkwarddev/R/rk.XML.menu.R
@@ -32,6 +32,10 @@
 #'    If \code{"auto"}, an ID will be generated automatically from the label. Otherwise, if \code{...} is a list,
 #'    \code{id.name} must have the same length and will be set in the same order to the menu levels.
 #'    Used to place the menu in the global menu hierarchy.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -48,7 +52,7 @@
 #' # manual definition of a menu path by a list:
 #' test.menu <- rk.XML.menu("Analysis", list("Level 1", "Level 2", test.component))
 
-rk.XML.menu <- function(label, ..., index=-1, id.name="auto"){
+rk.XML.menu <- function(label, ..., index=-1, id.name="auto", i18n=NULL){
   nodes <- list(...)
   num.nodes <- length(nodes)
 
@@ -117,6 +121,9 @@ rk.XML.menu <- function(label, ..., index=-1, id.name="auto"){
     attr.list[["index"]] <- index
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("menu",
       attrs=attr.list,
       .children=child.list(nodes)
diff --git a/packages/rkwarddev/R/rk.XML.option.R b/packages/rkwarddev/R/rk.XML.option.R
index f84fca5..5a2c2e5 100644
--- a/packages/rkwarddev/R/rk.XML.option.R
+++ b/packages/rkwarddev/R/rk.XML.option.R
@@ -35,6 +35,10 @@
 #' @param chk Logical, should be set \code{TRUE} in the one option which is checked by default.
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"} and a label was provided, an ID will be generated automatically from the label.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -47,7 +51,7 @@
 #' )
 #' cat(pasteXML(test.radio))
 
-rk.XML.option <- function(label, val=NULL, chk=FALSE, id.name=NULL){
+rk.XML.option <- function(label, val=NULL, chk=FALSE, id.name=NULL, i18n=NULL){
   attr.list <- list(label=label, value=val)
   if(isTRUE(chk)){
     attr.list[["checked"]] <- "true"
@@ -59,6 +63,9 @@ rk.XML.option <- function(label, val=NULL, chk=FALSE, id.name=NULL){
     attr.list[["id"]] <- id.name
   }
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   option <- XMLNode("option", attrs=attr.list)
 
   return(option)
diff --git a/packages/rkwarddev/R/rk.XML.optioncolumn.R b/packages/rkwarddev/R/rk.XML.optioncolumn.R
index b08918e..0bcc29a 100644
--- a/packages/rkwarddev/R/rk.XML.optioncolumn.R
+++ b/packages/rkwarddev/R/rk.XML.optioncolumn.R
@@ -34,6 +34,10 @@
 #' @param default Character string, only for external columns: The value to assume for this column, if no value is known for an entry. Rarely useful.
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"}, an ID will be generated automatically from the \code{connect} object.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -43,7 +47,7 @@
 #' @examples
 #' myInput <- rk.XML.input(label="Given name(s)", size="small")
 #' myOptCol <- rk.XML.optioncolumn(myInput, modifier="text")
-rk.XML.optioncolumn <- function(connect, modifier=NULL, label=TRUE, external=FALSE, default=NULL, id.name="auto"){
+rk.XML.optioncolumn <- function(connect, modifier=NULL, label=TRUE, external=FALSE, default=NULL, id.name="auto", i18n=NULL){
 
   connect.id <- check.ID(connect)
   if(is.XiMpLe.node(connect) && !is.null(modifier)){
@@ -82,6 +86,9 @@ rk.XML.optioncolumn <- function(connect, modifier=NULL, label=TRUE, external=FAL
     attr.list[["default"]] <- default
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("optioncolumn",
     attrs=attr.list)
 
diff --git a/packages/rkwarddev/R/rk.XML.plugin.R b/packages/rkwarddev/R/rk.XML.plugin.R
index 2bc1b6f..352a0c5 100644
--- a/packages/rkwarddev/R/rk.XML.plugin.R
+++ b/packages/rkwarddev/R/rk.XML.plugin.R
@@ -44,6 +44,10 @@
 #' @param gen.info Logical, if \code{TRUE} a comment note will be written into the document,
 #'    that it was generated by \code{rkwarddev} and changes should be done to the script.
 #' @param lang Character string, the language of the plugin. See \code{\link[rkwarddev:i18n]{i18n}} for details.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.doc}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -64,7 +68,7 @@
 #' }
 
 rk.XML.plugin <- function(name, dialog=NULL, wizard=NULL, logic=NULL, snippets=NULL, provides=NULL, help=TRUE, include=NULL,
-  label=NULL, clean.name=TRUE, about=NULL, dependencies=NULL, gen.info=TRUE, lang=rk.get.language()){
+  label=NULL, clean.name=TRUE, about=NULL, dependencies=NULL, gen.info=TRUE, lang=rk.get.language(), i18n=NULL){
   if(isTRUE(clean.name)){
     name.orig <- name
     name <- clean.name(name)
@@ -161,6 +165,9 @@ rk.XML.plugin <- function(name, dialog=NULL, wizard=NULL, logic=NULL, snippets=N
   } else {
     lang.attrs <- list(lang=lang, "xml:lang"=lang)
   }
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  lang.attrs <- check.i18n(i18n=i18n, attrs=lang.attrs)
+
   top.doc <- XMLNode("document", attrs=lang.attrs, .children=child.list(all.children))
 
   plugin <- XMLTree(
diff --git a/packages/rkwarddev/R/rk.XML.preview.R b/packages/rkwarddev/R/rk.XML.preview.R
index fa5220b..dbfb5f9 100644
--- a/packages/rkwarddev/R/rk.XML.preview.R
+++ b/packages/rkwarddev/R/rk.XML.preview.R
@@ -19,6 +19,10 @@
 #' Create XML node "preview" for RKWard plugins
 #'
 #' @param label A character string, text label for the preview checkbox.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -26,13 +30,16 @@
 #' test.preview <- rk.XML.preview("See a preview?")
 #' cat(pasteXML(test.preview))
 
-rk.XML.preview <- function(label="Preview"){
+rk.XML.preview <- function(label="Preview", i18n=NULL){
   if(!identical(label, "Preview")){
     attr.list <- list(label=label)
   } else {
     attr.list <- list()
   }
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("preview", attrs=attr.list)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.XML.radio.R b/packages/rkwarddev/R/rk.XML.radio.R
index 09315d8..db499c3 100644
--- a/packages/rkwarddev/R/rk.XML.radio.R
+++ b/packages/rkwarddev/R/rk.XML.radio.R
@@ -24,15 +24,20 @@
 #' @param label Character string, a text label for this plugin element.
 #' @param options A named list with options to choose from. The names of the list elements will become
 #'    labels of the options, \code{val} defines the value to submit if the option is checked, and
-#'    \code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-#'    \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.
+#'    \code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+#'    for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+#'    are accepted as well.
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"} and a label was provided, an ID will be generated automatically from the label.
-#' @param help Character string or list of character values and XiMpLe nodes, will be used as the \code{text} value for a setting node in the .rkh file.
-#'    Also needs \code{component} to be set accordingly!
+#' @param help Character string or list of character values and XiMpLe nodes, will be used as the \code{text} value for a setting
+#'    node in the .rkh file. Also needs \code{component} to be set accordingly!
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -44,13 +49,14 @@
 #'   "Second Option"=c(val="val2", chk=TRUE)))
 #' cat(pasteXML(test.radio))
 
-rk.XML.radio <- function(label, options=list(label=c(val=NULL, chk=FALSE)), id.name="auto", help=NULL, component=rk.get.comp()){
+rk.XML.radio <- function(label, options=list(label=c(val=NULL, chk=FALSE, i18n=NULL)), id.name="auto",
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     id <- auto.ids(label, prefix=ID.prefix("radio"))
   } else {
     id <- id.name
   }
-  rd.attr.list <- list(id=id, label=label)
+  attr.list <- list(id=id, label=label)
 
   # convert list elements into a list of XiMpLe nodes (if they aren't already)
   rd.options <- rk.check.options(options, parent="radio")
@@ -58,8 +64,11 @@ rk.XML.radio <- function(label, options=list(label=c(val=NULL, chk=FALSE)), id.n
   # check the node names and allow only valid ones
   valid.child("radio", children=rd.options)
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   radio <- XMLNode("radio",
-      attrs=rd.attr.list,
+      attrs=attr.list,
       .children=child.list(rd.options, empty=FALSE)
     )
 
diff --git a/packages/rkwarddev/R/rk.XML.saveobj.R b/packages/rkwarddev/R/rk.XML.saveobj.R
index fed026e..e0e4bbd 100644
--- a/packages/rkwarddev/R/rk.XML.saveobj.R
+++ b/packages/rkwarddev/R/rk.XML.saveobj.R
@@ -32,6 +32,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -40,7 +44,7 @@
 #' cat(pasteXML(test.saveobj))
 
 rk.XML.saveobj <- function(label, chk=FALSE, checkable=TRUE, initial="auto", required=FALSE, id.name="auto",
-  help=NULL, component=rk.get.comp()){
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   attr.list <- list(label=label)
 
   if(isTRUE(checkable)){
@@ -68,6 +72,9 @@ rk.XML.saveobj <- function(label, chk=FALSE, checkable=TRUE, initial="auto", req
     attr.list[["id"]] <- id.name
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("saveobject", attrs=attr.list)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.select.R b/packages/rkwarddev/R/rk.XML.select.R
index 5fc397b..0e434b8 100644
--- a/packages/rkwarddev/R/rk.XML.select.R
+++ b/packages/rkwarddev/R/rk.XML.select.R
@@ -21,8 +21,9 @@
 #' @param label Character string, a text label for this plugin element.
 #' @param options A named list with options to choose from. The names of the list elements will become
 #'    labels of the options, \code{val} defines the value to submit if the option is selected, and
-#'    \code{chk=TRUE} should be set in the one option which is selected by default. Objects generated with
-#'    \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.
+#'    \code{chk=TRUE} should be set in the one option which is selected by default. You might also provide an \code{i18n}
+#'    for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+#'    are accepted as well.
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"} and a label was provided, an ID will be generated automatically from the label.
 #' @param help Character string or list of character values and XiMpLe nodes, will be used as the \code{text} value for a setting node in the .rkh file.
@@ -31,6 +32,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @export
@@ -40,13 +45,14 @@
 #'   "Second Option"=c(val="val2", chk=TRUE)))
 #' cat(pasteXML(test.select))
 
-rk.XML.select <- function(label, options=list(label=c(val="", chk=FALSE)), id.name="auto", help=NULL, component=rk.get.comp()){
+rk.XML.select <- function(label, options=list(label=c(val="", chk=FALSE, i18n=NULL)), id.name="auto",
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     id <- auto.ids(label, prefix=ID.prefix("select"))
   } else {
     id <- id.name
   }
-  slct.attr.list <- list(id=id, label=label)
+  attr.list <- list(id=id, label=label)
 
   # convert list elements into a list of XiMpLe nodes (if they aren't already)
   sl.options <- rk.check.options(options, parent="select")
@@ -54,8 +60,11 @@ rk.XML.select <- function(label, options=list(label=c(val="", chk=FALSE)), id.na
   # check the node names and allow only valid ones
   valid.child("select", children=sl.options)
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   select <- XMLNode("select",
-      attrs=slct.attr.list,
+      attrs=attr.list,
       .children=child.list(sl.options, empty=FALSE)
     )
 
diff --git a/packages/rkwarddev/R/rk.XML.spinbox.R b/packages/rkwarddev/R/rk.XML.spinbox.R
index 866980c..4fbf1e4 100644
--- a/packages/rkwarddev/R/rk.XML.spinbox.R
+++ b/packages/rkwarddev/R/rk.XML.spinbox.R
@@ -33,6 +33,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -42,7 +46,7 @@
 
 
 rk.XML.spinbox <- function(label, min=NULL, max=NULL, initial=0, real=TRUE, precision=2, max.precision=8, id.name="auto",
-  help=NULL, component=rk.get.comp()){
+  help=NULL, component=rk.get.comp(), i18n=NULL){
   attr.list <- list(label=label)
 
   if(identical(id.name, "auto")){
@@ -75,6 +79,9 @@ rk.XML.spinbox <- function(label, min=NULL, max=NULL, initial=0, real=TRUE, prec
     attr.list[["max.precision"]] <- as.numeric(max.precision)
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("spinbox", attrs=attr.list)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.tabbook.R b/packages/rkwarddev/R/rk.XML.tabbook.R
index f0fbb1c..34f33dc 100644
--- a/packages/rkwarddev/R/rk.XML.tabbook.R
+++ b/packages/rkwarddev/R/rk.XML.tabbook.R
@@ -24,6 +24,10 @@
 #' @param id.name Character vector, unique IDs for the tabbook (first entry) and all tabs.
 #'    If \code{"auto"}, IDs will be generated automatically from the labels.
 #'    If \code{NULL}, no IDs will be given.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -40,7 +44,7 @@
 #'   tabs=list("First Tab"=test.checkboxes, "Second Tab"=test.dropdown))
 #' cat(pasteXML(test.tabbook))
 
-rk.XML.tabbook <- function(label=NULL, tabs=list(), id.name="auto"){
+rk.XML.tabbook <- function(label=NULL, tabs=list(), id.name="auto", i18n=NULL){
   tab.labels <- names(tabs)
   num.tabs <- length(tabs)
 
@@ -90,6 +94,9 @@ rk.XML.tabbook <- function(label=NULL, tabs=list(), id.name="auto"){
     tbk.attr.list[["label"]] <- label
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  tbk.attr.list <- check.i18n(i18n=i18n, attrs=tbk.attr.list)
+
   tabbook <- XMLNode("tabbook",
       attrs=tbk.attr.list,
       .children=child.list(tabs, empty=FALSE)
diff --git a/packages/rkwarddev/R/rk.XML.text.R b/packages/rkwarddev/R/rk.XML.text.R
index e71213a..3a92c5d 100644
--- a/packages/rkwarddev/R/rk.XML.text.R
+++ b/packages/rkwarddev/R/rk.XML.text.R
@@ -23,6 +23,10 @@
 #' @param id.name Character string, a unique ID for this plugin element.
 #'    If \code{"auto"}, an ID will be generated automatically from \code{text}.
 #'    If \code{NULL}, no ID will be given.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -31,7 +35,7 @@
 #' test.text <- rk.XML.text("Added this text.")
 #' cat(pasteXML(test.text))
 
-rk.XML.text <- function(text, type="normal", id.name="auto"){
+rk.XML.text <- function(text, type="normal", id.name="auto", i18n=NULL){
   if(identical(id.name, "auto")){
     # try autogenerating some id
     attr.list <- list(id=auto.ids(text, prefix=ID.prefix("text")))
@@ -45,6 +49,9 @@ rk.XML.text <- function(text, type="normal", id.name="auto"){
     attr.list[["type"]] <- type
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   # preserve markup in the text
   if(grepl("<(.*)>", text)){
     textAsTree <- parseXMLTree(text, object=TRUE)
@@ -57,6 +64,5 @@ rk.XML.text <- function(text, type="normal", id.name="auto"){
         attrs=attr.list)
   }
 
-
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.XML.valueselector.R b/packages/rkwarddev/R/rk.XML.valueselector.R
index 756f364..18b5c98 100644
--- a/packages/rkwarddev/R/rk.XML.valueselector.R
+++ b/packages/rkwarddev/R/rk.XML.valueselector.R
@@ -22,9 +22,14 @@
 #'    Must be set if \code{id.name="auto"}.
 #' @param options A named list with string values to choose from. The names of the list elements will become
 #'    labels of the options, \code{val} defines the value to submit if the value is selected, and
-#'    \code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-#'    \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.
+#'    \code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+#'    for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+#'    are accepted as well.
 #' @param id.name Character vector, unique ID for this element.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -36,7 +41,7 @@
 #' test.valueselector <- rk.XML.valueselector("Select some values")
 #' cat(pasteXML(test.valueselector))
 
-rk.XML.valueselector <- function(label=NULL, options=list(label=c(val=NULL, chk=FALSE)), id.name="auto"){
+rk.XML.valueselector <- function(label=NULL, options=list(label=c(val=NULL, chk=FALSE, i18n=NULL)), id.name="auto", i18n=NULL){
   if(identical(id.name, "auto")){
     ## if this ID generation get's changed, change it in rk.XML.vars(), too!
     attr.list <- list(id=auto.ids(label, prefix=ID.prefix("valueselector", length=3)))
@@ -58,6 +63,9 @@ rk.XML.valueselector <- function(label=NULL, options=list(label=c(val=NULL, chk=
   # check the node names and allow only valid ones
   valid.child("valueselector", children=vs.options)
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("valueselector",
     attrs=attr.list,
     .children=child.list(vs.options, empty=FALSE)
diff --git a/packages/rkwarddev/R/rk.XML.valueslot.R b/packages/rkwarddev/R/rk.XML.valueslot.R
index 8397d69..788fd87 100644
--- a/packages/rkwarddev/R/rk.XML.valueslot.R
+++ b/packages/rkwarddev/R/rk.XML.valueslot.R
@@ -41,6 +41,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -55,7 +59,7 @@
 #' }
 
 rk.XML.valueslot <- function(label, source, property=NULL, required=FALSE, multi=FALSE, duplicates=FALSE, min=1, any=1, max=0,
-  id.name="auto", help=NULL, component=rk.get.comp()){
+  id.name="auto", help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     value.slot.attr <- list(id=auto.ids(label, prefix=ID.prefix("valueslot", length=4)))
   } else if(!is.null(id.name)){
@@ -98,6 +102,9 @@ rk.XML.valueslot <- function(label, source, property=NULL, required=FALSE, multi
     } else {}
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  value.slot.attr <- check.i18n(i18n=i18n, attrs=value.slot.attr)
+
   v.slot <- XMLNode("valueslot", attrs=value.slot.attr)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.varselector.R b/packages/rkwarddev/R/rk.XML.varselector.R
index a0dbf44..49dcab9 100644
--- a/packages/rkwarddev/R/rk.XML.varselector.R
+++ b/packages/rkwarddev/R/rk.XML.varselector.R
@@ -21,6 +21,10 @@
 #' @param label Character string, a text label for the variable selection slot.
 #'    Must be set if \code{id.name="auto"}.
 #' @param id.name Character vector, unique ID for this element.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -31,7 +35,7 @@
 #' test.varselector <- rk.XML.varselector("Select some vars")
 #' cat(pasteXML(test.varselector))
 
-rk.XML.varselector <- function(label=NULL, id.name="auto"){
+rk.XML.varselector <- function(label=NULL, id.name="auto", i18n=NULL){
   if(identical(id.name, "auto")){
     ## if this ID generation get's changed, change it in rk.XML.vars(), too!
     attr.list <- list(id=auto.ids(label, prefix=ID.prefix("varselector", length=3)))
@@ -47,6 +51,9 @@ rk.XML.varselector <- function(label=NULL, id.name="auto"){
     } else {}
   }
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("varselector", attrs=attr.list)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.XML.varslot.R b/packages/rkwarddev/R/rk.XML.varslot.R
index 068afe4..50e24c8 100644
--- a/packages/rkwarddev/R/rk.XML.varslot.R
+++ b/packages/rkwarddev/R/rk.XML.varslot.R
@@ -51,6 +51,10 @@
 #' @param component Character string, name of the component this node belongs to. Only needed if you
 #'    want to use the scan features for automatic help file generation; needs \code{help} to be set
 #'    accordingly, too!
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -65,7 +69,7 @@
 #' }
 
 rk.XML.varslot <- function(label, source, property=NULL, required=FALSE, multi=FALSE, duplicates=FALSE, min=1, any=1, max=0,
-  dim=0, min.len=0, max.len=NULL, classes=NULL, types=NULL, id.name="auto", help=NULL, component=rk.get.comp()){
+  dim=0, min.len=0, max.len=NULL, classes=NULL, types=NULL, id.name="auto", help=NULL, component=rk.get.comp(), i18n=NULL){
   if(identical(id.name, "auto")){
     var.slot.attr <- list(id=auto.ids(label, prefix=ID.prefix("varslot", length=4)))
   } else if(!is.null(id.name)){
@@ -130,6 +134,9 @@ rk.XML.varslot <- function(label, source, property=NULL, required=FALSE, multi=F
     var.slot.attr[["max_length"]] <- max.len
   } else {}
 
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  var.slot.attr <- check.i18n(i18n=i18n, attrs=var.slot.attr)
+
   v.slot <- XMLNode("varslot", attrs=var.slot.attr)
 
   # check for .rkh content
diff --git a/packages/rkwarddev/R/rk.XML.wizard.R b/packages/rkwarddev/R/rk.XML.wizard.R
index 4083cbc..a53c697 100644
--- a/packages/rkwarddev/R/rk.XML.wizard.R
+++ b/packages/rkwarddev/R/rk.XML.wizard.R
@@ -27,6 +27,10 @@
 #' @param label Character string, a text label for this plugin element.
 #' @param recommended Logical, whether the wizard should be the recommended interface (unless the user has configured
 #'    RKWard to default to a specific interface).
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{label} will be renamed into 
+#'    \code{noi18n_label}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -42,7 +46,7 @@
 #' test.wizard <- rk.XML.wizard(rk.XML.page(list(test.text, test.copy)))
 #' cat(pasteXML(test.wizard))
 
-rk.XML.wizard <- function(..., label=NULL, recommended=FALSE){
+rk.XML.wizard <- function(..., label=NULL, recommended=FALSE, i18n=NULL){
   nodes <- list(...)
 
   # check the node names and allow only valid ones
@@ -58,6 +62,9 @@ rk.XML.wizard <- function(..., label=NULL, recommended=FALSE){
     attr.list[["recommended"]] <- "true"
   } else {}
   
+  # check for additional i18n info; if FALSE, "label" will be renamed to "noi18n_label"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("wizard",
       attrs=attr.list,
       .children=child.list(nodes, empty=FALSE)
diff --git a/packages/rkwarddev/R/rk.rkh.usage.R b/packages/rkwarddev/R/rk.i18n.comment.R
similarity index 64%
copy from packages/rkwarddev/R/rk.rkh.usage.R
copy to packages/rkwarddev/R/rk.i18n.comment.R
index 8b21be9..b9368b4 100644
--- a/packages/rkwarddev/R/rk.rkh.usage.R
+++ b/packages/rkwarddev/R/rk.i18n.comment.R
@@ -1,4 +1,4 @@
-# Copyright 2010-2014 Meik Michalke <meik.michalke at hhu.de>
+# Copyright 2014 Meik Michalke <meik.michalke at hhu.de>
 #
 # This file is part of the R package rkwarddev.
 #
@@ -16,23 +16,18 @@
 # along with rkwarddev.  If not, see <http://www.gnu.org/licenses/>.
 
 
-#' Create XML "usage" node for RKWard help pages
+#' Create i18n comment for RKWard plugin code
+#'
+#' This function is similar to rk.comment, but preceds the \code{text} with the
+#' keyword \code{"i18n:"} to give context to translators.
 #'
 #' @param text Character string, the text to be displayed.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
-#' @seealso
-#'    \code{\link[rkwarddev:rk.rkh.doc]{rk.rkh.doc}}
-#'    and the \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @examples
-#' plugin.usage <- rk.rkh.usage("First do this, then do that ...")
-
-rk.rkh.usage <- function(text=NULL){
-  if(is.null(text)){
-    text <- ""
-  } else {}
-
-  node <- XMLNode("usage", text)
+#' test.comment <- rk.i18n.comment("Added this text.")
+#' cat(pasteXML(test.comment))
 
-  return(node)
+rk.i18n.comment <- function(text, prefix="i18n:"){
+  return(XMLNode(name="!--", paste(prefix, text)))
 }
diff --git a/packages/rkwarddev/R/rk.paste.JS.R b/packages/rkwarddev/R/rk.paste.JS.R
index bb34db3..2e9304a 100644
--- a/packages/rkwarddev/R/rk.paste.JS.R
+++ b/packages/rkwarddev/R/rk.paste.JS.R
@@ -48,6 +48,8 @@
 #' @include 00_class_04_rk.JS.opt.R
 #' @include 00_class_05_rk.JS.oset.R
 #' @include 00_class_02_rk.JS.var.R
+#' @include echo.R
+#' @include i18n.R
 #' @seealso
 #'    \code{\link[rkwarddev:rk.JS.array]{rk.JS.array}},
 #'    \code{\link[rkwarddev:rk.JS.options]{rk.JS.options}},
@@ -82,6 +84,8 @@ rk.paste.JS <- function(..., level=2, indent.by="\t", funct=NULL, array=NULL,
         modifiers=modifiers, default=default, join=join, getter=getter)
     } else if(inherits(this.object, "rk.JS.echo")){
       result <- slot(this.object, "value")
+    } else if(inherits(this.object, "rk.JS.i18n")){
+      result <- paste0(slot(this.object, "value"), slot(this.object, "end"))
     } else if(is.XiMpLe.node(this.object)){
       if(identical(XMLName(this.object), "!--")){
         result <- paste0(indent(level, by=indent.by),
diff --git a/packages/rkwarddev/R/rk.rkh.caption.R b/packages/rkwarddev/R/rk.rkh.caption.R
index 2d306d7..9a51748 100644
--- a/packages/rkwarddev/R/rk.rkh.caption.R
+++ b/packages/rkwarddev/R/rk.rkh.caption.R
@@ -24,6 +24,10 @@
 #'    or an object of class \code{XiMpLe.node} (whose \code{id} will be extracted and used).
 #' @param title Character string, title to be displayed. If \code{NULL}, the \code{label}
 #'    of the element will be shown.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{title} will be renamed into 
+#'    \code{noi18n_title}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -40,7 +44,7 @@
 #' test.caption <- rk.rkh.caption(test.frame)
 #' cat(pasteXML(test.caption))
 
-rk.rkh.caption <- function(id, title=NULL){
+rk.rkh.caption <- function(id, title=NULL, i18n=NULL){
   # let's see if we need to extract IDs first
   attr.list <- list(id=check.ID(id))
 
@@ -48,6 +52,9 @@ rk.rkh.caption <- function(id, title=NULL){
     attr.list[["title"]] <- title
   } else {}
 
+  # check for additional i18n info; if FALSE, "title" will be renamed to "noi18n_title"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode(name="caption", attrs=attr.list)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.rkh.link.R b/packages/rkwarddev/R/rk.rkh.link.R
index 1b1db68..fea41c5 100644
--- a/packages/rkwarddev/R/rk.rkh.link.R
+++ b/packages/rkwarddev/R/rk.rkh.link.R
@@ -29,6 +29,9 @@
 #'      \item{\code{"RK"}}{\code{href} is assumend to be the ID of another RKWard plugin, i.e.,
 #'        the link generated will look like \code{rkward://component/<href>}.}
 #'    }
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -38,7 +41,7 @@
 #' package.link <- rk.rkh.link("Spice")
 #' cat(pasteXML(package.link))
 
-rk.rkh.link <- function(href, text=NULL, type="R"){
+rk.rkh.link <- function(href, text=NULL, type="R", i18n=NULL){
   if(identical(type, "url")){
     text <- ifelse(is.null(text), href, text)
     link <- href
@@ -54,7 +57,12 @@ rk.rkh.link <- function(href, text=NULL, type="R"){
     text <- character()
   } else {}
 
-  node <- XMLNode(name="link", text, attrs=list(href=link))
+  attr.list <- list(href=link)
+  
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
+  node <- XMLNode(name="link", text, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.rkh.related.R b/packages/rkwarddev/R/rk.rkh.related.R
index b5c5e82..36eee7d 100644
--- a/packages/rkwarddev/R/rk.rkh.related.R
+++ b/packages/rkwarddev/R/rk.rkh.related.R
@@ -21,6 +21,9 @@
 #' @param ... Objects of class \code{XiMpLe.node}. They must all have the name "link".
 #' @param text Character string, the text to be displayed.
 #' @return An object of class \code{XiMpLe.node}.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @export
 #' @seealso
 #'    \code{\link[rkwarddev:rk.rkh.doc]{rk.rkh.doc}}
@@ -30,7 +33,7 @@
 #' plugin.related <- rk.rkh.related(package.link)
 #' cat(pasteXML(plugin.related))
 
-rk.rkh.related <- function(..., text=NULL){
+rk.rkh.related <- function(..., text=NULL, i18n=NULL){
   links <- list(...)
 
   # check the node names and allow only valid ones
@@ -42,7 +45,10 @@ rk.rkh.related <- function(..., text=NULL){
 
   ul <- XMLNode("ul", .children=child.list(li.elements, empty=FALSE))
 
-  node <- XMLNode("related", text, ul)
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=list())
+
+  node <- XMLNode("related", text, ul, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.rkh.section.R b/packages/rkwarddev/R/rk.rkh.section.R
index 96342ea..e500558 100644
--- a/packages/rkwarddev/R/rk.rkh.section.R
+++ b/packages/rkwarddev/R/rk.rkh.section.R
@@ -25,6 +25,10 @@
 #' @param short Character string, short title for the menu for links to this section.
 #' @param id.name Character string, a unique ID for this element.
 #'    If \code{"auto"}, an ID will be generated automatically from the \code{title} value.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{title} will be renamed into 
+#'    \code{noi18n_title}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -35,7 +39,7 @@
 #' short="Background")
 #' cat(pasteXML(test.section))
 
-rk.rkh.section <- function(title, text=NULL, short=NULL, id.name="auto"){
+rk.rkh.section <- function(title, text=NULL, short=NULL, id.name="auto", i18n=NULL){
   if(identical(id.name, "auto")){
     attr.list <- list(id=auto.ids(title, prefix=ID.prefix("section")),
       title=title)
@@ -53,6 +57,9 @@ rk.rkh.section <- function(title, text=NULL, short=NULL, id.name="auto"){
     text <- ""
   } else {}
 
+  # check for additional i18n info; if FALSE, "title" will be renamed to "noi18n_title"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("section", text, attrs=attr.list)
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.rkh.setting.R b/packages/rkwarddev/R/rk.rkh.setting.R
index 275405a..7f27a95 100644
--- a/packages/rkwarddev/R/rk.rkh.setting.R
+++ b/packages/rkwarddev/R/rk.rkh.setting.R
@@ -25,6 +25,10 @@
 #' @param text Character string, the text to be displayed.
 #' @param title Character string, title to be displayed. If \code{NULL}, the \code{label}
 #'    of the element will be shown.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node. If set to \code{FALSE}, the attribute \code{title} will be renamed into 
+#'    \code{noi18n_title}.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -37,7 +41,7 @@
 #' test.setting <- rk.rkh.setting(test.checkbox, text="Check this to do Foo.")
 #' cat(pasteXML(test.setting))
 
-rk.rkh.setting <- function(id, text=NULL, title=NULL){
+rk.rkh.setting <- function(id, text=NULL, title=NULL, i18n=NULL){
   # let's see if we need to extract IDs first
   attr.list <- list(id=check.ID(id))
 
@@ -49,6 +53,9 @@ rk.rkh.setting <- function(id, text=NULL, title=NULL){
     text <- ""
   } else {}
 
+  # check for additional i18n info; if FALSE, "title" will be renamed to "noi18n_title"
+  attr.list <- check.i18n(i18n=i18n, attrs=attr.list)
+
   node <- XMLNode("setting", attrs=attr.list, .children=child.list(text, empty=FALSE))
 
   return(node)
diff --git a/packages/rkwarddev/R/rk.rkh.summary.R b/packages/rkwarddev/R/rk.rkh.summary.R
index 18ffe48..c40ed08 100644
--- a/packages/rkwarddev/R/rk.rkh.summary.R
+++ b/packages/rkwarddev/R/rk.rkh.summary.R
@@ -19,6 +19,9 @@
 #' Create XML "summary" node for RKWard help pages
 #'
 #' @param text Character string, the text to be displayed.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -28,13 +31,16 @@
 #' plugin.summary <- rk.rkh.summary("This plugin folds space, using the spice package.")
 #' cat(pasteXML(plugin.summary))
 
-rk.rkh.summary <- function(text=NULL){
+rk.rkh.summary <- function(text=NULL, i18n=NULL){
 
   if(is.null(text)){
     text <- ""
   } else {}
 
-  node <- XMLNode("summary", text)
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=list())
+
+  node <- XMLNode("summary", text, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.rkh.technical.R b/packages/rkwarddev/R/rk.rkh.technical.R
index 1427112..884a5dc 100644
--- a/packages/rkwarddev/R/rk.rkh.technical.R
+++ b/packages/rkwarddev/R/rk.rkh.technical.R
@@ -19,6 +19,9 @@
 #' Create XML "technical" node for RKWard help pages
 #'
 #' @param text Character string, the text to be displayed.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -28,12 +31,15 @@
 #' plugin.technical <- rk.rkh.technical("<b>TODO</b>: Implement sandworm detector.")
 #' cat(pasteXML(plugin.technical))
 
-rk.rkh.technical <- function(text=NULL){
+rk.rkh.technical <- function(text=NULL, i18n=NULL){
   if(is.null(text)){
     text <- ""
   } else {}
 
-  node <- XMLNode("technical", text)
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=list())
+
+  node <- XMLNode("technical", text, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.rkh.title.R b/packages/rkwarddev/R/rk.rkh.title.R
index 537fd7b..a1e78f4 100644
--- a/packages/rkwarddev/R/rk.rkh.title.R
+++ b/packages/rkwarddev/R/rk.rkh.title.R
@@ -19,6 +19,9 @@
 #' Create XML "title" node for RKWard help pages
 #'
 #' @param text Character string, the text to be displayed.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -28,12 +31,15 @@
 #' plugin.title <- rk.rkh.title("Spice")
 #' cat(pasteXML(plugin.title))
 
-rk.rkh.title <- function(text=NULL){
+rk.rkh.title <- function(text=NULL, i18n=NULL){
   if(is.null(text)){
     text <- ""
   } else {}
 
-  node <- XMLNode("title", text)
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=list())
+
+  node <- XMLNode("title", text, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rk.rkh.usage.R b/packages/rkwarddev/R/rk.rkh.usage.R
index 8b21be9..9695068 100644
--- a/packages/rkwarddev/R/rk.rkh.usage.R
+++ b/packages/rkwarddev/R/rk.rkh.usage.R
@@ -19,6 +19,9 @@
 #' Create XML "usage" node for RKWard help pages
 #'
 #' @param text Character string, the text to be displayed.
+#' @param i18n Either a character string or a named list with the optional element \code{context},
+#'    to give some \code{i18n_context}
+#'    information for this node.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso
@@ -27,12 +30,15 @@
 #' @examples
 #' plugin.usage <- rk.rkh.usage("First do this, then do that ...")
 
-rk.rkh.usage <- function(text=NULL){
+rk.rkh.usage <- function(text=NULL, i18n=NULL){
   if(is.null(text)){
     text <- ""
   } else {}
 
-  node <- XMLNode("usage", text)
+  # check for additional i18n info
+  attr.list <- check.i18n(i18n=i18n, attrs=list())
+
+  node <- XMLNode("usage", text, attrs=attr.list)
 
   return(node)
 }
diff --git a/packages/rkwarddev/R/rkwarddev-package.R b/packages/rkwarddev/R/rkwarddev-package.R
index 2c70046..620ceef 100644
--- a/packages/rkwarddev/R/rkwarddev-package.R
+++ b/packages/rkwarddev/R/rkwarddev-package.R
@@ -4,7 +4,7 @@
 #' Package: \tab rkwarddev\cr
 #' Type: \tab Package\cr
 #' Version: \tab 0.06-6\cr
-#' Date: \tab 2014-11-09\cr
+#' Date: \tab 2014-11-23\cr
 #' Depends: \tab R (>= 2.9.0),methods,XiMpLe (>= 0.03-21),rkward (>= 0.5.7)\cr
 #' Enhances: \tab rkward\cr
 #' Encoding: \tab UTF-8\cr
diff --git a/packages/rkwarddev/R/show-methods.R b/packages/rkwarddev/R/show-methods.R
index 2d28c92..b07687d 100644
--- a/packages/rkwarddev/R/show-methods.R
+++ b/packages/rkwarddev/R/show-methods.R
@@ -28,6 +28,7 @@
 #' @include 00_class_04_rk.JS.opt.R
 #' @include 00_class_05_rk.JS.oset.R
 #' @include echo.R
+#' @include i18n.R
 #' @exportMethod show
 #' @rdname show-methods
 setGeneric("show")
@@ -61,3 +62,8 @@ setMethod("show", signature(object="rk.JS.var"), function(object){
 setMethod("show", signature(object="rk.JS.echo"), function(object){
   cat(rk.paste.JS(object))
 })
+
+#' @rdname show-methods
+setMethod("show", signature(object="rk.JS.i18n"), function(object){
+  cat(rk.paste.JS(object))
+})
diff --git a/packages/rkwarddev/inst/NEWS.Rd b/packages/rkwarddev/inst/NEWS.Rd
index dbfda2d..85a5edc 100644
--- a/packages/rkwarddev/inst/NEWS.Rd
+++ b/packages/rkwarddev/inst/NEWS.Rd
@@ -1,13 +1,15 @@
 \name{NEWS}
 \title{News for Package 'rkwarddev'}
 \encoding{UTF-8}
-\section{Changes in rkwarddev version 0.06-6 (2014-11-09)}{
+\section{Changes in rkwarddev version 0.06-6 (2014-11-23)}{
   \subsection{fixed}{
     \itemize{
       \item \code{rk.XML.optionset()} does now allow to re-use objects defined in the same
         function call (i.e., refer to optioncolumns in the logic section)
       \item removed arguments \code{"help"} and \code{"component"} from \code{rk.XML.optionscolumn()} again,
         as these are already being documented via the objects they connect to.
+      \item \code{rk.build.plugin()} was still only using the "--no-vignettes" option from R < 3
+      \item \code{rk.XML.pluginmap()} malformed label argument names if they referred to standrad maneu entries
     }
   }
   \subsection{added}{
@@ -18,6 +20,14 @@
       \item \code{rk.XML.pluginmap()} now adds a \code{"po_id"} attribute to pluginmaps, necessary for i18n
       \item new attribute \code{"i18n"} added to several XML functions; it takes a list with the named arguments
         \code{"comment"} or \code{"context"} to either produce an i18n comment node or an \code{"i18n_context"} attribute
+      \item new function \code{rk.i18n.comment()} to give context for translators
+    }
+  }
+  \subsection{changed}{
+    \itemize{
+      \item function \code{i18n()} was changed to be used in JavaScript generation only; this breaks code
+        using the function introduced with 0.06-4, but that was to be shortlived from the start...
+        the i18n features of 0.06-4 will be completely replaced with some proper methods now
     }
   }
 }
diff --git a/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf b/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
index 98e3e29..977842d 100644
Binary files a/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf and b/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf differ
diff --git a/packages/rkwarddev/man/i18n.Rd b/packages/rkwarddev/man/i18n.Rd
index 57b7bfb..217ccf0 100644
--- a/packages/rkwarddev/man/i18n.Rd
+++ b/packages/rkwarddev/man/i18n.Rd
@@ -1,32 +1,34 @@
 % Generated by roxygen2 (4.0.2): do not edit by hand
 \name{i18n}
 \alias{i18n}
-\title{Translate parts of a plugin}
+\title{Mark JavaScript strings as translatable}
 \usage{
-i18n(..., lang = rk.get.language())
+i18n(msgid, ..., context = NULL, plural = NULL, newline = "")
 }
 \arguments{
-\item{...}{Comma separated, named elements, see description.}
+\item{msgid}{Character string, the message to be translated (if applicable,
+      its singular form).}
 
-\item{lang}{Character string, the language to return.}
+\item{...}{Either character string wich will be pasted unquoted to be used in conjunctions with
+placeholders in msgid,
+      or XiMpLe.node objects of which the JavaScript variable name will be
+used.}
+
+\item{context}{Character string, optional context information for this string.}
+
+\item{plural}{Character string for plural form of \code{msgid}, must at least include one
+placeholder, and the first one has to represent an integer value in the dialog.}
+
+\item{newline}{Character string,
+      can be set to e.g. \code{"\n"} to force a newline after the call.}
 }
 \description{
-Takes a list of entries named after abbreviated languages, and returns
-either the one matching the language set with \code{\link[rkwarddev:rk.set.language]{rk.set.language}},
-or the first entry if no language was set at all or the set language cannot be found in
-\code{...}.
-}
-\details{
-If used in an \code{rkwarddev} script,
-      this can be used to toggle the generation of plugins
-in a certain language.
+Similar to \code{\link[rkwarddev:echo]{echo}}, this function should help you to write
+your JavaScript portions in R. Depending on the provided values for its arguments,
+will return one of \code{i18n()}, \code{i18nc()}, \code{i18np()}, or \code{i18ncp()}.
 }
 \examples{
-rk.set.language("en", c("en_EN", "en_US"))
-(var.select <- rk.XML.varselector(label=i18n(en="Select data", de="Wähle Daten")))
-
-# now try the same with the alternate language
-rk.set.language("de", "de_DE")
-(var.select <- rk.XML.varselector(label=i18n(en="Select data", de="Wähle Daten")))
+i18n("Select data")
+i18n("Comparing a single pair", "n_pairs", plural="Comparing \%1 distinct pairs")
 }
 
diff --git a/packages/rkwarddev/man/rk.XML.attribute.Rd b/packages/rkwarddev/man/rk.XML.attribute.Rd
index 3c57f6c..27e7757 100644
--- a/packages/rkwarddev/man/rk.XML.attribute.Rd
+++ b/packages/rkwarddev/man/rk.XML.attribute.Rd
@@ -13,11 +13,9 @@ or an object of class \code{XiMpLe.node} (whose \code{id} will be extracted and
 
 \item{label}{Character string, label associated with the attribute.}
 
-\item{i18n}{A named list with the optional element \code{context},
-      to give some \code{i18n_context}
-information for this node. If set to \code{FALSE},
-      the attribute \code{label} will be renamed into
-\code{noi18n_label}.}
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context} information for this node. If set to \code{FALSE},
+the attribute \code{label} will be renamed into \code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.browser.Rd b/packages/rkwarddev/man/rk.XML.browser.Rd
index 502d20a..d7d289e 100644
--- a/packages/rkwarddev/man/rk.XML.browser.Rd
+++ b/packages/rkwarddev/man/rk.XML.browser.Rd
@@ -5,7 +5,7 @@
 \usage{
 rk.XML.browser(label, type = "file", initial = NULL, urls = FALSE,
   filter = NULL, required = TRUE, id.name = "auto", help = NULL,
-  component = rk.get.comp())
+  component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -38,6 +38,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.cbox.Rd b/packages/rkwarddev/man/rk.XML.cbox.Rd
index 423e542..e619d69 100644
--- a/packages/rkwarddev/man/rk.XML.cbox.Rd
+++ b/packages/rkwarddev/man/rk.XML.cbox.Rd
@@ -30,8 +30,8 @@ Also needs \code{component} to be set accordingly!}
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
 
-\item{i18n}{A named list with the optional element \code{context},
-      to give some \code{i18n_context}
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
 information for this node. If set to \code{FALSE},
       the attribute \code{label} will be renamed into
 \code{noi18n_label}.}
diff --git a/packages/rkwarddev/man/rk.XML.component.Rd b/packages/rkwarddev/man/rk.XML.component.Rd
index 58790eb..9bf911e 100644
--- a/packages/rkwarddev/man/rk.XML.component.Rd
+++ b/packages/rkwarddev/man/rk.XML.component.Rd
@@ -4,7 +4,7 @@
 \title{Create XML "component" node for RKWard plugins}
 \usage{
 rk.XML.component(label, file, id.name = "auto", type = "standard",
-  dependencies = NULL)
+  dependencies = NULL, i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a label for the component.}
@@ -20,6 +20,12 @@ just implemented for completeness.}
 
 \item{dependencies}{An object of class \code{XiMpLe.node} to define \code{<dependencies>} for this component.
 See \code{\link[XiMpLe:rk.XML.dependencies]{rk.XML.dependencies}} for details. Skipped if \code{NULL}.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.dialog.Rd b/packages/rkwarddev/man/rk.XML.dialog.Rd
index ca68c5f..9b6e773 100644
--- a/packages/rkwarddev/man/rk.XML.dialog.Rd
+++ b/packages/rkwarddev/man/rk.XML.dialog.Rd
@@ -3,7 +3,7 @@
 \alias{rk.XML.dialog}
 \title{Create XML dialog section for RKWard plugins}
 \usage{
-rk.XML.dialog(..., label = NULL, recommended = FALSE)
+rk.XML.dialog(..., label = NULL, recommended = FALSE, i18n = NULL)
 }
 \arguments{
 \item{...}{Objects of class \code{XiMpLe.node}.}
@@ -15,6 +15,12 @@ rk.XML.dialog(..., label = NULL, recommended = FALSE)
 RKWard to default to a specific interface). This attribute currently has no effect,
       as it is implicitly "true",
 unless the wizard is recommended.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.dropdown.Rd b/packages/rkwarddev/man/rk.XML.dropdown.Rd
index 36a45e1..f3734cd 100644
--- a/packages/rkwarddev/man/rk.XML.dropdown.Rd
+++ b/packages/rkwarddev/man/rk.XML.dropdown.Rd
@@ -3,8 +3,9 @@
 \alias{rk.XML.dropdown}
 \title{Create XML node "dropdown" for RKWard plugins}
 \usage{
-rk.XML.dropdown(label, options = list(label = c(val = "", chk = FALSE)),
-  id.name = "auto", help = NULL, component = rk.get.comp())
+rk.XML.dropdown(label, options = list(label = c(val = "", chk = FALSE, i18n =
+  NULL)), id.name = "auto", help = NULL, component = rk.get.comp(),
+  i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -12,8 +13,9 @@ rk.XML.dropdown(label, options = list(label = c(val = "", chk = FALSE)),
 \item{options}{A named list with options to choose from. The names of the list elements will become
 labels of the options, \code{val} defines the value to submit if the option is checked,
       and
-\code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-\code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.}
+\code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+are accepted as well.}
 
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"} and a label was provided,
@@ -29,6 +31,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.embed.Rd b/packages/rkwarddev/man/rk.XML.embed.Rd
index d0e6828..a44b3c6 100644
--- a/packages/rkwarddev/man/rk.XML.embed.Rd
+++ b/packages/rkwarddev/man/rk.XML.embed.Rd
@@ -4,7 +4,7 @@
 \title{Create XML node "embed" for RKWard plugins}
 \usage{
 rk.XML.embed(component, button = FALSE, label = "Options",
-  id.name = "auto")
+  id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{component}{A character string,
@@ -19,6 +19,12 @@ rk.XML.embed(component, button = FALSE, label = "Options",
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"},
       an ID will be generated automatically from the label and component strings.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.frame.Rd b/packages/rkwarddev/man/rk.XML.frame.Rd
index bb6a150..0d0bd46 100644
--- a/packages/rkwarddev/man/rk.XML.frame.Rd
+++ b/packages/rkwarddev/man/rk.XML.frame.Rd
@@ -4,7 +4,7 @@
 \title{Create XML node "frame" for RKWard plugins}
 \usage{
 rk.XML.frame(..., label = NULL, checkable = FALSE, chk = TRUE,
-  id.name = "auto")
+  id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{...}{Objects of class \code{XiMpLe.node}.}
@@ -21,6 +21,12 @@ If \code{"auto"} and a label was provided,
       an ID will be generated automatically from the label
 if presen, otherwise from the objects in the frame.
 If \code{NULL}, no ID will be given.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.input.Rd b/packages/rkwarddev/man/rk.XML.input.Rd
index acac262..117c316 100644
--- a/packages/rkwarddev/man/rk.XML.input.Rd
+++ b/packages/rkwarddev/man/rk.XML.input.Rd
@@ -4,7 +4,7 @@
 \title{Create XML node "input" for RKWard plugins}
 \usage{
 rk.XML.input(label, initial = NULL, size = "medium", required = FALSE,
-  id.name = "auto", help = NULL, component = rk.get.comp())
+  id.name = "auto", help = NULL, component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -29,6 +29,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.matrix.Rd b/packages/rkwarddev/man/rk.XML.matrix.Rd
index 5300caf..a3492b9 100644
--- a/packages/rkwarddev/man/rk.XML.matrix.Rd
+++ b/packages/rkwarddev/man/rk.XML.matrix.Rd
@@ -7,7 +7,7 @@ rk.XML.matrix(label, mode = "real", rows = 2, columns = 2, min = NULL,
   max = NULL, allow_missings = FALSE, allow_user_resize_columns = TRUE,
   allow_user_resize_rows = TRUE, fixed_width = FALSE,
   fixed_height = FALSE, horiz_headers = NULL, vert_headers = NULL,
-  id.name = "auto", help = NULL, component = rk.get.comp())
+  id.name = "auto", help = NULL, component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a label for the matrix.}
@@ -64,6 +64,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.menu.Rd b/packages/rkwarddev/man/rk.XML.menu.Rd
index 6159dde..be71c56 100644
--- a/packages/rkwarddev/man/rk.XML.menu.Rd
+++ b/packages/rkwarddev/man/rk.XML.menu.Rd
@@ -3,7 +3,7 @@
 \alias{rk.XML.menu}
 \title{Create XML "menu" node for RKWard plugins}
 \usage{
-rk.XML.menu(label, ..., index = -1, id.name = "auto")
+rk.XML.menu(label, ..., index = -1, id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a label for the menu.}
@@ -22,6 +22,12 @@ If \code{"auto"}, an ID will be generated automatically from the label. Otherwis
       if \code{...} is a list,
 \code{id.name} must have the same length and will be set in the same order to the menu levels.
 Used to place the menu in the global menu hierarchy.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.option.Rd b/packages/rkwarddev/man/rk.XML.option.Rd
index f095728..591abd2 100644
--- a/packages/rkwarddev/man/rk.XML.option.Rd
+++ b/packages/rkwarddev/man/rk.XML.option.Rd
@@ -3,7 +3,8 @@
 \alias{rk.XML.option}
 \title{Create XML node "option" for RKWard plugins}
 \usage{
-rk.XML.option(label, val = NULL, chk = FALSE, id.name = NULL)
+rk.XML.option(label, val = NULL, chk = FALSE, id.name = NULL,
+  i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -16,6 +17,12 @@ rk.XML.option(label, val = NULL, chk = FALSE, id.name = NULL)
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"} and a label was provided,
       an ID will be generated automatically from the label.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.optioncolumn.Rd b/packages/rkwarddev/man/rk.XML.optioncolumn.Rd
index 295f99f..47f9e82 100644
--- a/packages/rkwarddev/man/rk.XML.optioncolumn.Rd
+++ b/packages/rkwarddev/man/rk.XML.optioncolumn.Rd
@@ -4,7 +4,7 @@
 \title{Create XML node "optioncolumn" for RKWard plugins}
 \usage{
 rk.XML.optioncolumn(connect, modifier = NULL, label = TRUE,
-  external = FALSE, default = NULL, id.name = "auto")
+  external = FALSE, default = NULL, id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{connect}{Either a character string (the \code{id} of the property to connect this optioncolumn to),
@@ -31,6 +31,12 @@ If set to \code{TRUE} and you provide a XiMpLe node object to \code{connect},
 
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"}, an ID will be generated automatically from the \code{connect} object.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.plugin.Rd b/packages/rkwarddev/man/rk.XML.plugin.Rd
index 09383f5..65fb065 100644
--- a/packages/rkwarddev/man/rk.XML.plugin.Rd
+++ b/packages/rkwarddev/man/rk.XML.plugin.Rd
@@ -6,7 +6,7 @@
 rk.XML.plugin(name, dialog = NULL, wizard = NULL, logic = NULL,
   snippets = NULL, provides = NULL, help = TRUE, include = NULL,
   label = NULL, clean.name = TRUE, about = NULL, dependencies = NULL,
-  gen.info = TRUE, lang = rk.get.language())
+  gen.info = TRUE, lang = rk.get.language(), i18n = NULL)
 }
 \arguments{
 \item{name}{Character string,
@@ -56,6 +56,12 @@ that it was generated by \code{rkwarddev} and changes should be done to the scri
 
 \item{lang}{Character string,
       the language of the plugin. See \code{\link[rkwarddev:i18n]{i18n}} for details.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.doc}.
diff --git a/packages/rkwarddev/man/rk.XML.preview.Rd b/packages/rkwarddev/man/rk.XML.preview.Rd
index 4eca03e..7c20061 100644
--- a/packages/rkwarddev/man/rk.XML.preview.Rd
+++ b/packages/rkwarddev/man/rk.XML.preview.Rd
@@ -3,10 +3,16 @@
 \alias{rk.XML.preview}
 \title{Create XML node "preview" for RKWard plugins}
 \usage{
-rk.XML.preview(label = "Preview")
+rk.XML.preview(label = "Preview", i18n = NULL)
 }
 \arguments{
 \item{label}{A character string, text label for the preview checkbox.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.radio.Rd b/packages/rkwarddev/man/rk.XML.radio.Rd
index 24f4acc..e8595b6 100644
--- a/packages/rkwarddev/man/rk.XML.radio.Rd
+++ b/packages/rkwarddev/man/rk.XML.radio.Rd
@@ -3,8 +3,9 @@
 \alias{rk.XML.radio}
 \title{Create XML node "radio" for RKWard plugins}
 \usage{
-rk.XML.radio(label, options = list(label = c(val = NULL, chk = FALSE)),
-  id.name = "auto", help = NULL, component = rk.get.comp())
+rk.XML.radio(label, options = list(label = c(val = NULL, chk = FALSE, i18n =
+  NULL)), id.name = "auto", help = NULL, component = rk.get.comp(),
+  i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -12,21 +13,28 @@ rk.XML.radio(label, options = list(label = c(val = NULL, chk = FALSE)),
 \item{options}{A named list with options to choose from. The names of the list elements will become
 labels of the options, \code{val} defines the value to submit if the option is checked,
       and
-\code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-\code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.}
+\code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+are accepted as well.}
 
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"} and a label was provided,
       an ID will be generated automatically from the label.}
 
 \item{help}{Character string or list of character values and XiMpLe nodes,
-      will be used as the \code{text} value for a setting node in the .rkh file.
-Also needs \code{component} to be set accordingly!}
+      will be used as the \code{text} value for a setting
+node in the .rkh file. Also needs \code{component} to be set accordingly!}
 
 \item{component}{Character string,
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.saveobj.Rd b/packages/rkwarddev/man/rk.XML.saveobj.Rd
index 016587e..6370d3a 100644
--- a/packages/rkwarddev/man/rk.XML.saveobj.Rd
+++ b/packages/rkwarddev/man/rk.XML.saveobj.Rd
@@ -5,7 +5,7 @@
 \usage{
 rk.XML.saveobj(label, chk = FALSE, checkable = TRUE, initial = "auto",
   required = FALSE, id.name = "auto", help = NULL,
-  component = rk.get.comp())
+  component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -35,6 +35,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.select.Rd b/packages/rkwarddev/man/rk.XML.select.Rd
index f1f6b7b..8206814 100644
--- a/packages/rkwarddev/man/rk.XML.select.Rd
+++ b/packages/rkwarddev/man/rk.XML.select.Rd
@@ -3,8 +3,9 @@
 \alias{rk.XML.select}
 \title{Create XML node "select" for RKWard plugins}
 \usage{
-rk.XML.select(label, options = list(label = c(val = "", chk = FALSE)),
-  id.name = "auto", help = NULL, component = rk.get.comp())
+rk.XML.select(label, options = list(label = c(val = "", chk = FALSE, i18n =
+  NULL)), id.name = "auto", help = NULL, component = rk.get.comp(),
+  i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -12,8 +13,9 @@ rk.XML.select(label, options = list(label = c(val = "", chk = FALSE)),
 \item{options}{A named list with options to choose from. The names of the list elements will become
 labels of the options, \code{val} defines the value to submit if the option is selected,
       and
-\code{chk=TRUE} should be set in the one option which is selected by default. Objects generated with
-\code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.}
+\code{chk=TRUE} should be set in the one option which is selected by default. You might also provide an \code{i18n}
+for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+are accepted as well.}
 
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"} and a label was provided,
@@ -29,6 +31,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.spinbox.Rd b/packages/rkwarddev/man/rk.XML.spinbox.Rd
index 30e7636..448356d 100644
--- a/packages/rkwarddev/man/rk.XML.spinbox.Rd
+++ b/packages/rkwarddev/man/rk.XML.spinbox.Rd
@@ -5,7 +5,7 @@
 \usage{
 rk.XML.spinbox(label, min = NULL, max = NULL, initial = 0, real = TRUE,
   precision = 2, max.precision = 8, id.name = "auto", help = NULL,
-  component = rk.get.comp())
+  component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -40,6 +40,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.tabbook.Rd b/packages/rkwarddev/man/rk.XML.tabbook.Rd
index 4e91529..759d2bf 100644
--- a/packages/rkwarddev/man/rk.XML.tabbook.Rd
+++ b/packages/rkwarddev/man/rk.XML.tabbook.Rd
@@ -3,7 +3,8 @@
 \alias{rk.XML.tabbook}
 \title{Create XML node "tabbook" for RKWard plugins}
 \usage{
-rk.XML.tabbook(label = NULL, tabs = list(), id.name = "auto")
+rk.XML.tabbook(label = NULL, tabs = list(), id.name = "auto",
+  i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for this plugin element.}
@@ -14,6 +15,12 @@ You must provide one named element for each tab. Use \code{NULL} for tabs withou
 \item{id.name}{Character vector, unique IDs for the tabbook (first entry) and all tabs.
 If \code{"auto"}, IDs will be generated automatically from the labels.
 If \code{NULL}, no IDs will be given.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.text.Rd b/packages/rkwarddev/man/rk.XML.text.Rd
index 0ea5117..2e0ee2b 100644
--- a/packages/rkwarddev/man/rk.XML.text.Rd
+++ b/packages/rkwarddev/man/rk.XML.text.Rd
@@ -3,7 +3,7 @@
 \alias{rk.XML.text}
 \title{Create XML node "text" for RKWard plugins}
 \usage{
-rk.XML.text(text, type = "normal", id.name = "auto")
+rk.XML.text(text, type = "normal", id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{text}{Character string, the text to be displayed.}
@@ -13,6 +13,12 @@ rk.XML.text(text, type = "normal", id.name = "auto")
 \item{id.name}{Character string, a unique ID for this plugin element.
 If \code{"auto"}, an ID will be generated automatically from \code{text}.
 If \code{NULL}, no ID will be given.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.valueselector.Rd b/packages/rkwarddev/man/rk.XML.valueselector.Rd
index 8f4c9cc..c44d223 100644
--- a/packages/rkwarddev/man/rk.XML.valueselector.Rd
+++ b/packages/rkwarddev/man/rk.XML.valueselector.Rd
@@ -4,7 +4,7 @@
 \title{Create node "valueselector" for RKWard plugins}
 \usage{
 rk.XML.valueselector(label = NULL, options = list(label = c(val = NULL, chk
-  = FALSE)), id.name = "auto")
+  = FALSE, i18n = NULL)), id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for the value selection slot.
@@ -13,10 +13,17 @@ Must be set if \code{id.name="auto"}.}
 \item{options}{A named list with string values to choose from. The names of the list elements will become
 labels of the options, \code{val} defines the value to submit if the value is selected,
       and
-\code{chk=TRUE} should be set in the one option which is checked by default. Objects generated with
-\code{\link[rkwarddev:rk.XML.option]{rk.XML.option}} are accepted as well.}
+\code{chk=TRUE} should be set in the one option which is checked by default. You might also provide an \code{i18n}
+for this particular option (see \code{i18n}). Objects generated with \code{\link[rkwarddev:rk.XML.option]{rk.XML.option}}
+are accepted as well.}
 
 \item{id.name}{Character vector, unique ID for this element.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.valueslot.Rd b/packages/rkwarddev/man/rk.XML.valueslot.Rd
index af6d9d7..4953437 100644
--- a/packages/rkwarddev/man/rk.XML.valueslot.Rd
+++ b/packages/rkwarddev/man/rk.XML.valueslot.Rd
@@ -5,7 +5,7 @@
 \usage{
 rk.XML.valueslot(label, source, property = NULL, required = FALSE,
   multi = FALSE, duplicates = FALSE, min = 1, any = 1, max = 0,
-  id.name = "auto", help = NULL, component = rk.get.comp())
+  id.name = "auto", help = NULL, component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for the valueslot.}
@@ -48,6 +48,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.varselector.Rd b/packages/rkwarddev/man/rk.XML.varselector.Rd
index b684402..60367d7 100644
--- a/packages/rkwarddev/man/rk.XML.varselector.Rd
+++ b/packages/rkwarddev/man/rk.XML.varselector.Rd
@@ -3,13 +3,19 @@
 \alias{rk.XML.varselector}
 \title{Create node "varselector" for RKWard plugins}
 \usage{
-rk.XML.varselector(label = NULL, id.name = "auto")
+rk.XML.varselector(label = NULL, id.name = "auto", i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for the variable selection slot.
 Must be set if \code{id.name="auto"}.}
 
 \item{id.name}{Character vector, unique ID for this element.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.varslot.Rd b/packages/rkwarddev/man/rk.XML.varslot.Rd
index 54d73a8..910b3f3 100644
--- a/packages/rkwarddev/man/rk.XML.varslot.Rd
+++ b/packages/rkwarddev/man/rk.XML.varslot.Rd
@@ -6,7 +6,7 @@
 rk.XML.varslot(label, source, property = NULL, required = FALSE,
   multi = FALSE, duplicates = FALSE, min = 1, any = 1, max = 0,
   dim = 0, min.len = 0, max.len = NULL, classes = NULL, types = NULL,
-  id.name = "auto", help = NULL, component = rk.get.comp())
+  id.name = "auto", help = NULL, component = rk.get.comp(), i18n = NULL)
 }
 \arguments{
 \item{label}{Character string, a text label for the varslot.}
@@ -69,6 +69,12 @@ Also needs \code{component} to be set accordingly!}
       name of the component this node belongs to. Only needed if you
 want to use the scan features for automatic help file generation; needs \code{help} to be set
 accordingly, too!}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.XML.wizard.Rd b/packages/rkwarddev/man/rk.XML.wizard.Rd
index ec97db6..b694cae 100644
--- a/packages/rkwarddev/man/rk.XML.wizard.Rd
+++ b/packages/rkwarddev/man/rk.XML.wizard.Rd
@@ -3,7 +3,7 @@
 \alias{rk.XML.wizard}
 \title{Create XML wizard section for RKWard plugins}
 \usage{
-rk.XML.wizard(..., label = NULL, recommended = FALSE)
+rk.XML.wizard(..., label = NULL, recommended = FALSE, i18n = NULL)
 }
 \arguments{
 \item{...}{Objects of class \code{XiMpLe.node}}
@@ -13,6 +13,12 @@ rk.XML.wizard(..., label = NULL, recommended = FALSE)
 \item{recommended}{Logical,
       whether the wizard should be the recommended interface (unless the user has configured
 RKWard to default to a specific interface).}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{label} will be renamed into
+\code{noi18n_label}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.i18n.comment.Rd b/packages/rkwarddev/man/rk.i18n.comment.Rd
new file mode 100644
index 0000000..68cc140
--- /dev/null
+++ b/packages/rkwarddev/man/rk.i18n.comment.Rd
@@ -0,0 +1,22 @@
+% Generated by roxygen2 (4.0.2): do not edit by hand
+\name{rk.i18n.comment}
+\alias{rk.i18n.comment}
+\title{Create i18n comment for RKWard plugin code}
+\usage{
+rk.i18n.comment(text, prefix = "i18n:")
+}
+\arguments{
+\item{text}{Character string, the text to be displayed.}
+}
+\value{
+An object of class \code{XiMpLe.node}.
+}
+\description{
+This function is similar to rk.comment, but preceds the \code{text} with the
+keyword \code{"i18n:"} to give context to translators.
+}
+\examples{
+test.comment <- rk.i18n.comment("Added this text.")
+cat(pasteXML(test.comment))
+}
+
diff --git a/packages/rkwarddev/man/rk.rkh.caption.Rd b/packages/rkwarddev/man/rk.rkh.caption.Rd
index a45b8d0..5f78624 100644
--- a/packages/rkwarddev/man/rk.rkh.caption.Rd
+++ b/packages/rkwarddev/man/rk.rkh.caption.Rd
@@ -3,7 +3,7 @@
 \alias{rk.rkh.caption}
 \title{Create XML "caption" node for RKWard help pages}
 \usage{
-rk.rkh.caption(id, title = NULL)
+rk.rkh.caption(id, title = NULL, i18n = NULL)
 }
 \arguments{
 \item{id}{Either a character string (the \code{id} of the XML element to explain),
@@ -11,6 +11,12 @@ or an object of class \code{XiMpLe.node} (whose \code{id} will be extracted and
 
 \item{title}{Character string, title to be displayed. If \code{NULL}, the \code{label}
 of the element will be shown.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{title} will be renamed into
+\code{noi18n_title}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.link.Rd b/packages/rkwarddev/man/rk.rkh.link.Rd
index 521f072..1f2bd70 100644
--- a/packages/rkwarddev/man/rk.rkh.link.Rd
+++ b/packages/rkwarddev/man/rk.rkh.link.Rd
@@ -3,7 +3,7 @@
 \alias{rk.rkh.link}
 \title{Create XML "link" node for RKWard help pages}
 \usage{
-rk.rkh.link(href, text = NULL, type = "R")
+rk.rkh.link(href, text = NULL, type = "R", i18n = NULL)
 }
 \arguments{
 \item{href}{Character string, either the URL to link to, name of an R package or ID of
@@ -19,6 +19,10 @@ another plugin (see \code{type}).}
   \item{\code{"RK"}}{\code{href} is assumend to be the ID of another RKWard plugin, i.e.,
     the link generated will look like \code{rkward://component/<href>}.}
 }}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.related.Rd b/packages/rkwarddev/man/rk.rkh.related.Rd
index de057a6..543d92c 100644
--- a/packages/rkwarddev/man/rk.rkh.related.Rd
+++ b/packages/rkwarddev/man/rk.rkh.related.Rd
@@ -3,12 +3,16 @@
 \alias{rk.rkh.related}
 \title{Create XML "related" node for RKWard help pages}
 \usage{
-rk.rkh.related(..., text = NULL)
+rk.rkh.related(..., text = NULL, i18n = NULL)
 }
 \arguments{
 \item{...}{Objects of class \code{XiMpLe.node}. They must all have the name "link".}
 
 \item{text}{Character string, the text to be displayed.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.section.Rd b/packages/rkwarddev/man/rk.rkh.section.Rd
index df76c4c..1975c7e 100644
--- a/packages/rkwarddev/man/rk.rkh.section.Rd
+++ b/packages/rkwarddev/man/rk.rkh.section.Rd
@@ -3,7 +3,8 @@
 \alias{rk.rkh.section}
 \title{Create XML "section" node for RKWard help pages}
 \usage{
-rk.rkh.section(title, text = NULL, short = NULL, id.name = "auto")
+rk.rkh.section(title, text = NULL, short = NULL, id.name = "auto",
+  i18n = NULL)
 }
 \arguments{
 \item{title}{Character string, title to be displayed.}
@@ -14,6 +15,12 @@ rk.rkh.section(title, text = NULL, short = NULL, id.name = "auto")
 
 \item{id.name}{Character string, a unique ID for this element.
 If \code{"auto"}, an ID will be generated automatically from the \code{title} value.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{title} will be renamed into
+\code{noi18n_title}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.setting.Rd b/packages/rkwarddev/man/rk.rkh.setting.Rd
index 1f5d03b..271941d 100644
--- a/packages/rkwarddev/man/rk.rkh.setting.Rd
+++ b/packages/rkwarddev/man/rk.rkh.setting.Rd
@@ -3,7 +3,7 @@
 \alias{rk.rkh.setting}
 \title{Create XML "setting" node for RKWard help pages}
 \usage{
-rk.rkh.setting(id, text = NULL, title = NULL)
+rk.rkh.setting(id, text = NULL, title = NULL, i18n = NULL)
 }
 \arguments{
 \item{id}{Either a character string (the \code{id} of the XML element to explain),
@@ -13,6 +13,12 @@ or an object of class \code{XiMpLe.node} (whose \code{id} will be extracted and
 
 \item{title}{Character string, title to be displayed. If \code{NULL}, the \code{label}
 of the element will be shown.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node. If set to \code{FALSE},
+      the attribute \code{title} will be renamed into
+\code{noi18n_title}.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.summary.Rd b/packages/rkwarddev/man/rk.rkh.summary.Rd
index 45edf58..c53c6ae 100644
--- a/packages/rkwarddev/man/rk.rkh.summary.Rd
+++ b/packages/rkwarddev/man/rk.rkh.summary.Rd
@@ -3,10 +3,14 @@
 \alias{rk.rkh.summary}
 \title{Create XML "summary" node for RKWard help pages}
 \usage{
-rk.rkh.summary(text = NULL)
+rk.rkh.summary(text = NULL, i18n = NULL)
 }
 \arguments{
 \item{text}{Character string, the text to be displayed.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.technical.Rd b/packages/rkwarddev/man/rk.rkh.technical.Rd
index 3585731..4136a18 100644
--- a/packages/rkwarddev/man/rk.rkh.technical.Rd
+++ b/packages/rkwarddev/man/rk.rkh.technical.Rd
@@ -3,10 +3,14 @@
 \alias{rk.rkh.technical}
 \title{Create XML "technical" node for RKWard help pages}
 \usage{
-rk.rkh.technical(text = NULL)
+rk.rkh.technical(text = NULL, i18n = NULL)
 }
 \arguments{
 \item{text}{Character string, the text to be displayed.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.title.Rd b/packages/rkwarddev/man/rk.rkh.title.Rd
index be1203e..67826ee 100644
--- a/packages/rkwarddev/man/rk.rkh.title.Rd
+++ b/packages/rkwarddev/man/rk.rkh.title.Rd
@@ -3,10 +3,14 @@
 \alias{rk.rkh.title}
 \title{Create XML "title" node for RKWard help pages}
 \usage{
-rk.rkh.title(text = NULL)
+rk.rkh.title(text = NULL, i18n = NULL)
 }
 \arguments{
 \item{text}{Character string, the text to be displayed.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rk.rkh.usage.Rd b/packages/rkwarddev/man/rk.rkh.usage.Rd
index 71404ce..fa17564 100644
--- a/packages/rkwarddev/man/rk.rkh.usage.Rd
+++ b/packages/rkwarddev/man/rk.rkh.usage.Rd
@@ -3,10 +3,14 @@
 \alias{rk.rkh.usage}
 \title{Create XML "usage" node for RKWard help pages}
 \usage{
-rk.rkh.usage(text = NULL)
+rk.rkh.usage(text = NULL, i18n = NULL)
 }
 \arguments{
 \item{text}{Character string, the text to be displayed.}
+
+\item{i18n}{Either a character string or a named list with the optional element \code{context},
+to give some \code{i18n_context}
+information for this node.}
 }
 \value{
 An object of class \code{XiMpLe.node}.
diff --git a/packages/rkwarddev/man/rkwarddev-package.Rd b/packages/rkwarddev/man/rkwarddev-package.Rd
index ea2ae34..725dd2a 100644
--- a/packages/rkwarddev/man/rkwarddev-package.Rd
+++ b/packages/rkwarddev/man/rkwarddev-package.Rd
@@ -11,7 +11,7 @@ A collection of tools for RKWard plugin development.
 Package: \tab rkwarddev\cr
 Type: \tab Package\cr
 Version: \tab 0.06-6\cr
-Date: \tab 2014-11-09\cr
+Date: \tab 2014-11-23\cr
 Depends: \tab R (>= 2.9.0),methods,XiMpLe (>= 0.03-21),rkward (>= 0.5.7)\cr
 Enhances: \tab rkward\cr
 Encoding: \tab UTF-8\cr
diff --git a/packages/rkwarddev/man/show-methods.Rd b/packages/rkwarddev/man/show-methods.Rd
index bbff82b..9dda609 100644
--- a/packages/rkwarddev/man/show-methods.Rd
+++ b/packages/rkwarddev/man/show-methods.Rd
@@ -5,6 +5,7 @@
 \alias{show,-methods}
 \alias{show,rk.JS.arr-method}
 \alias{show,rk.JS.echo-method}
+\alias{show,rk.JS.i18n-method}
 \alias{show,rk.JS.ite-method}
 \alias{show,rk.JS.opt-method}
 \alias{show,rk.JS.oset-method}
@@ -24,6 +25,8 @@ show(object)
 \S4method{show}{rk.JS.var}(object)
 
 \S4method{show}{rk.JS.echo}(object)
+
+\S4method{show}{rk.JS.i18n}(object)
 }
 \arguments{
 \item{object}{An object of class \code{rk.JS.*}}





More information about the rkward-tracker mailing list