misp-book/translation/README.md

3.1 KiB

MISP and Internationalization (i18n)

Requirements

Please read the following CakePHP documentation about i18n & l10n: https://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

Add one .md per translation effort

Please add a file à la: ja_JP.md (Japanese_Japan) or it_CH.md (Italian_Switzerland), in which you briefly describe what the current status of your translation effort is and what has been translated and which parts might be gotchas. This would also be a good place to quickly explain what your language is about, like whether most technical terms are a translation from the original, an adaptation from the English word or perhaps you just mostly use English terms.

Style

Please follow whatever is the purest and most intelligible form of written language in the native tongue being translated.

Formatting

It is important to use correct formatting. This is wrong:

<p><?php echo __('Are you sure you want to delete Proposal #') . $id . '?' ?></p>

You want to have ultimate flexibility and that line should look more like this:

<p><?php echo __('Are you sure you want to delete Proposal #{$id}?');?></p>

In the above example we use an alternative notation of the format string in PHP. Using the above, the generated po-template file (default.pot) will have the name of the to-be-translated variable in the "msgid" part of the file. Which is easier to read then a non descriptive %s and allows the translator to have context on how the phrase is used in MISP.

In case you have HTML-Tags, move them out of the sentence, out of the php code if possible:

<p><?php echo __('<h1>Are you sure you want to:<br />Delete Proposal #%s?', $id);?></h1></p>
<p><h1><?php echo __('Are you sure you want to:%sDelete Proposal #{$id}?', '<br />');?></h1></p>

Issues

Some times it might be impossible to translate some phrases. Or you notice a certain bad formatting, or segmentation of sentences. In that case, please either open an Issue on Github

Quirks

Lines like this:

echo $this->Form->button('Submit', array('class' => 'btn btn-primary'));$

Should be prepared as such:

echo $this->Form->button(__('Submit'), array('class' => 'btn btn-primary'));

Or another case:

echo $this->Form->input('sharing_group_id', array(
    'options' => array($sharingGroups),
    'label' => 'Sharing Group',
));

To:

echo $this->Form->input('sharing_group_id', array(
    'options' => array($sharingGroups),
    'label' => __('Sharing Group'),
));

Let us know!

Are you planning to do a translation or localization? Please open a ticket on the issue system. This will allow us and others to track what is being worked on. You can keep it very light, as all the details should be in your markdown in misp-book.

Reach out to the community

Want to chat with other MISP contributors? Make sure to join our MISP Gitter channel.