Commit 727ea5a5 authored by Evan Prodromou's avatar Evan Prodromou

Merge branch '0.9.x' into 1.0.x

parents 439fd589 ecf32880
......@@ -93,6 +93,7 @@ class ApiGroupListAction extends ApiBareAuthAction
parent::handle($args);
$sitename = common_config('site', 'name');
// TRANS: %s is a user name
$title = sprintf(_("%s's groups"), $this->user->nickname);
$taguribase = TagURI::base();
$id = "tag:$taguribase:Groups";
......@@ -100,10 +101,12 @@ class ApiGroupListAction extends ApiBareAuthAction
'usergroups',
array('nickname' => $this->user->nickname)
);
$subtitle = sprintf(
_("Groups %1\$s is a member of on %2\$s."),
$this->user->nickname,
$sitename
// TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
_("%1\$s groups %2\$s is a member of."),
$sitename,
$this->user->nickname
);
switch($this->format) {
......
......@@ -168,4 +168,11 @@ class BlockAction extends ProfileFormAction
return;
}
}
function showScripts()
{
parent::showScripts();
$this->autofocus('form_action-yes');
}
}
......@@ -214,5 +214,12 @@ class GroupblockAction extends Action
303);
}
}
function showScripts()
{
parent::showScripts();
$this->autofocus('form_action-yes');
}
}
......@@ -212,6 +212,7 @@ class GroupMemberListItem extends ProfileListItem
}
}
function showGroupBlockForm()
{
$user = common_current_user();
......@@ -224,7 +225,24 @@ class GroupMemberListItem extends ProfileListItem
$bf->show();
$this->out->elementEnd('li');
}
}
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] = 'nofollow';
}
}
}
......
......@@ -32,8 +32,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
}
require_once INSTALLDIR.'/lib/profilelist.php';
/**
* This class outputs a paginated list of profiles self-tagged with a given tag
*
......@@ -124,8 +122,8 @@ class PeopletagAction extends Action
$profile->query(sprintf($qry, $this->tag, $lim));
$pl = new ProfileList($profile, $this);
$cnt = $pl->show();
$ptl = new PeopleTagList($profile, $this); // pass the ammunition
$cnt = $ptl->show();
$this->pagination($this->page > 1,
$cnt > PROFILES_PER_PAGE,
......@@ -146,3 +144,33 @@ class PeopletagAction extends Action
}
}
class PeopleTagList extends ProfileList
{
function newListItem($profile)
{
return new PeopleTagListItem($profile, $this->action);
}
}
class PeopleTagListItem extends ProfileListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'peopletag')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'peopletag')) {
$aAttrs['rel'] = 'nofollow';
}
}
}
......@@ -388,18 +388,23 @@ class ShowgroupAction extends GroupDesignAction
$this->elementStart('div', array('id' => 'entity_members',
'class' => 'section'));
$this->element('h2', null, _('Members'));
if (Event::handle('StartShowGroupMembersMiniList', array($this))) {
$pml = new ProfileMiniList($member, $this);
$cnt = $pml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
}
$this->element('h2', null, _('Members'));
$gmml = new GroupMembersMiniList($member, $this);
$cnt = $gmml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
}
if ($cnt > MEMBERS_PER_SECTION) {
$this->element('a', array('href' => common_local_url('groupmembers',
array('nickname' => $this->group->nickname))),
_('All members'));
}
if ($cnt > MEMBERS_PER_SECTION) {
$this->element('a', array('href' => common_local_url('groupmembers',
array('nickname' => $this->group->nickname))),
_('All members'));
Event::handle('EndShowGroupMembersMiniList', array($this));
}
$this->elementEnd('div');
......@@ -502,3 +507,26 @@ class GroupAdminSection extends ProfileSection
return null;
}
}
class GroupMembersMiniList extends ProfileMiniList
{
function newListItem($profile)
{
return new GroupMembersMiniListItem($profile, $this->action);
}
}
class GroupMembersMiniListItem extends ProfileMiniListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'members')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
}
......@@ -163,4 +163,22 @@ class SubscribersListItem extends SubscriptionListItem
$bf->show();
}
}
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
function homepageAttributes()
{
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] = 'nofollow';
}
}
}
......@@ -573,6 +573,9 @@ class Memcached_DataObject extends Safe_DataObject
if (!empty($this->id)) {
$id .= ':' . $this->id;
}
if ($message instanceof PEAR_Error) {
$message = $message->getMessage();
}
throw new ServerException("[$id] DB_DataObject error [$type]: $message");
}
......
......@@ -300,4 +300,8 @@ $default =
),
'api' =>
array('realm' => null),
'nofollow' =>
array('subscribers' => true,
'members' => true,
'peopletag' => true),
);
......@@ -289,6 +289,7 @@ function get_nice_language_list()
*/
function get_all_languages() {
return array(
'af' => array('q' => 0.8, 'lang' => 'af', 'name' => 'Afrikaans', 'direction' => 'ltr'),
'ar' => array('q' => 0.8, 'lang' => 'ar', 'name' => 'Arabic', 'direction' => 'rtl'),
'arz' => array('q' => 0.8, 'lang' => 'arz', 'name' => 'Egyptian Spoken Arabic', 'direction' => 'rtl'),
'bg' => array('q' => 0.8, 'lang' => 'bg', 'name' => 'Bulgarian', 'direction' => 'ltr'),
......
......@@ -139,25 +139,30 @@ class ProfileAction extends OwnerDesignAction
$this->elementStart('div', array('id' => 'entity_subscribers',
'class' => 'section'));
$this->element('h2', null, _('Subscribers'));
if (Event::handle('StartShowSubscribersMiniList', array($this))) {
$cnt = 0;
$this->element('h2', null, _('Subscribers'));
if (!empty($profile)) {
$pml = new ProfileMiniList($profile, $this);
$cnt = $pml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
$cnt = 0;
if (!empty($profile)) {
$sml = new SubscribersMiniList($profile, $this);
$cnt = $sml->show();
if ($cnt == 0) {
$this->element('p', null, _('(None)'));
}
}
}
if ($cnt > PROFILES_PER_MINILIST) {
$this->elementStart('p');
$this->element('a', array('href' => common_local_url('subscribers',
array('nickname' => $this->profile->nickname)),
'class' => 'more'),
_('All subscribers'));
$this->elementEnd('p');
if ($cnt > PROFILES_PER_MINILIST) {
$this->elementStart('p');
$this->element('a', array('href' => common_local_url('subscribers',
array('nickname' => $this->profile->nickname)),
'class' => 'more'),
_('All subscribers'));
$this->elementEnd('p');
}
Event::handle('EndShowSubscribersMiniList', array($this));
}
$this->elementEnd('div');
......@@ -266,3 +271,23 @@ class ProfileAction extends OwnerDesignAction
}
}
class SubscribersMiniList extends ProfileMiniList
{
function newListItem($profile)
{
return new SubscribersMiniListItem($profile, $this->action);
}
}
class SubscribersMiniListItem extends ProfileMiniListItem
{
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
if (common_config('nofollow', 'subscribers')) {
$aAttrs['rel'] .= ' nofollow';
}
return $aAttrs;
}
}
......@@ -181,9 +181,8 @@ class ProfileListItem extends Widget
function showAvatar()
{
$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
$this->out->elementStart('a', array('href' => $this->profile->profileurl,
'class' => 'url entry-title',
'rel' => 'contact'));
$aAttrs = $this->linkAttributes();
$this->out->elementStart('a', $aAttrs);
$this->out->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE),
'class' => 'photo avatar',
'width' => AVATAR_STREAM_SIZE,
......@@ -223,8 +222,8 @@ class ProfileListItem extends Widget
{
if (!empty($this->profile->homepage)) {
$this->out->text(' ');
$this->out->elementStart('a', array('href' => $this->profile->homepage,
'class' => 'url'));
$aAttrs = $this->homepageAttributes();
$this->out->elementStart('a', $aAttrs);
$this->out->raw($this->highlight($this->profile->homepage));
$this->out->elementEnd('a');
}
......@@ -299,4 +298,17 @@ class ProfileListItem extends Widget
{
return htmlspecialchars($text);
}
function linkAttributes()
{
return array('href' => $this->profile->profileurl,
'class' => 'url entry-title',
'rel' => 'contact');
}
function homepageAttributes()
{
return array('href' => $this->profile->homepage,
'class' => 'url');
}
}
......@@ -81,20 +81,36 @@ class ProfileMiniListItem extends ProfileListItem
function show()
{
$this->out->elementStart('li', 'vcard');
$this->out->elementStart('a', array('title' => $this->profile->getBestName(),
'href' => $this->profile->profileurl,
'rel' => 'contact member',
'class' => 'url'));
$avatar = $this->profile->getAvatar(AVATAR_MINI_SIZE);
$this->out->element('img', array('src' => (($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_MINI_SIZE)),
'width' => AVATAR_MINI_SIZE,
'height' => AVATAR_MINI_SIZE,
'class' => 'avatar photo',
'alt' => ($this->profile->fullname) ?
$this->profile->fullname :
$this->profile->nickname));
$this->out->element('span', 'fn nickname', $this->profile->nickname);
$this->out->elementEnd('a');
$this->out->elementEnd('li');
if (Event::handle('StartProfileListItemProfileElements', array($this))) {
if (Event::handle('StartProfileListItemAvatar', array($this))) {
$aAttrs = $this->linkAttributes();
$this->out->elementStart('a', $aAttrs);
$avatar = $this->profile->getAvatar(AVATAR_MINI_SIZE);
$this->out->element('img', array('src' => (($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_MINI_SIZE)),
'width' => AVATAR_MINI_SIZE,
'height' => AVATAR_MINI_SIZE,
'class' => 'avatar photo',
'alt' => ($this->profile->fullname) ?
$this->profile->fullname :
$this->profile->nickname));
$this->out->element('span', 'fn nickname', $this->profile->nickname);
$this->out->elementEnd('a');
Event::handle('EndProfileListItemAvatar', array($this));
}
$this->out->elementEnd('li');
}
}
// default; overridden for nofollow lists
function linkAttributes()
{
$aAttrs = parent::linkAttributes();
$aAttrs['title'] = $this->profile->getBestName();
$aAttrs['rel'] = 'contact member'; // @todo: member? always?
$aAttrs['class'] = 'url';
return $aAttrs;
}
}
Localizations for StatusNet are being maintained through TranslateWiki:
http://translatewiki.net/wiki/Translating:StatusNet
Note if you are working with a direct git checkout, you will need to build
the binary .mo files from the .po source files for translations to work
in the web app.
Ongoing translation work should be done there to ensure updates are
integrated into future versions of StatusNet.
If gettext and GNU make are installed, you can simply run 'make' in this
directory to build them.
== Building runtime translations ==
If you are working with a direct git checkout or have customized any
message files, you will need to build binary .mo files from the .po
source files for translations to work in the web app.
If gettext and GNU make are installed, you can simply run 'make' in the
main StatusNet directory, and all core and plugin localizations will be
recompiled.
== Customization ==
User interface texts in any language can be customized by editing the
texts in the .po source files, then rebuilding the binary .mo files
used at runtime.
The default/US English texts can be overridden by adding "translations"
to en/LC_MESSAGES/statusnet.po.
Note that texts you change in one language will not affect other
languages, which are selected based on visitors' browser preferences.
If you customizations include important information or links,
you may wish to disable languages that you haven't customized so that
visitors always get your text.
To disable all non-English languages add this to your config.php (you
will need to edit both the en and en_GB files):
$config['site']['languages'] = array(
'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
'en-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'),
'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
);
To disable everything including British English variant:
$config['site']['languages'] = array(
'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English', 'direction' => 'ltr'),
);
== Plugins ==
This locale directory contains translations for the core StatusNet
software only. Plugins may have their own locale subdirectories and
their own .po and .mo files as well, so if customizing you may need
to poke at those as well.
This diff is collapsed.
......@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 13:27+0000\n"
"PO-Revision-Date: 2010-04-03 13:27:34+0000\n"
"POT-Creation-Date: 2010-04-05 18:54+0000\n"
"PO-Revision-Date: 2010-04-05 18:54:34+0000\n"
"Language-Team: Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.17alpha (r64515); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.17alpha (r64621); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ar\n"
"X-Message-Group: out-statusnet\n"
......@@ -191,7 +191,7 @@ msgstr ""
#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138
#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
#: actions/apigroupleave.php:141 actions/apigrouplist.php:133
#: actions/apigroupleave.php:141 actions/apigrouplist.php:136
#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
#: actions/apigroupshow.php:115 actions/apihelptest.php:88
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
......@@ -464,14 +464,16 @@ msgstr "لست عضوًا في هذه المجموعة"
msgid "Could not remove user %1$s from group %2$s."
msgstr "لم يمكن إزالة المستخدم %1$s من المجموعة %2$s."
#: actions/apigrouplist.php:96
#. TRANS: %s is a user name
#: actions/apigrouplist.php:97
#, php-format
msgid "%s's groups"
msgstr "مجموعات %s"
#: actions/apigrouplist.php:104
#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
#: actions/apigrouplist.php:107
#, fuzzy, php-format
msgid "Groups %1$s is a member of on %2$s."
msgid "%1$s groups %2$s is a member of."
msgstr "المجموعات التي %s عضو فيها"
#: actions/apigrouplistall.php:90 actions/usergroups.php:62
......
......@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 13:27+0000\n"
"PO-Revision-Date: 2010-04-03 13:27:37+0000\n"
"POT-Creation-Date: 2010-04-05 18:54+0000\n"
"PO-Revision-Date: 2010-04-05 18:54:37+0000\n"
"Language-Team: Egyptian Spoken Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.17alpha (r64515); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.17alpha (r64621); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: arz\n"
"X-Message-Group: out-statusnet\n"
......@@ -197,7 +197,7 @@ msgstr ""
#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138
#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
#: actions/apigroupleave.php:141 actions/apigrouplist.php:133
#: actions/apigroupleave.php:141 actions/apigrouplist.php:136
#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
#: actions/apigroupshow.php:115 actions/apihelptest.php:88
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
......@@ -470,14 +470,16 @@ msgstr ""
msgid "Could not remove user %1$s from group %2$s."
msgstr "ما نفعش يتشال اليوزر %1$s من الجروپ %2$s."
#: actions/apigrouplist.php:96
#. TRANS: %s is a user name
#: actions/apigrouplist.php:97
#, php-format
msgid "%s's groups"
msgstr "مجموعات %s"
#: actions/apigrouplist.php:104
#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
#: actions/apigrouplist.php:107
#, fuzzy, php-format
msgid "Groups %1$s is a member of on %2$s."
msgid "%1$s groups %2$s is a member of."
msgstr "المجموعات التى %s عضو فيها"
#: actions/apigrouplistall.php:90 actions/usergroups.php:62
......
......@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 13:27+0000\n"
"PO-Revision-Date: 2010-04-03 13:27:40+0000\n"
"POT-Creation-Date: 2010-04-05 18:54+0000\n"
"PO-Revision-Date: 2010-04-05 18:54:40+0000\n"
"Language-Team: Bulgarian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.17alpha (r64515); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.17alpha (r64621); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: bg\n"
"X-Message-Group: out-statusnet\n"
......@@ -191,7 +191,7 @@ msgstr "Бележки от %1$s и приятели в %2$s."
#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138
#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
#: actions/apigroupleave.php:141 actions/apigrouplist.php:133
#: actions/apigroupleave.php:141 actions/apigrouplist.php:136
#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
#: actions/apigroupshow.php:115 actions/apihelptest.php:88
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
......@@ -471,14 +471,16 @@ msgstr "Не членувате в тази група."
msgid "Could not remove user %1$s from group %2$s."
msgstr "Грешка при проследяване — потребителят не е намерен."
#: actions/apigrouplist.php:96
#. TRANS: %s is a user name
#: actions/apigrouplist.php:97
#, php-format
msgid "%s's groups"
msgstr "Групи на %s"
#: actions/apigrouplist.php:104
#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
#: actions/apigrouplist.php:107
#, fuzzy, php-format
msgid "Groups %1$s is a member of on %2$s."
msgid "%1$s groups %2$s is a member of."
msgstr "Групи, в които участва %s"
#: actions/apigrouplistall.php:90 actions/usergroups.php:62
......
This diff is collapsed.
......@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 13:27+0000\n"
"PO-Revision-Date: 2010-04-03 13:27:46+0000\n"
"POT-Creation-Date: 2010-04-05 18:54+0000\n"
"PO-Revision-Date: 2010-04-05 18:54:46+0000\n"
"Language-Team: Catalan\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.17alpha (r64515); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.17alpha (r64621); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ca\n"
"X-Message-Group: out-statusnet\n"
......@@ -200,7 +200,7 @@ msgstr "Actualitzacions de %1$s i amics a %2$s!"
#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138
#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
#: actions/apigroupleave.php:141 actions/apigrouplist.php:133
#: actions/apigroupleave.php:141 actions/apigrouplist.php:136
#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
#: actions/apigroupshow.php:115 actions/apihelptest.php:88
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
......@@ -489,14 +489,16 @@ msgstr "No sou un membre del grup."
msgid "Could not remove user %1$s from group %2$s."
msgstr "No s'ha pogut suprimir l'usuari %s del grup %s."
#: actions/apigrouplist.php:96
#. TRANS: %s is a user name
#: actions/apigrouplist.php:97
#, php-format
msgid "%s's groups"
msgstr "Grups de %s"
#: actions/apigrouplist.php:104
#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
#: actions/apigrouplist.php:107
#, fuzzy, php-format
msgid "Groups %1$s is a member of on %2$s."
msgid "%1$s groups %2$s is a member of."
msgstr "%s grups són membres de"
#: actions/apigrouplistall.php:90 actions/usergroups.php:62
......
......@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 13:27+0000\n"
"PO-Revision-Date: 2010-04-03 13:27:49+0000\n"
"POT-Creation-Date: 2010-04-05 18:54+0000\n"
"PO-Revision-Date: 2010-04-05 18:54:49+0000\n"
"Language-Team: Czech\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.17alpha (r64515); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.17alpha (r64621); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: cs\n"