Merge branch 'prv/po' into pub/po
commit
265e857f60
|
@ -134,6 +134,7 @@ sub refreshpot ($) { #{{{
|
|||
# compulsory since this module prevents us from using the porefs option.
|
||||
my %po_options = ('porefs' => 'none');
|
||||
$doc->{TT}{po_out}=Locale::Po4a::Po->new(\%po_options);
|
||||
$doc->{TT}{po_out}->set_charset('utf-8');
|
||||
# do the actual work
|
||||
$doc->parse;
|
||||
$doc->writepo($potfile);
|
||||
|
@ -203,8 +204,8 @@ sub needsbuild () { #{{{
|
|||
IkiWiki::refresh();
|
||||
IkiWiki::saveindex();
|
||||
# refresh module's private variables
|
||||
%filtered=undef;
|
||||
%translations=undef;
|
||||
undef %filtered;
|
||||
undef %translations;
|
||||
foreach my $page (keys %pagesources) {
|
||||
istranslation($page);
|
||||
}
|
||||
|
@ -390,6 +391,7 @@ sub otherlanguages ($) { #{{{
|
|||
sub pagetemplate (@) { #{{{
|
||||
my %params=@_;
|
||||
my $page=$params{page};
|
||||
my $destpage=$params{destpage};
|
||||
my $template=$params{template};
|
||||
|
||||
if (istranslation($page) && $template->query(name => "percenttranslated")) {
|
||||
|
@ -416,6 +418,24 @@ sub pagetemplate (@) { #{{{
|
|||
}
|
||||
}
|
||||
}
|
||||
# Rely on IkiWiki::Render's genpage() to decide wether
|
||||
# a discussion link should appear on $page; this is not
|
||||
# totally accurate, though: some broken links may be generated
|
||||
# when cgiurl is disabled.
|
||||
# This compromise avoids some code duplication, and will probably
|
||||
# prevent future breakage when ikiwiki internals change.
|
||||
# Known limitations are preferred to future random bugs.
|
||||
if ($template->param('discussionlink') && istranslation($page)) {
|
||||
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
|
||||
$template->param('discussionlink' => htmllink(
|
||||
$page,
|
||||
$destpage,
|
||||
$masterpage . '/' . gettext("Discussion"),
|
||||
noimageinline => 1,
|
||||
forcesubpage => 0,
|
||||
linktext => gettext("Discussion"),
|
||||
));
|
||||
}
|
||||
} # }}}
|
||||
|
||||
sub istranslatable ($) { #{{{
|
||||
|
|
|
@ -196,6 +196,22 @@ Also, when the plugin has just been enabled, or when a page has just
|
|||
been declared as being translatable, the needed POT and PO files are
|
||||
created, and the PO files are checked into version control.
|
||||
|
||||
Discussion pages
|
||||
----------------
|
||||
|
||||
Discussion should happen in the language in which the pages are written for
|
||||
real, *i.e.* the "master" one. If discussion pages are enabled, "slave" pages
|
||||
therefore link to the "master" page's discussion page.
|
||||
|
||||
Translating
|
||||
-----------
|
||||
|
||||
One can edit the PO files using ikiwiki's CGI (a message-by-message interface
|
||||
could also be implemented at some point).
|
||||
|
||||
If [[tips/untrusted_git_push]] is setup, one can edit the PO files in her
|
||||
preferred `$EDITOR`, without needing to be online.
|
||||
|
||||
TODO
|
||||
====
|
||||
|
||||
|
@ -221,36 +237,53 @@ Security checks
|
|||
gettext/po4a rough corners
|
||||
--------------------------
|
||||
|
||||
- new translations created in the web interface must get proper charset/encoding
|
||||
gettext metadata, else the next automatic PO update removes any non-ascii
|
||||
chars; possible solution: put such metadata into the Pot file, and let it
|
||||
propagate
|
||||
- fix the duplicated PO header mysterious bug
|
||||
- fix the "duplicate message definition" error when updating a PO
|
||||
file; do PO files need normalizing? (may be a side effect of
|
||||
previous bug)
|
||||
- fix infinite loop when synchronizing two ikiwiki (when checkouts
|
||||
live in different directories): say bla.fr.po has been updated in
|
||||
repo2; pulling repo2 from repo1 seems to trigger a PO update, that
|
||||
changes bla.fr.po in repo1; then pushing repo1 to repo2 triggers
|
||||
a PO update, that changes bla.fr.po in repo2; etc.; fixed in
|
||||
`629968fc89bced6727981c0a1138072631751fee` ?
|
||||
`629968fc89bced6727981c0a1138072631751fee`?
|
||||
- new translations created in the web interface must get proper charset/encoding
|
||||
gettext metadata, else the next automatic PO update removes any non-ascii
|
||||
chars; possible solution: put such metadata into the Pot file, and let it
|
||||
propagate; should be fixed in `773de05a7a1ee68d2bed173367cf5e716884945a`, time
|
||||
will tell.
|
||||
|
||||
Misc. improvements
|
||||
------------------
|
||||
|
||||
### preview
|
||||
|
||||
preview does not work for PO files.
|
||||
|
||||
### automatic POT/PO update
|
||||
|
||||
Use the `change` hook instead of `needsbuild`?
|
||||
|
||||
### page titles
|
||||
|
||||
Use nice page titles from meta plugin in links, as inline already does.
|
||||
Use nice page titles from meta plugin in links, as inline already does. This is
|
||||
actually a duplicate for
|
||||
[[bugs/pagetitle_function_does_not_respect_meta_titles]], which might be fixed
|
||||
by something like [[todo/using_meta_titles_for_parentlinks]].
|
||||
|
||||
### websetup
|
||||
|
||||
Which configuration settings are safe enough for websetup?
|
||||
|
||||
### parentlinks
|
||||
|
||||
When the wiki home page is translatable, the parentlinks plugin sets
|
||||
`./index.html` as its translations' single parent link. Ideally, the home page's
|
||||
translations should get no parent link at all, just like the version written in
|
||||
the master language.
|
||||
|
||||
### backlinks
|
||||
|
||||
If a given translatable `sourcepage.mdwn` links to \[[destpage]],
|
||||
`sourcepage.LL.po` also link to \[[destpage]], and the latter has the master
|
||||
page *and* all its translations listed in the backlinks.
|
||||
|
||||
Translation quality assurance
|
||||
-----------------------------
|
||||
|
||||
|
@ -262,43 +295,3 @@ A new `cansave` type of hook would be needed to implement this.
|
|||
|
||||
Note: committing to the underlying repository is a way to bypass
|
||||
this check.
|
||||
|
||||
Translating online
|
||||
------------------
|
||||
|
||||
As PO is a wiki page type, we already have an online PO editor, that
|
||||
is ikiwiki's CGI.
|
||||
|
||||
**FIXME** preview does not work for PO files.
|
||||
|
||||
A message-by-message interface could also be implemented at some
|
||||
point; a nice way to do offline translation work (without VCS access)
|
||||
still has to be offered, though.
|
||||
|
||||
Translating offline without VCS access
|
||||
--------------------------------------
|
||||
|
||||
The following workflow should be made possible for translators without
|
||||
VCS access who need to edit the PO files in another editor than a web
|
||||
browser:
|
||||
|
||||
- download the page's PO file
|
||||
- use any PO editor to update the translation
|
||||
- upload the updated PO file
|
||||
|
||||
Implementation note: a generic mechanism to upload a page's source is
|
||||
needed: it's only an alternative way to allow saving a the modified
|
||||
page's source with the CGI.
|
||||
|
||||
### Short-term workflow
|
||||
|
||||
A possible workaround is:
|
||||
|
||||
- pretend to edit the PO file online
|
||||
- copy the PO file content from the textarea
|
||||
- cancel the edit
|
||||
- paste the content into a local file.
|
||||
- edit the local file in any PO editor
|
||||
- pretend to edit the PO file online
|
||||
- paste the modified local file's content into the edit textarea
|
||||
- save
|
||||
|
|
Loading…
Reference in New Issue