If you typed in more than one word for a stream with multiple words in
it's name, it would not show up in the search list. This fixes that
and adds some more tests covering the entire functionality of the
filter.
If both users haven't posted in the current topic, then
as a second order sort, check which user has posted first
in the stream as a whole.
Fixes part of #5956; we still need to sort by sending in the
organization.
compilemessages command now does all the heavy lifting by creating a
language_name_map.json file under locale directory. This file is used
by get_language_list to retrieve the require information.
Fixes: #6486
The server sends down lists of unread message ids in various
buckets, and we now use those on the client to provide more
complete counts of unread messages.
Use jQuery DOM construction methods, rather than string concatenation,
to keep things structured and to stay clear of the lint rules introduced
in ee6235d71.
Until we get search bubbles, the search text is kind of a
distracting detail for most users. This just makes the
height 2px smaller for now. This will also make more text
show up on mobile web.
If we use string concatenation to span i18n strings across multiple
lines then we end with such strings to be translated by the translators:
```
"This is the first line"\n + "This is the second line"
```
We should use variables in i18n strings to give proper context to the
translators. If the pattern is this:
```
i18n.t("Count " + count + " items")
```
Then it will be captured like this:
```
{"Count" + count + "items": ""}
```
Which is not good for the translators.
This comes from, in the dev environment:
./manage.py makemessages -l en -l ja
tx push -s -l ja
tx pull -f -l ja --mode=developer
The makemessages and `tx push` provide Transifex with the updated set
of strings and metadata. I'm not entirely sure why that's necessary,
but without it a lone `tx pull` left the server crashing with numerous
zerver.models.DoesNotExist exceptions.
(So to be precise, there was another `tx pull` at the start, just like
the final one. That shouldn't matter for the result, though.)
This responsively hides the last row of testimonials that only has a
single one it the row at certain widths in which the grid is a [4, 4,
1] layout, making it simply [4, 4].