If you do `_("Foo %s" % bar)` then it will try and fail to translate the entire dynamically constructed string.

If you do `_("Foo %s") % bar` then it will have the translator translate a string that maintains the variable parts, and then get dynamically translated correctly.

Also note that if you have a string that contains more than one formatting thingy of the same type, then there is no possible way to handle translations for languages where different word order would make the order of the formatting thingies different in translations, so for those cases it's necessary to do something like

```python
_("Foo %(bar)s") % {'bar': some_value}
```
```