]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/plugins/po.mdwn
more thoughts on underlays
[git.ikiwiki.info.git] / doc / plugins / po.mdwn
index 7165015ab5f8ba201090cfeb73ddfb0b9ba9132a..f28c8b188cd1bfbf1dea53b3d5b63ce0b12c1fa3 100644 (file)
@@ -5,6 +5,8 @@ This plugin adds support for multi-lingual wikis, translated with
 gettext, using [po4a](http://po4a.alioth.debian.org/).
 
 It depends on the Perl `Locale::Po4a::Po` library (`apt-get install po4a`).
 gettext, using [po4a](http://po4a.alioth.debian.org/).
 
 It depends on the Perl `Locale::Po4a::Po` library (`apt-get install po4a`).
+As detailed bellow in the security section, `po4a` is subject to
+denial-of-service attacks before version 0.35.
 
 [[!toc levels=2]]
 
 
 [[!toc levels=2]]
 
@@ -53,7 +55,7 @@ Supported languages
 languages, such as:
 
         po_slave_languages => { 'fr' => 'Français',
 languages, such as:
 
         po_slave_languages => { 'fr' => 'Français',
-                                'es' => 'Castellano',
+                                'es' => 'Español',
                                 'de' => 'Deutsch',
         }
 
                                 'de' => 'Deutsch',
         }
 
@@ -70,17 +72,19 @@ worry about excluding them explicitly from this [[ikiwiki/PageSpec]].
 Internal links
 --------------
 
 Internal links
 --------------
 
+### Links targets
+
 The `po_link_to` option in `ikiwiki.setup` is used to decide how
 internal links should be generated, depending on web server features
 and site-specific preferences.
 
 The `po_link_to` option in `ikiwiki.setup` is used to decide how
 internal links should be generated, depending on web server features
 and site-specific preferences.
 
-### Default linking behavior
+#### Default linking behavior
 
 If `po_link_to` is unset, or set to `default`, ikiwiki's default
 linking behavior is preserved: `\[[destpage]]` links to the master
 language's page.
 
 
 If `po_link_to` is unset, or set to `default`, ikiwiki's default
 linking behavior is preserved: `\[[destpage]]` links to the master
 language's page.
 
-### Link to current language
+#### Link to current language
 
 If `po_link_to` is set to `current`, `\[[destpage]]` links to the
 `destpage`'s version written in the current page's language, if
 
 If `po_link_to` is set to `current`, `\[[destpage]]` links to the
 `destpage`'s version written in the current page's language, if
@@ -89,7 +93,7 @@ available, *i.e.*:
 * `foo/destpage/index.LL.html` if `usedirs` is enabled
 * `foo/destpage.LL.html` if `usedirs` is disabled
 
 * `foo/destpage/index.LL.html` if `usedirs` is enabled
 * `foo/destpage.LL.html` if `usedirs` is disabled
 
-### Link to negotiated language
+#### Link to negotiated language
 
 If `po_link_to` is set to `negotiated`, `\[[page]]` links to the
 negotiated preferred language, *i.e.* `foo/page/`.
 
 If `po_link_to` is set to `negotiated`, `\[[page]]` links to the
 negotiated preferred language, *i.e.* `foo/page/`.
@@ -102,7 +106,6 @@ negotiated preferred language, *i.e.* `foo/page/`.
 * if the web server does not support Content Negotiation, setting
   `po_link_to` to `negotiated` will produce a unusable website.
 
 * if the web server does not support Content Negotiation, setting
   `po_link_to` to `negotiated` will produce a unusable website.
 
-
 Server support
 ==============
 
 Server support
 ==============
 
@@ -147,24 +150,9 @@ display things only on translatable or translation pages.
 The `OTHERLANGUAGES` loop provides ways to display other languages'
 versions of the same page, and the translations' status.
 
 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">&nbsp;%)
-             </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
 
 * `URL` - url to the page
 * `CODE` - two-letters language code
@@ -175,15 +163,8 @@ The following variables are available inside the loop (for every page in):
 ### Display the current translation status
 
 The `PERCENTTRANSLATED` variable is set to the translation
 ### 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
 -------------------------
 
 Additional PageSpec tests
 -------------------------
@@ -228,8 +209,8 @@ preferred `$EDITOR`, without needing to be online.
 Markup languages support
 ------------------------
 
 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
 correctly on the slave pages:
 
 * [[reStructuredText|rst]]: anonymous hyperlinks and internal
@@ -243,7 +224,7 @@ correctly on the slave pages:
 Security
 ========
 
 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
 and its dependencies.
 
 When using po4a older than 0.35, it is recommended to uninstall
@@ -256,49 +237,65 @@ TODO
 Better links
 ------------
 
 Better links
 ------------
 
-### Page title in links
-
-Using the fix to
+Once the fix to
 [[bugs/pagetitle_function_does_not_respect_meta_titles]] from
 [[bugs/pagetitle_function_does_not_respect_meta_titles]] from
-[[intrigeri]]'s `meta` branch, the generated links' text is based on
-the page titles set with the [[meta|plugins/meta]] plugin. This has to
-be merged into ikiwiki upstream, though.
-
-Robustness tests
-----------------
-
-### Enabling/disabling the plugin
-
-* 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**
-
-### Changing the plugin config
-
-* 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)
-
-### Creating/deleting/renaming pages
-
-All cases of master/slave page creation/deletion/rename, both via RCS
-and via CGI, have been tested.
-
-### Misc
-
-* 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**
-
-Misc. bugs
-----------
+[[intrigeri]]'s `meta` branch is merged into ikiwiki upstream, the
+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
+ea753782b222bf4ba2fb4683b6363afdd9055b64, which should be reverted
+once [[intrigeri]]'s `meta` branch is merged.
+
+An integration branch, called `meta-po`, merges [[intrigeri]]'s `po`
+and `meta` branches, and thus has thise additional features.
+
+
+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]] 
+
+po files in underlay
+--------------------
+
+I think this plugin doesn't yet allow po files to be present in an
+underlay to translate files also from the underlay.
+
+In `istranslatablefile`, it specifically checks that
+the file is present in srcdir. 
+
+Problem with this is that it precludes using po to translate
+the basewiki (work which is well under way for Danish BTW),
+since the translated po files cannot really be used.
+
+A further problem comes if one wants to use a non-English language as the
+`po_master_language`. It would be good to get a translated
+basewiki, taking po files from the underlay and using them as the primary
+page sources, but this plugin doesn't yet support that. 
+
+And, maybe it shouldn't? A user would not expect to see a po file when
+editing the index page of their wiki, just because they're using a
+different language. Instead, we might want to build localized .mdwn files
+for the basewiki, and then ikiwiki would just use that translated underlay.
+The when the user edits index, they get a nice mdwn file to start from.
+
+So, we seem to have two cases, in one po files from the underlay should be
+used, in the other not. Hmm. Support both?
+--[[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]] 
 
 Documentation
 -------------
 
 Documentation
 -------------