-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Investigate using po files with context #16
Comments
Creating a pot file with context doesn't seem very hard. Right now: utils:::.getHelpFile(help("mean")) |>
rd_flatten_po() |>
write_string() |>
writeLines("text.pot") creates this file msgctxt "title"
msgid "Arithmetic Mean"
msgstr ""
msgctxt "name"
msgid "mean"
msgstr ""
msgctxt "alias"
msgid "mean"
msgstr ""
msgctxt "alias"
msgid "mean.default"
msgstr ""
msgctxt "keyword"
msgid "univar"
msgstr ""
msgctxt "description"
msgid " Generic function for the (trimmed) arithmetic mean.
"
msgstr ""
msgctxt "usage"
msgid "mean(x, \dots{})
\method{mean}{default}(x, trim = 0, na.rm = FALSE, \dots{})
"
msgstr ""
msgctxt "arguments.x"
msgid "an \R{} object. Currently there are methods for
numeric/logical vectors and \link[=Dates]{date},
\link{date-time} and \link{time interval} objects. Complex vectors
are allowed for \code{trim = 0}, only."
msgstr ""
msgctxt "arguments.trim"
msgid "the fraction (0 to 0.5) of observations to be
trimmed from each end of \code{x} before the mean is computed.
Values of trim outside that range are taken as the nearest endpoint.
"
msgstr ""
msgctxt "arguments.na.rm"
msgid "a logical evaluating to \code{TRUE} or \code{FALSE}
indicating whether \code{NA} values should be stripped before the
computation proceeds."
msgstr ""
msgctxt "arguments.\dots{}"
msgid "further arguments passed to or from other methods."
msgstr ""
msgctxt "value"
msgid " If \code{trim} is zero (the default), the arithmetic mean of the
values in \code{x} is computed, as a numeric or complex vector of
length one. If \code{x} is not logical (coerced to numeric), numeric
(including integer) or complex, \code{NA_real_} is returned, with a warning.
If \code{trim} is non-zero, a symmetrically trimmed mean is computed
with a fraction of \code{trim} observations deleted from each end
before the mean is computed.
"
msgstr ""
msgctxt "references"
msgid " Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth & Brooks/Cole.
"
msgstr ""
msgctxt "seealso"
msgid " \code{\link{weighted.mean}}, \code{\link{mean.POSIXct}},
\code{\link{colMeans}} for row and column means.
"
msgstr ""
msgctxt "examples"
msgid "x <- c(0:10, 50)
xm <- mean(x)
c(xm, mean(x, trim = 0.10))
"
msgstr "" I can open it with Poedit, which shows these useful coloured titles The multiline strings don't work. The dot is not useful for specifying the structure because arguments can have dots in them. What could we use here? |
I think you can use space in the context as well, e.g. |
Ah, the latest commit solved the newline issue. Using this would solve a lot of issues and simplify the code a lot. Not need to have a custom translation function. No need for brittlely matching the language. Translation modules would store translations as common messages and then hey would be translated with For #12 , I guess we could use |
Ah, nice. |
This might be a dumb question, but I can't seem to be able to use the translations. I created a new package, added a test translation file msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.4\n"
msgid "stringunica"
msgstr "uniquestring"
msgctxt "agromet_informe title"
msgid "Formato de salida para Informes"
msgstr "Report format"
msgctxt "agromet_informe arguments ..."
msgid ""
"cualquier argumento que requiera \\code{\\link[rmarkdown:pdf_document]"
"{rmarkdown::pdf_document()}}."
msgstr ""
"any argument required by \\code{\\link[rmarkdown:pdf_document]{rmarkdown::"
"pdf_document()}}." compiled the translation with poedit and finally installed the package. I was expecting to be able to access the translation string with gettext("stringunica", domain = "R-agroclimatico.en")
#> [1] "stringunica" Any tips on what might I be missing? @daroczig @MichaelChirico |
can you confirm that means creating a .mo file in the "expected" place within the inst/ directory? can you point me to the relevant package directory? |
Ah.. I'm an idiot. No, I'm just putting the .mo file in the po directory. I thought |
hmm yes po_compile() is supposed to handle that for you. can you try with verbose=TRUE and possibly share a repro directory with me to play around with? |
Strange, I've just run po_compile with debug and now it's working. I probably missed some critical step. Now the next step is know how to use gettext with context. |
BTW: I've just uploaded the repo here: https://github.com/eliocamp/agroclimatico.en |
Here's the documentation on context: https://www.gnu.org/software/gettext/manual/html_node/Contexts.html FWIW R itself does not use any of this as of now: https://github.com/search?q=repo%3Ar-devel%2Fr-svn%20%2Fpgettext%2F&type=code So we'll probably need to start with an R wrapper around |
Oof, it was too good to be true xD. But adding context support to R might be a good sideffect. |
@daroczig mentioned that .po files can have "context" which we could use to map to the structure of the .Rd file.
The text was updated successfully, but these errors were encountered: