languages, such as:
po_slave_languages => { 'fr' => 'Français',
- 'es' => 'Castellano',
+ 'es' => 'Español',
'de' => 'Deutsch',
}
Using Apache `mod_negotiation` makes it really easy to have Apache
serve any page in the client's preferred language, if available.
-This is the default Debian Apache configuration.
+
+Add 'Options MultiViews' to the wiki directory's configuration in Apache.
When `usedirs` is enabled, one has to set `DirectoryIndex index` for
the wiki context.
language code) for the wiki context can help to ensure
`bla/page/index.en.html` is served as `Content-Language: LL`.
+For details, see [Apache's documentation](http://httpd.apache.org/docs/2.2/content-negotiation.html).
+
lighttpd
--------
The `OTHERLANGUAGES` loop provides ways to display other languages'
versions of the same page, and the translations' status.
-One typically adds the following code to `templates/page.tmpl`:
-
- <TMPL_IF NAME="OTHERLANGUAGES">
- <div id="otherlanguages">
- <ul>
- <TMPL_LOOP NAME="OTHERLANGUAGES">
- <li>
- <a href="<TMPL_VAR NAME="URL">"><TMPL_VAR NAME="LANGUAGE"></a>
- <TMPL_UNLESS NAME="MASTER">
- (<TMPL_VAR NAME="PERCENT"> %)
- </TMPL_UNLESS>
- </li>
- </TMPL_LOOP>
- </ul>
- </div>
- </TMPL_IF>
-
-The following variables are available inside the loop (for every page in):
+An example of its use can be found in the default
+`templates/page.tmpl`. In case you want to customize it, the following
+variables are available inside the loop (for every page in):
* `URL` - url to the page
* `CODE` - two-letters language code
### Display the current translation status
The `PERCENTTRANSLATED` variable is set to the translation
-completeness, expressed in percent, on "slave" pages.
-
-One can use it this way:
-
- <TMPL_IF NAME="ISTRANSLATION">
- <div id="percenttranslated">
- <TMPL_VAR NAME="PERCENTTRANSLATED">
- </div>
- </TMPL_IF>
+completeness, expressed in percent, on "slave" pages. It is used by
+the default `templates/page.tmpl`.
Additional PageSpec tests
-------------------------
Markup languages support
------------------------
-Markdown is well supported. Some other markup languages supported by
-ikiwiki mostly work, but some pieces of syntax are not rendered
+[[Markdown|mdwn]] is well supported. Some other markup languages supported
+by ikiwiki mostly work, but some pieces of syntax are not rendered
correctly on the slave pages:
* [[reStructuredText|rst]]: anonymous hyperlinks and internal
Security
========
-[[./security]] contains a detailed security analysis of this plugin
+[[po/discussion]] contains a detailed security analysis of this plugin
and its dependencies.
When using po4a older than 0.35, it is recommended to uninstall
generated links' text will be optionally based on the page titles set
with the [[meta|plugins/meta]] plugin, and will thus be translatable.
It will also allow displaying the translation status in links to slave
-pages. Both were implemented, and reverted in commit **FIXME**, which
-should be reverted once [[intrigeri]]'s `meta` branch is merged.
+pages. Both were implemented, and reverted in commit
+ea753782b222bf4ba2fb4683b6363afdd9055b64, which should be reverted
+once [[intrigeri]]'s `meta` branch is merged.
-Robustness tests
-----------------
+An integration branch, called `meta-po`, merges [[intrigeri]]'s `po`
+and `meta` branches, and thus has this additional features.
-### Enabling/disabling the plugin
+Self links
+----------
+
+If a page contains a WikiLink to itself, ikiwiki does not normally
+turn that into a hyperlink. However, if a translated page contains a
+WikiLink to itself, a hyperlink is inserted, at least with the default
+`po_link_to` the link points to the English version of the page. Is there a
+good reason for that to be done? --[[Joey]]
+
+> The commit 0113c69d4fb in my po branch might fix this. --[[intrigeri]]
+
+>> It may fix it in passing, but shouldn't it also be fixed for the other
+>> `po_link_to` styles? (Also, if `mybestlink` is going to always
+>> just return `bestlink` in this case, there seems no reason to inject
+>> it.) --[[Joey]]
+
+Language display order
+----------------------
+
+Jonas pointed out that one might want to control the order that links to
+other languages are listed, for various reasons. Currently, there is no
+order, as `po_slave_languages` is a hash. It would need to be converted
+to an array to support this. (If twere done, twere best done quickly.)
+--[[Joey]]
+
+Duplicate %links ?
+------------------
+
+I notice code in the scan hook that seems to assume
+that %links will accumulate duplicate links for a page.
+That used to be so, but the bug was fixed. Does this mean
+that po might be replacing the only link on a page, in error?
+--[[Joey]]
+
+> It would replace it. The only problematic case is when another
+> plugin has its own reasons, in its `scan` hook, to add a page
+> that is already there to `$links{$page}`. This other plugin's
+> effect might then be changed by po's `scan` hook... which could
+> be either good (better overall l10n) or bad (break the other
+> plugin's goal). --[[intrigeri]]
+
+>> Right.. well, the cases where links are added is very small.
+>> Grepping for `add_link`, it's just done by link, camelcase, meta, and
+>> tag. All of these are supposed to work just link regular links
+>> so I'd think that is ok. We could probably remove the currently scary
+>> comment about only wanting to change the first link. --[[Joey]]
+
+>>> Commit 3c2bffe21b91684 in my po branch does this. --[[intrigeri]]
+
+Name of toplevel index page
+---------------------------
+
+Normally at the top index page of a wiki, you see the wiki name at
+the top. However, at the top *translated* index page, you see something
+like "index.da". --[[Joey]]
+
+> I suggest changing `Render.pm`, line 115, to replace the `$page eq 'index'`
+> test with a predicate call such as isindexpage($page). Such a predicate
+> function could then be overriden by the po plugin. --[[intrigeri]]
+
+>> Could do that, but if you have such a function it's natural to want to
+>> use it elsewhere. Not clear to me it would make sense for po to override
+>> such a function if it were used in some of the other places that compare
+>> to index.
+>>
+>> The other option would be for po to override the template setting.
+>> --[[Joey]]
+
+>>> Great idea. Commit 6c0f9c691c3df3a in my po branch does it. --[[intrigeri]]
+
+Pagespecs
+---------
-* enabling the plugin with `po_translatable_pages` set to blacklist: **OK**
-* enabling the plugin with `po_translatable_pages` set to whitelist: **OK**
-* enabling the plugin without `po_translatable_pages` set: **OK**
-* disabling the plugin: **OK**
+I was suprised that, when using the map directive, a pagespec of "*"
+listed all the translated pages as well as regular pages. That can
+make a big difference to an existing wiki when po is turned on,
+and seems generally not wanted.
+(OTOH, you do want to match translated pages by
+default when locking pages.) --[[Joey]]
-### Changing the plugin config
+Edit links on untranslated pages
+--------------------------------
-* adding existing pages to `po_translatable_pages`: **OK**
-* removing existing pages from `po_translatable_pages`: **OK**
-* adding a language to `po_slave_languages`: **OK**
-* removing a language from `po_slave_languages`: **OK**
-* changing `po_master_language`: **OK**
-* replacing `po_master_language` with a language previously part of
- `po_slave_languages`: needs two rebuilds, but **OK** (this is quite
- a perverse test actually)
+If a page is not translated yet, the "translated" version of it
+displays wikilinks to other, existing (but not yet translated?)
+pages as edit links, as if those pages do not exist.
-### Creating/deleting/renaming pages
+That's really confusing, especially as clicking such a link
+brings up an edit form to create a new, english page.
-All cases of master/slave page creation/deletion/rename, both via RCS
-and via CGI, have been tested.
+This is with po_link_to=current or negotiated. With default, it doesn't
+happen..
-### Misc
+Also, this may only happen if the page being linked to is coming from an
+underlay, and the underlays lack translation to a given language.
+--[[Joey]]
-* general test with `usedirs` disabled: **OK**
-* general test with `indexpages` enabled: **not OK**
-* general test with `po_link_to=default` with `userdirs` enabled: **OK**
-* general test with `po_link_to=default` with `userdirs` disabled: **OK**
+Double commits of po files
+--------------------------
-Misc. bugs
-----------
+When adding a new english page, the po files are created, committed,
+and then committed again. The second commit makes this change:
+
+ -"Content-Type: text/plain; charset=utf-8\n"
+ -"Content-Transfer-Encoding: ENCODING"
+ +"Content-Type: text/plain; charset=UTF-8\n"
+ +"Content-Transfer-Encoding: ENCODING\n"
+
+Same thing happens when a change to an existing page triggers a po file
+update. --[[Joey]]
+
+Ugly messages with empty files
+------------------------------
+
+If there are empty .mdwn files, the po plugin displays some ugly messages.
+
+Translation of directives
+-------------------------
+
+If a translated page contains a directive, it may expand to some english
+text, or text in whatever single language ikiwiki is configured to "speak".
+
+Maybe there could be a way to switch ikiwiki to speaking another language
+when building a non-english page? Then the directives would get translated.
Documentation
-------------