mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Add Simplified Chinese language.
Update language popup. + Merge conflict origin/master
This commit is contained in:
commit
101f956fa8
25 changed files with 1055 additions and 458 deletions
|
|
@ -30,12 +30,21 @@ function AdminGeneral()
|
|||
};
|
||||
});
|
||||
});
|
||||
|
||||
this.mainLanguageFullName = ko.computed(function () {
|
||||
return Utils.convertLangName(this.mainLanguage());
|
||||
}, this);
|
||||
|
||||
this.languagesOptions = ko.computed(function () {
|
||||
return _.map(oData.languages(), function (sLanguage) {
|
||||
var
|
||||
sName = Utils.convertLangName(sLanguage),
|
||||
sEn = Utils.convertLangName(sLanguage, true)
|
||||
;
|
||||
|
||||
return {
|
||||
'optValue': sLanguage,
|
||||
'optText': Utils.convertLangName(sLanguage)
|
||||
'optText': sName + (sEn !== sName ? ' (' + sEn + ')' : '')
|
||||
};
|
||||
});
|
||||
});
|
||||
|
|
@ -120,3 +129,8 @@ AdminGeneral.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
AdminGeneral.prototype.selectLanguage = function ()
|
||||
{
|
||||
kn.showScreenPopup(PopupsLanguagesViewModel);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -570,7 +570,7 @@ RainLoopApp.prototype.bootstart = function ()
|
|||
bTwitter = this.settingsGet('AllowTwitterSocial')
|
||||
;
|
||||
|
||||
if (!this.settingsGet('RemoteChangePassword'))
|
||||
if (!this.settingsGet('AllowChangePassword'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsChangePasswordScreen);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1187,11 +1187,13 @@ Utils.microtime = function ()
|
|||
/**
|
||||
*
|
||||
* @param {string} sLanguage
|
||||
* @param {boolean=} bEng = false
|
||||
* @return {string}
|
||||
*/
|
||||
Utils.convertLangName = function (sLanguage)
|
||||
Utils.convertLangName = function (sLanguage, bEng)
|
||||
{
|
||||
return Utils.i18n('LANGS_NAMES/LANG_' + sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
return Utils.i18n('LANGS_NAMES' + (true === bEng ? '_EN' : '') + '/LANG_' +
|
||||
sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ function WebMailDataStorage()
|
|||
this.devPassword = '';
|
||||
|
||||
this.accountEmail = ko.observable('');
|
||||
this.accountLogin = ko.observable('');
|
||||
this.accountIncLogin = ko.observable('');
|
||||
this.accountOutLogin = ko.observable('');
|
||||
this.projectHash = ko.observable('');
|
||||
|
||||
this.threading = ko.observable(false);
|
||||
this.lastFoldersHash = '';
|
||||
|
||||
this.remoteSuggestions = false;
|
||||
this.remoteChangePassword = false;
|
||||
|
||||
// system folders
|
||||
this.sentFolder = ko.observable('');
|
||||
|
|
@ -389,7 +389,8 @@ WebMailDataStorage.prototype.populateDataOnStart = function()
|
|||
AbstractData.prototype.populateDataOnStart.call(this);
|
||||
|
||||
this.accountEmail(RL.settingsGet('Email'));
|
||||
this.accountLogin(RL.settingsGet('Login'));
|
||||
this.accountIncLogin(RL.settingsGet('IncLogin'));
|
||||
this.accountOutLogin(RL.settingsGet('OutLogin'));
|
||||
this.projectHash(RL.settingsGet('ProjectHash'));
|
||||
|
||||
this.displayName(RL.settingsGet('DisplayName'));
|
||||
|
|
@ -399,7 +400,6 @@ WebMailDataStorage.prototype.populateDataOnStart = function()
|
|||
this.lastFoldersHash = RL.local().get(Enums.ClientSideKeyName.FoldersLashHash) || '';
|
||||
|
||||
this.remoteSuggestions = !!RL.settingsGet('RemoteSuggestions');
|
||||
this.remoteChangePassword = !!RL.settingsGet('RemoteChangePassword');
|
||||
|
||||
this.devEmail = RL.settingsGet('DevEmail');
|
||||
this.devLogin = RL.settingsGet('DevLogin');
|
||||
|
|
|
|||
|
|
@ -1,4 +1,11 @@
|
|||
|
||||
.b-admin-general {
|
||||
}
|
||||
|
||||
|
||||
.b-admin-general {
|
||||
.flag-selector {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.flag-name {
|
||||
border-bottom: 1px dashed #555;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
&.modal {
|
||||
z-index: 1103;
|
||||
width: 520px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
&.exp {
|
||||
width: 521px;
|
||||
width: 501px;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
display: inline-block;
|
||||
padding: 5px 15px;
|
||||
margin: 2px 5px;
|
||||
width: 200px;
|
||||
width: 180px;
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,26 +11,40 @@ function PopupsLanguagesViewModel()
|
|||
this.exp = ko.observable(false);
|
||||
|
||||
this.languages = ko.computed(function () {
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
return _.map(RL.data().languages(), function (sLanguage) {
|
||||
return {
|
||||
'key': sLanguage,
|
||||
'selected': sLanguage === sCurrent,
|
||||
'selected': ko.observable(false),
|
||||
'fullName': Utils.convertLangName(sLanguage)
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
RL.data().mainLanguage.subscribe(function () {
|
||||
this.resetMainLanguage();
|
||||
}, this);
|
||||
}
|
||||
|
||||
Utils.extendAsViewModel('PopupsLanguagesViewModel', PopupsLanguagesViewModel);
|
||||
|
||||
PopupsLanguagesViewModel.prototype.languageEnName = function (sLanguage)
|
||||
{
|
||||
return Utils.convertLangName(sLanguage, true);
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.resetMainLanguage = function ()
|
||||
{
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
_.each(this.languages(), function (oItem) {
|
||||
oItem['selected'](oItem['key'] === sCurrent);
|
||||
});
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onShow = function ()
|
||||
{
|
||||
// var self = this;
|
||||
// _.defer(function () {
|
||||
// self.exp(true);
|
||||
// });
|
||||
this.exp(true);
|
||||
|
||||
this.resetMainLanguage();
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onHide = function ()
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.4.0",
|
||||
"release": "511",
|
||||
"version": "1.4.1",
|
||||
"release": "512",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "Gruntfile.js",
|
||||
|
|
|
|||
|
|
@ -4,36 +4,85 @@ LANG_EN_US = "English (US)"
|
|||
LANG_EN_GB = "English (UK)"
|
||||
LANG_EN_CA = "English (Canadian)"
|
||||
|
||||
LANG_NL = "Nederlands (Dutch)"
|
||||
LANG_NL_NL = "Nederlands (Dutch)"
|
||||
LANG_NL = "Nederlands"
|
||||
LANG_NL_NL = "Nederlands"
|
||||
|
||||
LANG_RU = "Русский (Russian)"
|
||||
LANG_RU_RU = "Русский (Russian)"
|
||||
LANG_RU = "Русский"
|
||||
LANG_RU_RU = "Русский"
|
||||
|
||||
LANG_DE = "Deutsch (German)"
|
||||
LANG_DE_DE = "Deutsch (German)"
|
||||
LANG_DE = "Deutsch"
|
||||
LANG_DE_DE = "Deutsch"
|
||||
|
||||
LANG_FR = "Français (French)"
|
||||
LANG_FR = "Français"
|
||||
LANG_FR_FR = "Français (France)"
|
||||
LANG_FR_CA = "Français (Canada)"
|
||||
|
||||
LANG_PT = "Português (Portugal)"
|
||||
LANG_PT = "Português"
|
||||
LANG_PT_PT = "Português (Portugal)"
|
||||
LANG_PT_BR = "Português (Brasil)"
|
||||
|
||||
LANG_ES = "Español (Spanish)"
|
||||
LANG_ES = "Español"
|
||||
LANG_ES_ES = "Español (España)"
|
||||
LANG_ES_LA = "Español (Spanish)"
|
||||
LANG_ES_LA = "Español"
|
||||
|
||||
LANG_IT = "Italiano (Italian)"
|
||||
LANG_IT_IT = "Italiano (Italian)"
|
||||
LANG_IT = "Italiano"
|
||||
LANG_IT_IT = "Italiano"
|
||||
|
||||
LANG_LV = "Latviešu (Latvian)"
|
||||
LANG_LV_LV = "Latviešu (Latvian)"
|
||||
LANG_LV = "Latviešu"
|
||||
LANG_LV_LV = "Latviešu"
|
||||
|
||||
LANG_IS = "Íslenska (Icelandic)"
|
||||
LANG_IS_IS = "Íslenska (Icelandic)"
|
||||
LANG_IS = "Íslenska"
|
||||
LANG_IS_IS = "Íslenska"
|
||||
|
||||
LANG_JA = "日本語 (Japanese)"
|
||||
LANG_JP = "日本語 (Japanese)"
|
||||
LANG_JA_JP = "日本語 (Japanese)"
|
||||
LANG_JA = "日本語"
|
||||
LANG_JP = "日本語"
|
||||
LANG_JA_JP = "日本語"
|
||||
|
||||
LANG_ZH_TW = "中文(台灣)"
|
||||
LANG_ZH_CN = "中文(简体)"
|
||||
LANG_ZH_HK = "中文(香港)"
|
||||
|
||||
[LANGS_NAMES_EN]
|
||||
LANG_EN = "English"
|
||||
LANG_EN_US = "English (US)"
|
||||
LANG_EN_GB = "English (UK)"
|
||||
LANG_EN_CA = "English (Canadian)"
|
||||
|
||||
LANG_NL = "Dutch"
|
||||
LANG_NL_NL = "Dutch"
|
||||
|
||||
LANG_RU = "Russian"
|
||||
LANG_RU_RU = "Russian"
|
||||
|
||||
LANG_DE = "German"
|
||||
LANG_DE_DE = "German"
|
||||
|
||||
LANG_FR = "French"
|
||||
LANG_FR_FR = "French (France)"
|
||||
LANG_FR_CA = "France (Canada)"
|
||||
|
||||
LANG_PT = "Portuguese"
|
||||
LANG_PT_PT = "Portuguese (Portugal)"
|
||||
LANG_PT_BR = "Portuguese (Brazil)"
|
||||
|
||||
LANG_ES = "Spanish"
|
||||
LANG_ES_ES = "Spanish"
|
||||
LANG_ES_LA = "Spanish"
|
||||
|
||||
LANG_IT = "Italian"
|
||||
LANG_IT_IT = "Italian"
|
||||
|
||||
LANG_LV = "Latvian"
|
||||
LANG_LV_LV = "Latvian"
|
||||
|
||||
LANG_IS = "Icelandic"
|
||||
LANG_IS_IS = "Icelandic"
|
||||
|
||||
LANG_JA = "Japanese"
|
||||
LANG_JP = "Japanese"
|
||||
LANG_JA_JP = "Japanese"
|
||||
|
||||
LANG_CN = "Chinese"
|
||||
LANG_ZH_TW = "Traditional Chinese (Taiwan)"
|
||||
LANG_ZH_CN = "Simplified Chinese (China)"
|
||||
LANG_ZH_HK = "Traditional Chinese (Hong Kong)"
|
||||
|
|
@ -23,17 +23,17 @@ class FetchResponse
|
|||
*
|
||||
* @param \MailSo\Imap\Response $oImapResponse
|
||||
*/
|
||||
private function __construct(&$oImapResponse)
|
||||
private function __construct($oImapResponse)
|
||||
{
|
||||
$this->oImapResponse =& $oImapResponse;
|
||||
$this->oImapResponse = $oImapResponse;
|
||||
$this->aEnvelopeCache = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \MailSo\Imap\Response &$oImapResponse
|
||||
* @param \MailSo\Imap\Response $oImapResponse
|
||||
* @return \MailSo\Imap\FetchResponse
|
||||
*/
|
||||
public static function NewInstance(&$oImapResponse)
|
||||
public static function NewInstance($oImapResponse)
|
||||
{
|
||||
return new self($oImapResponse);
|
||||
}
|
||||
|
|
@ -133,22 +133,22 @@ class FetchResponse
|
|||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function &GetFetchValue($sFetchItemName)
|
||||
public function GetFetchValue($sFetchItemName)
|
||||
{
|
||||
$mReturn = null;
|
||||
$bNextIsValue = false;
|
||||
|
||||
if (Enumerations\FetchType::INDEX === $sFetchItemName)
|
||||
{
|
||||
$mReturn =& $this->oImapResponse->ResponseList[1];
|
||||
$mReturn = $this->oImapResponse->ResponseList[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($this->oImapResponse->ResponseList[3] as &$mItem)
|
||||
foreach ($this->oImapResponse->ResponseList[3] as $mItem)
|
||||
{
|
||||
if ($bNextIsValue)
|
||||
{
|
||||
$mReturn =& $mItem;
|
||||
$mReturn = $mItem;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -176,7 +176,7 @@ class FetchResponse
|
|||
|
||||
if (isset($this->oImapResponse->ResponseList[3]) && \is_array($this->oImapResponse->ResponseList[3]))
|
||||
{
|
||||
foreach ($this->oImapResponse->ResponseList[3] as &$mItem)
|
||||
foreach ($this->oImapResponse->ResponseList[3] as $mItem)
|
||||
{
|
||||
if ($bNextIsValue)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -898,7 +898,7 @@ class ImapClient extends \MailSo\Net\NetClient
|
|||
|
||||
$aReturn = array();
|
||||
$oImapResponse = null;
|
||||
foreach ($aResult as &$oImapResponse)
|
||||
foreach ($aResult as $oImapResponse)
|
||||
{
|
||||
if (FetchResponse::IsValidFetchImapResponse($oImapResponse))
|
||||
{
|
||||
|
|
@ -1089,13 +1089,13 @@ class ImapClient extends \MailSo\Net\NetClient
|
|||
private function validateThreadItem($aValue)
|
||||
{
|
||||
$mResult = false;
|
||||
if (is_numeric($aValue))
|
||||
if (\is_numeric($aValue))
|
||||
{
|
||||
$mResult = (int) $aValue;
|
||||
}
|
||||
else if (is_array($aValue))
|
||||
else if (\is_array($aValue))
|
||||
{
|
||||
if (1 === count($aValue) && is_numeric($aValue[0]))
|
||||
if (1 === count($aValue) && \is_numeric($aValue[0]))
|
||||
{
|
||||
$mResult = (int) $aValue[0];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,12 +93,40 @@ class Account
|
|||
return 0 < \strlen($this->sParentEmail) ? $this->sParentEmail : $this->sEmail;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function IncLogin()
|
||||
{
|
||||
$sLogin = $this->sLogin;
|
||||
if ($this->oDomain->IncShortLogin())
|
||||
{
|
||||
$sLogin = \MailSo\Base\Utils::GetAccountNameFromEmail($this->sLogin);
|
||||
}
|
||||
|
||||
return $sLogin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function OutLogin()
|
||||
{
|
||||
$sLogin = $this->sLogin;
|
||||
if ($this->oDomain->OutShortLogin())
|
||||
{
|
||||
$sLogin = \MailSo\Base\Utils::GetAccountNameFromEmail($this->sLogin);
|
||||
}
|
||||
|
||||
return $sLogin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function Login()
|
||||
{
|
||||
return $this->sLogin;
|
||||
return $this->IncLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ class Actions
|
|||
if ($oAccount)
|
||||
{
|
||||
$sFileName = \str_replace('{user:email}', \strtolower($oAccount->Email()), $sFileName);
|
||||
$sFileName = \str_replace('{user:login}', $oAccount->Login(), $sFileName);
|
||||
$sFileName = \str_replace('{user:login}', $oAccount->IncLogin(), $sFileName);
|
||||
$sFileName = \str_replace('{user:domain}', \strtolower($oAccount->Domain()->Name()), $sFileName);
|
||||
}
|
||||
|
||||
|
|
@ -876,7 +876,7 @@ class Actions
|
|||
'AllowThemes' => (bool) $oConfig->Get('webmail', 'allow_themes', true),
|
||||
'AllowCustomTheme' => (bool) $oConfig->Get('webmail', 'allow_custom_theme', true),
|
||||
'SuggestionsLimit' => (int) $oConfig->Get('labs', 'suggestions_limit', 50),
|
||||
'RemoteChangePassword' => false,
|
||||
'AllowChangePassword' => false,
|
||||
'ContactsIsSupported' => (bool) $this->ContactsProvider()->IsSupported(),
|
||||
'ContactsIsAllowed' => (bool) $this->ContactsProvider()->IsActive(),
|
||||
'JsHash' => \md5(\RainLoop\Utils::GetConnectionToken()),
|
||||
|
|
@ -898,11 +898,12 @@ class Actions
|
|||
$oAccount = $this->getAccountFromToken(false);
|
||||
if ($oAccount instanceof \RainLoop\Account)
|
||||
{
|
||||
$aResult['Email'] = $oAccount->Email();
|
||||
$aResult['Login'] = $oAccount->Login();
|
||||
$aResult['Auth'] = true;
|
||||
$aResult['Email'] = $oAccount->Email();
|
||||
$aResult['IncLogin'] = $oAccount->IncLogin();
|
||||
$aResult['OutLogin'] = $oAccount->OutLogin();
|
||||
$aResult['AccountHash'] = $oAccount->Hash();
|
||||
$aResult['RemoteChangePassword'] = $this->ChangePasswordProvider()->PasswordChangePossibility($oAccount);
|
||||
$aResult['AllowChangePassword'] = $this->ChangePasswordProvider()->PasswordChangePossibility($oAccount);
|
||||
|
||||
$oSettings = $this->SettingsProvider()->Load($oAccount);
|
||||
}
|
||||
|
|
@ -1198,15 +1199,9 @@ class Actions
|
|||
|
||||
try
|
||||
{
|
||||
$sLogin = $oAccount->Login();
|
||||
if ($oAccount->Domain()->IncShortLogin())
|
||||
{
|
||||
$sLogin = \MailSo\Base\Utils::GetAccountNameFromEmail($sLogin);
|
||||
}
|
||||
|
||||
$this->MailClient()
|
||||
->Connect($oAccount->Domain()->IncHost(), $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure())
|
||||
->Login($sLogin, $oAccount->Password())
|
||||
->Login($oAccount->IncLogin(), $oAccount->Password())
|
||||
;
|
||||
}
|
||||
catch (\RainLoop\Exceptions\ClientException $oException)
|
||||
|
|
@ -1631,15 +1626,19 @@ class Actions
|
|||
*/
|
||||
public function DoAppDelayStart()
|
||||
{
|
||||
$this->Plugins()->RunHook('service.app-delay-start-begin');
|
||||
|
||||
\RainLoop\Utils::UpdateConnectionToken();
|
||||
|
||||
$bMainCache = false;
|
||||
$bFilesCache = false;
|
||||
$bActivity = false;
|
||||
$bPing = false;
|
||||
$bReHash = false;
|
||||
|
||||
$iOneDay1 = 60 * 60 * 23;
|
||||
$iOneDay2 = 60 * 60 * 25;
|
||||
$iOneDay3 = $iOneDay2 * 2;
|
||||
|
||||
$sTimers = $this->StorageProvider()->Get(null,
|
||||
\RainLoop\Providers\Storage\Enumerations\StorageType::NOBODY, 'Cache/Timers', '');
|
||||
|
|
@ -1650,6 +1649,7 @@ class Actions
|
|||
$iFilesCacheTime = !empty($aTimers[1]) && \is_numeric($aTimers[1]) ? (int) $aTimers[1] : 0;
|
||||
$iActivityTime = !empty($aTimers[2]) && \is_numeric($aTimers[2]) ? (int) $aTimers[2] : 0;
|
||||
$iPingTime = !empty($aTimers[3]) && \is_numeric($aTimers[3]) ? (int) $aTimers[3] : 0;
|
||||
$iReHashTime = !empty($aTimers[4]) && \is_numeric($aTimers[4]) ? (int) $aTimers[4] : 0;
|
||||
|
||||
if (0 === $iMainCacheTime || $iMainCacheTime + $iOneDay1 < \time())
|
||||
{
|
||||
|
|
@ -1675,13 +1675,19 @@ class Actions
|
|||
$iPingTime = \time();
|
||||
}
|
||||
|
||||
if ($bMainCache || $bFilesCache || $bActivity || $bPing)
|
||||
if (0 === $iReHashTime || $iReHashTime + $iOneDay3 < \time())
|
||||
{
|
||||
$bReHash = true;
|
||||
$iReHashTime = \time();
|
||||
}
|
||||
|
||||
if ($bMainCache || $bFilesCache || $bActivity || $bPing || $bReHash)
|
||||
{
|
||||
if (!$this->StorageProvider()->Put(null,
|
||||
\RainLoop\Providers\Storage\Enumerations\StorageType::NOBODY, 'Cache/Timers',
|
||||
\implode(',', array($iMainCacheTime, $iFilesCacheTime, $iActivityTime, $iPingTime))))
|
||||
{
|
||||
$bMainCache = $bFilesCache = $bActivity = $bPing = false;
|
||||
$bMainCache = $bFilesCache = $bActivity = $bPing = $bReHash = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1711,6 +1717,15 @@ class Actions
|
|||
$this->KeenIO('Ping');
|
||||
}
|
||||
|
||||
if ($bReHash)
|
||||
{
|
||||
$sHash = \RainLoop\Utils::PathMD5(APP_VERSION_ROOT_PATH);
|
||||
$this->Logger()->Write('App Hash: '.$sHash);
|
||||
@\file_put_contents(APP_DATA_FOLDER_PATH.'HASH', $sHash);
|
||||
}
|
||||
|
||||
$this->Plugins()->RunHook('service.app-delay-start-end');
|
||||
|
||||
return $this->TrueResponse(__FUNCTION__);
|
||||
}
|
||||
|
||||
|
|
@ -3704,9 +3719,8 @@ class Actions
|
|||
'Secure' => $oAccount->Domain()->OutSecure(),
|
||||
'UseAuth' => $oAccount->Domain()->OutAuth(),
|
||||
'From' => empty($sFrom) ? $oAccount->Email() : $sFrom,
|
||||
'Login' => $oAccount->Login(),
|
||||
'Login' => $oAccount->OutLogin(),
|
||||
'Password' => $oAccount->Password(),
|
||||
'UseShortLogin' => $oAccount->Domain()->OutShortLogin(),
|
||||
'HiddenRcpt' => array()
|
||||
);
|
||||
|
||||
|
|
@ -3727,13 +3741,7 @@ class Actions
|
|||
{
|
||||
if ($aSmtpCredentials['UseAuth'])
|
||||
{
|
||||
$sLogin = $aSmtpCredentials['Login'];
|
||||
if ($aSmtpCredentials['UseShortLogin'])
|
||||
{
|
||||
$sLogin = \MailSo\Base\Utils::GetAccountNameFromEmail($sLogin);
|
||||
}
|
||||
|
||||
$oSmtpClient->Login($sLogin, $aSmtpCredentials['Password']);
|
||||
$oSmtpClient->Login($aSmtpCredentials['Login'], $aSmtpCredentials['Password']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4953,7 +4961,7 @@ class Actions
|
|||
{
|
||||
$this->MailClient()
|
||||
->Connect($oAccount->Domain()->IncHost(), $oAccount->Domain()->IncPort(), $oAccount->Domain()->IncSecure())
|
||||
->Login($oAccount->Login(), $oAccount->Password(), !!$this->Config()->Get('labs', 'use_imap_auth_plain'))
|
||||
->Login($oAccount->IncLogin(), $oAccount->Password(), !!$this->Config()->Get('labs', 'use_imap_auth_plain'))
|
||||
;
|
||||
}
|
||||
catch (\MailSo\Net\Exceptions\ConnectionException $oException)
|
||||
|
|
@ -5175,6 +5183,7 @@ class Actions
|
|||
private function setupInformation()
|
||||
{
|
||||
$aResult = array(
|
||||
'hash' => \file_exists(APP_DATA_FOLDER_PATH.'HASH') ? @\file_get_contents(APP_DATA_FOLDER_PATH.'HASH') : '',
|
||||
'version-full' => APP_VERSION,
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -178,11 +178,18 @@ class Service
|
|||
$bCached = true;
|
||||
}
|
||||
|
||||
$sAppHash = '';
|
||||
if (\file_exists(APP_DATA_FOLDER_PATH.'HASH'))
|
||||
{
|
||||
$sAppHash = @\file_get_contents(APP_DATA_FOLDER_PATH.'HASH');
|
||||
}
|
||||
|
||||
$sResult .= '<!--';
|
||||
$sResult .= ' [version:'.APP_VERSION;
|
||||
$sResult .= '][time:'.substr(\microtime(true) - APP_START, 0, 6);
|
||||
$sResult .= '][cached:'.($bCached ? 'true' : 'false');
|
||||
$sResult .= '][session:'.md5(\RainLoop\Utils::GetShortToken());
|
||||
$sResult .= '][hash:'.$sAppHash;
|
||||
$sResult .= '] -->';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -377,7 +377,7 @@ class Social
|
|||
{
|
||||
$aUserData = array(
|
||||
'Email' => $oAccount->Email(),
|
||||
'Login' => $oAccount->Login(),
|
||||
'Login' => $oAccount->IncLogin(),
|
||||
'Password' => $oAccount->Password()
|
||||
);
|
||||
|
||||
|
|
@ -489,7 +489,7 @@ class Social
|
|||
{
|
||||
$aUserData = array(
|
||||
'Email' => $oAccount->Email(),
|
||||
'Login' => $oAccount->Login(),
|
||||
'Login' => $oAccount->IncLogin(),
|
||||
'Password' => $oAccount->Password()
|
||||
);
|
||||
|
||||
|
|
@ -652,7 +652,7 @@ class Social
|
|||
|
||||
$aUserData = array(
|
||||
'Email' => $oAccount->Email(),
|
||||
'Login' => $oAccount->Login(),
|
||||
'Login' => $oAccount->IncLogin(),
|
||||
'Password' => $oAccount->Password()
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,29 @@
|
|||
<div class="legend">
|
||||
General
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Language
|
||||
</label>
|
||||
<div class="controls">
|
||||
<label class="flag-selector">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + mainLanguage()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" data-bind="text: mainLanguageFullName, click: selectLanguage"></span>
|
||||
<div data-bind="saveTrigger: languageTrigger"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Theme
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: themesOptions, value: mainTheme, optionsText: 'optText', optionsValue: 'optValue', saveTrigger: themeTrigger"></select>
|
||||
<div data-bind="saveTrigger: themeTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Title
|
||||
|
|
@ -41,31 +64,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Language
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: languagesOptions, value: mainLanguage, optionsText: 'optText', optionsValue: 'optValue', saveTrigger: languageTrigger"></select>
|
||||
<div data-bind="saveTrigger: languageTrigger"></div>
|
||||
<br />
|
||||
<br />
|
||||
<label data-bind="click: function () { allowLanguagesOnSettings(!allowLanguagesOnSettings()); }">
|
||||
<i data-bind="css: allowLanguagesOnSettings() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow language selection on settings screen
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Theme
|
||||
</label>
|
||||
<div class="controls">
|
||||
<select data-bind="options: themesOptions, value: mainTheme, optionsText: 'optText', optionsValue: 'optValue', saveTrigger: themeTrigger"></select>
|
||||
<div data-bind="saveTrigger: themeTrigger"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { allowThemes(!allowThemes()); }">
|
||||
<i data-bind="css: allowThemes() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow theme selection on settings screen
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@
|
|||
</div>
|
||||
<div class="modal-body">
|
||||
<div data-bind="foreach: languages">
|
||||
<label class="lang-item" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected}">
|
||||
<label class="lang-item" data-tooltip-placement="left" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected},
|
||||
tooltip2: function () { return $root.languageEnName(key); }">
|
||||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + key" style=""></span>
|
||||
</span>
|
||||
|
|
|
|||
407
rainloop/v/0.0.0/langs/zh-cn.ini
Normal file
407
rainloop/v/0.0.0/langs/zh-cn.ini
Normal file
|
|
@ -0,0 +1,407 @@
|
|||
[LOGIN]
|
||||
LABEL_EMAIL = "邮件"
|
||||
LABEL_LOGIN = "登陆"
|
||||
LABEL_PASSWORD = "密码"
|
||||
LABEL_SIGN_ME = "记住我"
|
||||
BUTTON_SIGN_IN = "登入"
|
||||
TITLE_SIGN_IN_GOOGLE = "Sign In using Google"
|
||||
TITLE_SIGN_IN_FACEBOOK = "Sign In using Facebook"
|
||||
TITLE_SIGN_IN_TWITTER = "Sign In using Twitter"
|
||||
|
||||
[TOP_TOOLBAR]
|
||||
BUTTON_ADD_ACCOUNT = "添加账户"
|
||||
BUTTON_SETTINGS = "设置"
|
||||
BUTTON_LOGOUT = "注销"
|
||||
|
||||
[SEARCH]
|
||||
MAIN_INPUT_PLACEHOLDER = "搜索"
|
||||
TITLE_ADV = "高级搜索"
|
||||
LABEL_ADV_FROM = "发送自"
|
||||
LABEL_ADV_TO = "发送到"
|
||||
LABEL_ADV_SUBJECT = "主题"
|
||||
LABEL_ADV_TEXT = "内容"
|
||||
LABEL_ADV_HAS_ATTACHMENTS = "有附件"
|
||||
LABEL_ADV_DATE = "日期"
|
||||
LABEL_ADV_DATE_ALL = "所有邮件"
|
||||
LABEL_ADV_DATE_3_DAYS = "3天以内"
|
||||
LABEL_ADV_DATE_7_DAYS = "1周以内"
|
||||
LABEL_ADV_DATE_MONTH = "1月以内"
|
||||
LABEL_ADV_DATE_3_MONTHS = "3月以内"
|
||||
LABEL_ADV_DATE_6_MONTHS = "半年以内"
|
||||
LABEL_ADV_DATE_YEAR = "1年以内"
|
||||
BUTTON_ADV_SEARCH = "搜索"
|
||||
|
||||
[MAGNIFIC_POPUP]
|
||||
CLOSE = "关闭 (Esc)"
|
||||
LOADING = "加载..."
|
||||
GALLERY_PREV = "向前 (Left arrow key)"
|
||||
GALLERY_NEXT = "向后 (Right arrow key)"
|
||||
GALLERY_COUNTER = "%curr% / %total%"
|
||||
IMAGE_ERROR = "<a href="%url%" target=\"_blank\">图片</a> 无法加载。"
|
||||
AJAX_ERROR = "<a href="%url%" target=\"_blank\">内容</a> 无法加载。"
|
||||
|
||||
[FOLDER_LIST]
|
||||
BUTTON_COMPOSE = "写邮件"
|
||||
BUTTON_CONTACTS = "联系人"
|
||||
INBOX_NAME = "收件箱"
|
||||
SENT_NAME = "已发邮件"
|
||||
DRAFTS_NAME = "草稿"
|
||||
SPAM_NAME = "垃圾邮件"
|
||||
TRASH_NAME = "已删除邮件"
|
||||
|
||||
[QUOTA]
|
||||
TITLE = "存储空间使用量"
|
||||
|
||||
[MESSAGE_LIST]
|
||||
BUTTON_RELOAD = "重新加载邮件列表"
|
||||
BUTTON_MOVE_TO = "移至"
|
||||
BUTTON_DELETE = "已删除邮件"
|
||||
BUTTON_SPAM = "垃圾邮件"
|
||||
BUTTON_EMPTY_FOLDER = "清空文件夹"
|
||||
BUTTON_MULTY_FORWARD = "转发邮件"
|
||||
BUTTON_DELETE_WITHOUT_MOVE = "永久删除"
|
||||
BUTTON_MORE = "更多"
|
||||
MENU_SET_SEEN = "标记为已读"
|
||||
MENU_SET_ALL_SEEN = "标记全部为已读"
|
||||
MENU_UNSET_SEEN = "标记为未读"
|
||||
MENU_SET_FLAG = "加注星标"
|
||||
MENU_UNSET_FLAG = "移除星标"
|
||||
MENU_SELECT_ALL = "全部"
|
||||
MENU_SELECT_NONE = "无"
|
||||
MENU_SELECT_INVERT = "选择"
|
||||
MENU_SELECT_UNSEEN = "未读"
|
||||
MENU_SELECT_SEEN = "已读"
|
||||
MENU_SELECT_FLAGGED = "已加星标"
|
||||
MENU_SELECT_UNFLAGGED = "未加星标"
|
||||
EMPTY_LIST = "空列表。"
|
||||
EMPTY_SEARCH_LIST = "未找到您想要的。"
|
||||
SEARCH_RESULT_FOR = "搜索 \"%SEARCH%\" 的结果"
|
||||
LIST_LOADING = "加载中"
|
||||
EMPTY_SUBJECT_TEXT = "(无主题)"
|
||||
PUT_MESSAGE_HERE = "在这里查看邮件"
|
||||
TODAY_AT = "今日于 %TIME%"
|
||||
YESTERDAY_IN = "昨天 %TIME%"
|
||||
SEARCH_PLACEHOLDER = "搜索"
|
||||
NEW_MESSAGE_NOTIFICATION = "您有 %COUNT% 封新邮件!"
|
||||
QUOTA_SIZE = "使用了<strong>%LIMIT%</strong> 存储空间中的<strong>%SIZE% (%PROC%%)</strong>"
|
||||
|
||||
[MESSAGE]
|
||||
BUTTON_EDIT = "编辑"
|
||||
BUTTON_BACK = "返回"
|
||||
BUTTON_CLOSE = "关闭"
|
||||
BUTTON_DELETE = "删除"
|
||||
BUTTON_MOVE_TO = "移至"
|
||||
BUTTON_MORE = "更多"
|
||||
BUTTON_REPLY = "回复"
|
||||
BUTTON_REPLY_ALL = "全部回复"
|
||||
BUTTON_FORWARD = "转发"
|
||||
BUTTON_FORWARD_AS_ATTACHMENT = "带附件转发"
|
||||
BUTTON_SHOW_IMAGES = "显示外部图片"
|
||||
BUTTON_IN_NEW_WINDOW = "在新窗口中查看"
|
||||
MENU_HEADERS = "显示详细信息"
|
||||
MENU_VIEW_ORIGINAL = "显示原始内容"
|
||||
MENU_DOWNLOAD_ORIGINAL = "作为 .eml 文件下载"
|
||||
MENU_FILTER_SIMILAR = "过滤邮件如此"
|
||||
MENU_PRINT = "打印邮件"
|
||||
EMPTY_SUBJECT_TEXT = "(无主题)"
|
||||
LABEL_SUBJECT = "主题"
|
||||
LABEL_DATE = "日期"
|
||||
LABEL_FROM = "发送自"
|
||||
LABEL_FROM_SHORT = "from"
|
||||
LABEL_TO = "发送到"
|
||||
LABEL_TO_SHORT = "to"
|
||||
LABEL_CC = "抄送"
|
||||
LABEL_BCC = "密送"
|
||||
PRINT_LABEL_FROM = "发送自"
|
||||
PRINT_LABEL_TO = "发送到"
|
||||
PRINT_LABEL_CC = "抄送"
|
||||
PRINT_LABEL_BCC = "密送"
|
||||
PRINT_LABEL_DATE = "日期"
|
||||
PRINT_LABEL_SUBJECT = "主题"
|
||||
PRINT_LABEL_ATTACHMENTS = "附件"
|
||||
MESSAGE_LOADING = "加载中"
|
||||
MESSAGE_VIEW_DESC = "在此查看列表中选中的邮件。"
|
||||
|
||||
[SUGGESTIONS]
|
||||
SEARCHING_DESC = "搜索中..."
|
||||
|
||||
[CONTACTS]
|
||||
LEGEND_CONTACTS = "联系人"
|
||||
SEARCH_INPUT_PLACEHOLDER = "搜索"
|
||||
BUTTON_ADD_CONTACT = "添加联系人"
|
||||
BUTTON_CREATE_CONTACT = "新增联系人"
|
||||
BUTTON_UPDATE_CONTACT = "更新联系人"
|
||||
LIST_LOADING = "加载中"
|
||||
EMPTY_LIST = "暂无联系人"
|
||||
EMPTY_SEARCH = "没找到联系人"
|
||||
CLEAR_SEARCH = "清除搜索"
|
||||
CONTACT_VIEW_DESC = "在此查看在列表中选中的联系人。"
|
||||
|
||||
[COMPOSE]
|
||||
TITLE_FROM = "发送自"
|
||||
TITLE_TO = "发送到"
|
||||
TITLE_CC = "抄送"
|
||||
TITLE_BCC = "密送"
|
||||
TITLE_REPLY_TO = "回复"
|
||||
TITLE_SUBJECT = "主题"
|
||||
LINK_SHOW_INPUTS = "显示所有信息"
|
||||
BUTTON_SEND = "发送"
|
||||
BUTTON_SAVE = "保存"
|
||||
BUTTON_DELETE = "删除"
|
||||
BUTTON_CANCEL = "取消"
|
||||
SAVED_TIME = "保存于 %TIME%"
|
||||
SAVED_ERROR_ON_SEND = "邮件已发送但并未保存在已发邮件列表中。"
|
||||
ATTACH_FILES = "添加附件"
|
||||
ATTACH_DROP_FILES_DESC = "拖动文件至此"
|
||||
ATTACH_ITEM_CANCEL = "取消"
|
||||
DROPBOX = "Dropbox"
|
||||
GOOGLE_DRIVE = "Google Drive"
|
||||
REPLY_MESSAGE_TITLE = "%DATETIME%, %EMAIL% 写到"
|
||||
FORWARD_MESSAGE_TOP_TITLE = "-------- 转发邮件 -------"
|
||||
FORWARD_MESSAGE_TOP_FROM = "发送自"
|
||||
FORWARD_MESSAGE_TOP_TO = "发送到"
|
||||
FORWARD_MESSAGE_TOP_CC = "抄送"
|
||||
FORWARD_MESSAGE_TOP_SENT = "发送"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "主题"
|
||||
EMPTY_TO_ERROR_DESC = "请至少选择一位接收人"
|
||||
|
||||
[POPUPS_LANGUAGES]
|
||||
TITLE_LANGUAGES = "选择语言"
|
||||
|
||||
[POPUPS_ADD_ACCOUNT]
|
||||
TITLE_ADD_ACCOUNT = "添加账户?"
|
||||
BUTTON_ADD_ACCOUNT = "添加"
|
||||
|
||||
[POPUPS_IDENTITIES]
|
||||
TITLE_ADD_IDENTITY = "添加签名?"
|
||||
TITLE_UPDATE_IDENTITY = "更新签名?"
|
||||
BUTTON_ADD_IDENTITY = "添加"
|
||||
BUTTON_UPDATE_IDENTITY = "更新"
|
||||
LABEL_EMAIL = "Email"
|
||||
LABEL_NAME = "姓名"
|
||||
LABEL_REPLY_TO = "回复"
|
||||
LABEL_BCC = "密送"
|
||||
|
||||
[POPUPS_CREATE_FOLDER]
|
||||
TITLE_CREATE_FOLDER = "创建文件夹?"
|
||||
SELECT_NO_PARENT = ""
|
||||
LABEL_NAME = "文件夹名称"
|
||||
LABEL_PARENT = "父文件夹"
|
||||
BUTTON_CREATE = "创建"
|
||||
BUTTON_CANCEL = "取消"
|
||||
BUTTON_CLOSE = "关闭"
|
||||
TITLE_CREATING_PROCESS = "文件夹创建中"
|
||||
|
||||
[POPUPS_CLEAR_FOLDER]
|
||||
TITLE_CLEAR_FOLDER = "清理文件夹中所有邮件?"
|
||||
BUTTON_CLEAR = "清理"
|
||||
BUTTON_CANCEL = "取消"
|
||||
BUTTON_CLOSE = "关闭"
|
||||
DANGER_DESC_WARNING = "警告!"
|
||||
DANGER_DESC_HTML_1 = "此操作将完全删除文件夹 <strong>%FOLDER%</strong> 中的所有邮件!"
|
||||
DANGER_DESC_HTML_2 = "一旦操作执行,不可中断和撤销!"
|
||||
TITLE_CLEARING_PROCESS = "文件夹清理中..."
|
||||
|
||||
[POPUPS_SYSTEM_FOLDERS]
|
||||
TITLE_SYSTEM_FOLDERS = "选择系统文件夹"
|
||||
SELECT_CHOOSE_ONE = "选择一个"
|
||||
SELECT_UNUSE_NAME = "不使用"
|
||||
LABEL_SENT = "已发邮件"
|
||||
LABEL_DRAFTS = "草稿"
|
||||
LABEL_SPAM = "垃圾邮件"
|
||||
LABEL_TRASH = "已删除邮件"
|
||||
BUTTON_CANCEL = "取消"
|
||||
BUTTON_CLOSE = "关闭"
|
||||
|
||||
NOTIFICATION_SENT = "您没有选择 已发邮件 文件夹来存储已发送邮件。
|
||||
如果您不希望保存已发邮件,请选择 不使用 选项。"
|
||||
|
||||
NOTIFICATION_DRAFTS = "您没有选择 草稿 文件夹来存储邮件草稿。"
|
||||
|
||||
NOTIFICATION_SPAM = "您没有选择 垃圾邮件 文件夹来存储垃圾邮件。
|
||||
如果您希望永久删除邮件,请选择 不使用 选项。"
|
||||
|
||||
NOTIFICATION_TRASH = "您没有选择 已删除邮件 文件夹来存储垃圾邮件。
|
||||
如果您希望永久删除邮件,请选择 不使用 选项。"
|
||||
|
||||
[TITLES]
|
||||
LOADING = "加载中"
|
||||
LOGIN = "登陆"
|
||||
MAILBOX = "邮箱"
|
||||
SETTINGS = "设置"
|
||||
COMPOSE = "写邮件"
|
||||
|
||||
[UPLOAD]
|
||||
ERROR_FILE_IS_TOO_BIG = "文件太大"
|
||||
ERROR_FILE_PARTIALLY_UPLOADED = "遭遇未知错误,文件部分上传"
|
||||
ERROR_NO_FILE_UPLOADED = "没有文件上传"
|
||||
ERROR_MISSING_TEMP_FOLDER = "临时文件丢失"
|
||||
ERROR_ON_SAVING_FILE = "遭遇未知错误"
|
||||
ERROR_FILE_TYPE = "无效文件类型"
|
||||
ERROR_UNKNOWN = "未知文件上传错误"
|
||||
|
||||
[EDITOR]
|
||||
TEXT_SWITCHER_PLAINT_TEXT = "简单文本"
|
||||
TEXT_SWITCHER_RICH_FORMATTING = "富文本"
|
||||
TEXT_SWITCHER_CONFIRM = "文件格式及图片将丢失,您确定继续这么做?"
|
||||
|
||||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "个人"
|
||||
LABEL_GENERAL_NAME = "一般设置"
|
||||
LABEL_FOLDERS_NAME = "文件夹"
|
||||
LABEL_ACCOUNTS_NAME = "账户"
|
||||
LABEL_IDENTITY_NAME = "签名"
|
||||
LABEL_IDENTITIES_NAME = "签名"
|
||||
LABEL_SOCIAL_NAME = "Social"
|
||||
LABEL_THEMES_NAME = "主题"
|
||||
LABEL_CHANGE_PASSWORD_NAME = "密码"
|
||||
BUTTON_BACK = "返回"
|
||||
|
||||
[SETTINGS_IDENTITY]
|
||||
LEGEND_IDENTITY = "签名"
|
||||
LABEL_DISPLAY_NAME = "名称"
|
||||
LABEL_REPLY_TO = "回复"
|
||||
LABEL_SIGNATURE = "签名"
|
||||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "一般设置"
|
||||
LABEL_LANGUAGE = "语言"
|
||||
LABEL_EDITOR = "默认格式"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
LABEL_EDITOR_PLAIN_AS_DEFAULT = "Plain"
|
||||
LABEL_ANIMATION = "界面动画"
|
||||
LABEL_ANIMATION_FULL = "Full"
|
||||
LABEL_ANIMATION_NORMAL = "Normal"
|
||||
LABEL_ANIMATION_NONE = "None"
|
||||
LABEL_VIEW_OPTIONS = "视图选项"
|
||||
LABEL_USE_PREVIEW_PANE = "使用预览"
|
||||
LABEL_USE_CHECKBOXES_IN_LIST = "列表中显示多选框"
|
||||
LABEL_USE_THREADS = "使用对话"
|
||||
LABEL_REPLY_SAME_FOLDER = "将回复的邮件放置到其回复的邮件所在文件夹"
|
||||
LABEL_SHOW_IMAGES = "总是显示外部图片信息"
|
||||
LABEL_SHOW_ANIMATION = "显示动画"
|
||||
LABEL_MESSAGE_PER_PAGE = "封邮件每页"
|
||||
LABEL_CHROME_NOTIFICATION = "通知"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "显示新邮件弹窗"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(被浏览器阻止)"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
LEGEND_THEMES = "主题"
|
||||
LEGEND_THEMES_CUSTOM = "自定义主题设置"
|
||||
LABEL_CUSTOM_TYPE = "类型"
|
||||
LABEL_CUSTOM_TYPE_LIGHT = "明亮"
|
||||
LABEL_CUSTOM_TYPE_DARK = "暗沉"
|
||||
LABEL_CUSTOM_BACKGROUND_IMAGE = "背景"
|
||||
BUTTON_UPLOAD_BACKGROUND_IMAGE = "上传背景 (JPG, PNG)"
|
||||
ERROR_FILE_IS_TOO_BIG = "文件太大 (1MB+)"
|
||||
ERROR_FILE_TYPE_ERROR = "无效类型 (JPG and PNG only)"
|
||||
ERROR_UNKNOWN = "上传时发生未知错误"
|
||||
|
||||
[SETTINGS_SOCIAL]
|
||||
LEGEND_GOOGLE = "Google"
|
||||
BUTTON_GOOGLE_CONNECT = "Connect Google"
|
||||
BUTTON_GOOGLE_DISCONNECT = "Disconnect Google"
|
||||
MAIN_GOOGLE_DESC = "After enabling login via Google, you can log into this account using Google button on the login screen."
|
||||
LEGEND_FACEBOOK = "Facebook"
|
||||
BUTTON_FACEBOOK_CONNECT = "Connect Facebook"
|
||||
BUTTON_FACEBOOK_DISCONNECT = "Disconnect Facebook"
|
||||
MAIN_FACEBOOK_DESC = "After enabling login via Facebook, you can log into this account using Facebook button on the login screen."
|
||||
LEGEND_TWITTER = "Twitter"
|
||||
BUTTON_TWITTER_CONNECT = "Connect Twitter"
|
||||
BUTTON_TWITTER_DISCONNECT = "Disconnect Twitter"
|
||||
MAIN_TWITTER_DESC = "After enabling login via Twitter, you can log into this account using Twitter button on the login screen."
|
||||
|
||||
[SETTINGS_FOLDERS]
|
||||
LEGEND_FOLDERS = "文件夹"
|
||||
BUTTON_CREATE = "新建文件夹"
|
||||
BUTTON_SYSTEM = "系统文件夹设置"
|
||||
BUTTON_DELETE = "删除"
|
||||
BUTTON_SUBSCRIBE = "订阅"
|
||||
BUTTON_UNSUBSCRIBE = "取消订阅"
|
||||
LOADING_PROCESS = "文件夹列表更新"
|
||||
CREATING_PROCESS = "文件夹创建中"
|
||||
DELETING_PROCESS = "文件夹删除中"
|
||||
RENAMING_PROCESS = "文件夹重命名"
|
||||
DELETING_ASK = "确定?"
|
||||
|
||||
[SETTINGS_ACCOUNTS]
|
||||
LEGEND_ACCOUNTS = "账户列表"
|
||||
BUTTON_ADD_ACCOUNT = "添加一个账户"
|
||||
BUTTON_DELETE = "删除"
|
||||
LOADING_PROCESS = "更新账户列表中"
|
||||
DELETING_ASK = "确定?"
|
||||
|
||||
[SETTINGS_IDENTITIES]
|
||||
LEGEND_IDENTITY = "签名"
|
||||
LEGEND_IDENTITIES = "附加签名"
|
||||
LABEL_DISPLAY_NAME = "名称"
|
||||
LABEL_REPLY_TO = "回复"
|
||||
LABEL_SIGNATURE = "签名"
|
||||
BUTTON_ADD_IDENTITY = "添加签名"
|
||||
BUTTON_DELETE = "删除"
|
||||
LOADING_PROCESS = "更新签名中"
|
||||
DELETING_ASK = "确定?"
|
||||
|
||||
[SETTINGS_CHANGE_PASSWORD]
|
||||
LEGEND_CHANGE_PASSWORD = "修改密码"
|
||||
LABEL_CURRENT_PASSWORD = "当前密码"
|
||||
LABEL_NEW_PASSWORD = "新密码"
|
||||
LABEL_REPEAT_PASSWORD = "再次新密码"
|
||||
BUTTON_UPDATE_PASSWORD = "设置新密码"
|
||||
|
||||
[NOTIFICATIONS]
|
||||
INVALID_TOKEN = "无效标记"
|
||||
AUTH_ERROR = "认证失败"
|
||||
ACCESS_ERROR = "访问错误"
|
||||
CONNECTION_ERROR = "无法连接服务器"
|
||||
CAPTCHA_ERROR = "验证码不正确。"
|
||||
SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
|
||||
SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
|
||||
SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "This social ID is not assigned for any email account yet. Log in using email credentials and add enable this feature in account settings."
|
||||
DOMAIN_NOT_ALLOWED = "域不允许"
|
||||
ACCOUNT_NOT_ALLOWED = "账户不允许"
|
||||
CANT_GET_MESSAGE_LIST = "无法获取邮件列表"
|
||||
CANT_GET_MESSAGE = "无法获取邮件"
|
||||
CANT_DELETE_MESSAGE = "无法删除邮件"
|
||||
CANT_MOVE_MESSAGE = "无法移动邮件"
|
||||
CANT_SAVE_MESSAGE = "无法保存邮件"
|
||||
CANT_SEND_MESSAGE = "无法发送邮件"
|
||||
INVALID_RECIPIENTS = "无效接收人"
|
||||
CANT_CREATE_FOLDER = "无法创建文件夹"
|
||||
CANT_RENAME_FOLDER = "无法重命名文件夹"
|
||||
CANT_DELETE_FOLDER = "无法删除文件夹"
|
||||
CANT_DELETE_NON_EMPTY_FOLDER = "无法删除非空文件夹"
|
||||
CANT_SUBSCRIBE_FOLDER = "无法订阅文件夹"
|
||||
CANT_UNSUBSCRIBE_FOLDER = "无法取消订阅文件夹"
|
||||
CANT_SAVE_SETTINGS = "无法保存设置"
|
||||
CANT_SAVE_PLUGIN_SETTINGS = "无法保存设置"
|
||||
DOMAIN_ALREADY_EXISTS = "域已经存在"
|
||||
CANT_INSTALL_PACKAGE = "安装包失败"
|
||||
CANT_DELETE_PACKAGE = "移除包失败"
|
||||
INVALID_PLUGIN_PACKAGE = "无效插件"
|
||||
UNSUPPORTED_PLUGIN_PACKAGE = "不支持的插件"
|
||||
LICENSING_SERVER_IS_UNAVAILABLE = "订阅服务器无效"
|
||||
LICENSING_DOMAIN_EXPIRED = "此域订阅服务已失效。"
|
||||
LICENSING_DOMAIN_BANNED = "此域订阅服务已禁止。"
|
||||
DEMO_SEND_MESSAGE_ERROR = "出于安全考虑,测试账号无法发送外部邮件。"
|
||||
ACCOUNT_ALREADY_EXISTS = "账户已存在"
|
||||
MAIL_SERVER_ERROR = "访问邮件服务器遇到错误。"
|
||||
UNKNOWN_ERROR = "未知错误"
|
||||
|
||||
[STATIC]
|
||||
BACK_LINK = "重新加载"
|
||||
DOMAIN_LIST_DESC = "可以通过webmail访问的域列表"
|
||||
PHP_EXSTENSIONS_ERROR_DESC = "需要的PHP扩展未配置!"
|
||||
PHP_VERSION_ERROR_DESC = "您的PHP版本 (%VERSION%) 低于所需的 5.3.0!"
|
||||
|
||||
NO_SCRIPT_TITLE = "JavaScript 需要启用!"
|
||||
NO_SCRIPT_DESC = "您的浏览器不支持JavaScript。
|
||||
请启用浏览器的JavaScript支持并重试。"
|
||||
|
||||
NO_COOKIE_TITLE = "Cookies 需要启用!"
|
||||
NO_COOKIE_DESC = "您的浏览器不支持Cookies。
|
||||
请启用浏览器的Cookies支持并重试。"
|
||||
|
||||
BAD_BROWSER_TITLE = "您的浏览器过时了"
|
||||
BAD_BROWSER_DESC = "为了使用所有特性,
|
||||
下载并安装其中一款浏览器:"
|
||||
|
|
@ -2266,38 +2266,40 @@ img.mfp-img {
|
|||
0% { transform: none; transform: none; }
|
||||
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
|
||||
}
|
||||
.flag-wrapper {
|
||||
width: 24px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
display: inline-block;
|
||||
background: url(flags.png) no-repeat;
|
||||
}
|
||||
|
||||
.flag.flag-en {background-position: -144px -154px}
|
||||
.flag.flag-en-us {background-position: -144px -154px}
|
||||
.flag.flag-en-gb {background-position: -240px -33px}
|
||||
.flag.flag-en-ca {background-position: -48px -22px}
|
||||
|
||||
.flag.flag-nl, .flag.flag-nl-nl {background-position: -80px -110px}
|
||||
.flag.flag-ru, .flag.flag-ru-ru {background-position: -224px -121px}
|
||||
.flag.flag-de, .flag.flag-de-de {background-position: -80px -33px}
|
||||
.flag.flag-it, .flag.flag-it-it {background-position: -208px -66px}
|
||||
.flag.flag-is, .flag.flag-is-is {background-position: -192px -66px}
|
||||
.flag.flag-lv, .flag.flag-lv-lv {background-position: -112px -88px}
|
||||
|
||||
.flag.flag-fr, .flag.flag-fr-fr, .flag.flag-fr-ca {background-position: -144px -44px}
|
||||
.flag.flag-es, .flag.flag-es-es, .flag.flag-es-la {background-position: -16px -44px}
|
||||
|
||||
.flag.flag-ja, .flag.flag-jp, .flag.flag-ja-jp {background-position: -16px -77px}
|
||||
|
||||
.flag.flag-pt, .flag.flag-pt-pt {background-position: -112px -121px}
|
||||
.flag.flag-pt-br {background-position: -192px -11px}
|
||||
.flag-wrapper {
|
||||
width: 24px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
display: inline-block;
|
||||
background: url(flags.png) no-repeat;
|
||||
}
|
||||
|
||||
.flag.flag-en {background-position: -144px -154px}
|
||||
.flag.flag-en-us {background-position: -144px -154px}
|
||||
.flag.flag-en-gb {background-position: -240px -33px}
|
||||
.flag.flag-en-ca {background-position: -48px -22px}
|
||||
|
||||
.flag.flag-nl, .flag.flag-nl-nl {background-position: -80px -110px}
|
||||
.flag.flag-ru, .flag.flag-ru-ru {background-position: -224px -121px}
|
||||
.flag.flag-de, .flag.flag-de-de {background-position: -80px -33px}
|
||||
.flag.flag-it, .flag.flag-it-it {background-position: -208px -66px}
|
||||
.flag.flag-is, .flag.flag-is-is {background-position: -192px -66px}
|
||||
.flag.flag-lv, .flag.flag-lv-lv {background-position: -112px -88px}
|
||||
|
||||
.flag.flag-fr, .flag.flag-fr-fr, .flag.flag-fr-ca {background-position: -144px -44px}
|
||||
.flag.flag-es, .flag.flag-es-es, .flag.flag-es-la {background-position: -16px -44px}
|
||||
|
||||
.flag.flag-ja, .flag.flag-jp, .flag.flag-ja-jp {background-position: -16px -77px}
|
||||
|
||||
.flag.flag-pt, .flag.flag-pt-pt {background-position: -112px -121px}
|
||||
.flag.flag-pt-br {background-position: -192px -11px}
|
||||
|
||||
.flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px}
|
||||
|
||||
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
.clearfix {
|
||||
|
|
@ -6384,10 +6386,10 @@ html.rl-no-preview-pane #rl-right .ui-resizable-handle {
|
|||
}
|
||||
.popups .b-languages-content.modal {
|
||||
z-index: 1103;
|
||||
width: 520px;
|
||||
width: 500px;
|
||||
}
|
||||
.popups .b-languages-content.exp {
|
||||
width: 521px;
|
||||
width: 501px;
|
||||
}
|
||||
.popups .b-languages-content .modal-header {
|
||||
background-color: #fff;
|
||||
|
|
@ -6396,7 +6398,7 @@ html.rl-no-preview-pane #rl-right .ui-resizable-handle {
|
|||
display: inline-block;
|
||||
padding: 5px 15px;
|
||||
margin: 2px 5px;
|
||||
width: 200px;
|
||||
width: 180px;
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
}
|
||||
|
|
@ -7678,6 +7680,12 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
|||
.b-admin-right .b-settings-content {
|
||||
padding: 20px;
|
||||
}
|
||||
.b-admin-general .flag-selector {
|
||||
padding-top: 5px;
|
||||
}
|
||||
.b-admin-general .flag-name {
|
||||
border-bottom: 1px dashed #555;
|
||||
}
|
||||
.b-admin-domains .process-place {
|
||||
width: 600px;
|
||||
padding: 14px 0;
|
||||
|
|
|
|||
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1716,11 +1716,13 @@ Utils.microtime = function ()
|
|||
/**
|
||||
*
|
||||
* @param {string} sLanguage
|
||||
* @param {boolean=} bEng = false
|
||||
* @return {string}
|
||||
*/
|
||||
Utils.convertLangName = function (sLanguage)
|
||||
Utils.convertLangName = function (sLanguage, bEng)
|
||||
{
|
||||
return Utils.i18n('LANGS_NAMES/LANG_' + sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
return Utils.i18n('LANGS_NAMES' + (true === bEng ? '_EN' : '') + '/LANG_' +
|
||||
sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -4578,26 +4580,40 @@ function PopupsLanguagesViewModel()
|
|||
this.exp = ko.observable(false);
|
||||
|
||||
this.languages = ko.computed(function () {
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
return _.map(RL.data().languages(), function (sLanguage) {
|
||||
return {
|
||||
'key': sLanguage,
|
||||
'selected': sLanguage === sCurrent,
|
||||
'selected': ko.observable(false),
|
||||
'fullName': Utils.convertLangName(sLanguage)
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
RL.data().mainLanguage.subscribe(function () {
|
||||
this.resetMainLanguage();
|
||||
}, this);
|
||||
}
|
||||
|
||||
Utils.extendAsViewModel('PopupsLanguagesViewModel', PopupsLanguagesViewModel);
|
||||
|
||||
PopupsLanguagesViewModel.prototype.languageEnName = function (sLanguage)
|
||||
{
|
||||
return Utils.convertLangName(sLanguage, true);
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.resetMainLanguage = function ()
|
||||
{
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
_.each(this.languages(), function (oItem) {
|
||||
oItem['selected'](oItem['key'] === sCurrent);
|
||||
});
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onShow = function ()
|
||||
{
|
||||
// var self = this;
|
||||
// _.defer(function () {
|
||||
// self.exp(true);
|
||||
// });
|
||||
this.exp(true);
|
||||
|
||||
this.resetMainLanguage();
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onHide = function ()
|
||||
|
|
@ -4766,12 +4782,21 @@ function AdminGeneral()
|
|||
};
|
||||
});
|
||||
});
|
||||
|
||||
this.mainLanguageFullName = ko.computed(function () {
|
||||
return Utils.convertLangName(this.mainLanguage());
|
||||
}, this);
|
||||
|
||||
this.languagesOptions = ko.computed(function () {
|
||||
return _.map(oData.languages(), function (sLanguage) {
|
||||
var
|
||||
sName = Utils.convertLangName(sLanguage),
|
||||
sEn = Utils.convertLangName(sLanguage, true)
|
||||
;
|
||||
|
||||
return {
|
||||
'optValue': sLanguage,
|
||||
'optText': Utils.convertLangName(sLanguage)
|
||||
'optText': sName + (sEn !== sName ? ' (' + sEn + ')' : '')
|
||||
};
|
||||
});
|
||||
});
|
||||
|
|
@ -4856,6 +4881,11 @@ AdminGeneral.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
AdminGeneral.prototype.selectLanguage = function ()
|
||||
{
|
||||
kn.showScreenPopup(PopupsLanguagesViewModel);
|
||||
};
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
|
|
|
|||
|
|
@ -1716,11 +1716,13 @@ Utils.microtime = function ()
|
|||
/**
|
||||
*
|
||||
* @param {string} sLanguage
|
||||
* @param {boolean=} bEng = false
|
||||
* @return {string}
|
||||
*/
|
||||
Utils.convertLangName = function (sLanguage)
|
||||
Utils.convertLangName = function (sLanguage, bEng)
|
||||
{
|
||||
return Utils.i18n('LANGS_NAMES/LANG_' + sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
return Utils.i18n('LANGS_NAMES' + (true === bEng ? '_EN' : '') + '/LANG_' +
|
||||
sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/, '_'), null, sLanguage);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -9613,26 +9615,40 @@ function PopupsLanguagesViewModel()
|
|||
this.exp = ko.observable(false);
|
||||
|
||||
this.languages = ko.computed(function () {
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
return _.map(RL.data().languages(), function (sLanguage) {
|
||||
return {
|
||||
'key': sLanguage,
|
||||
'selected': sLanguage === sCurrent,
|
||||
'selected': ko.observable(false),
|
||||
'fullName': Utils.convertLangName(sLanguage)
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
RL.data().mainLanguage.subscribe(function () {
|
||||
this.resetMainLanguage();
|
||||
}, this);
|
||||
}
|
||||
|
||||
Utils.extendAsViewModel('PopupsLanguagesViewModel', PopupsLanguagesViewModel);
|
||||
|
||||
PopupsLanguagesViewModel.prototype.languageEnName = function (sLanguage)
|
||||
{
|
||||
return Utils.convertLangName(sLanguage, true);
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.resetMainLanguage = function ()
|
||||
{
|
||||
var sCurrent = RL.data().mainLanguage();
|
||||
_.each(this.languages(), function (oItem) {
|
||||
oItem['selected'](oItem['key'] === sCurrent);
|
||||
});
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onShow = function ()
|
||||
{
|
||||
// var self = this;
|
||||
// _.defer(function () {
|
||||
// self.exp(true);
|
||||
// });
|
||||
this.exp(true);
|
||||
|
||||
this.resetMainLanguage();
|
||||
};
|
||||
|
||||
PopupsLanguagesViewModel.prototype.onHide = function ()
|
||||
|
|
@ -12449,14 +12465,14 @@ function WebMailDataStorage()
|
|||
this.devPassword = '';
|
||||
|
||||
this.accountEmail = ko.observable('');
|
||||
this.accountLogin = ko.observable('');
|
||||
this.accountIncLogin = ko.observable('');
|
||||
this.accountOutLogin = ko.observable('');
|
||||
this.projectHash = ko.observable('');
|
||||
|
||||
this.threading = ko.observable(false);
|
||||
this.lastFoldersHash = '';
|
||||
|
||||
this.remoteSuggestions = false;
|
||||
this.remoteChangePassword = false;
|
||||
|
||||
// system folders
|
||||
this.sentFolder = ko.observable('');
|
||||
|
|
@ -12804,7 +12820,8 @@ WebMailDataStorage.prototype.populateDataOnStart = function()
|
|||
AbstractData.prototype.populateDataOnStart.call(this);
|
||||
|
||||
this.accountEmail(RL.settingsGet('Email'));
|
||||
this.accountLogin(RL.settingsGet('Login'));
|
||||
this.accountIncLogin(RL.settingsGet('IncLogin'));
|
||||
this.accountOutLogin(RL.settingsGet('OutLogin'));
|
||||
this.projectHash(RL.settingsGet('ProjectHash'));
|
||||
|
||||
this.displayName(RL.settingsGet('DisplayName'));
|
||||
|
|
@ -12814,7 +12831,6 @@ WebMailDataStorage.prototype.populateDataOnStart = function()
|
|||
this.lastFoldersHash = RL.local().get(Enums.ClientSideKeyName.FoldersLashHash) || '';
|
||||
|
||||
this.remoteSuggestions = !!RL.settingsGet('RemoteSuggestions');
|
||||
this.remoteChangePassword = !!RL.settingsGet('RemoteChangePassword');
|
||||
|
||||
this.devEmail = RL.settingsGet('DevEmail');
|
||||
this.devLogin = RL.settingsGet('DevLogin');
|
||||
|
|
@ -15795,7 +15811,7 @@ RainLoopApp.prototype.bootstart = function ()
|
|||
bTwitter = this.settingsGet('AllowTwitterSocial')
|
||||
;
|
||||
|
||||
if (!this.settingsGet('RemoteChangePassword'))
|
||||
if (!this.settingsGet('AllowChangePassword'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsChangePasswordScreen);
|
||||
}
|
||||
|
|
|
|||
14
rainloop/v/0.0.0/static/js/app.min.js
vendored
14
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
66
vendors/flags/flags-fixed.css
vendored
66
vendors/flags/flags-fixed.css
vendored
|
|
@ -1,32 +1,34 @@
|
|||
.flag-wrapper {
|
||||
width: 24px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
display: inline-block;
|
||||
background: url(flags.png) no-repeat;
|
||||
}
|
||||
|
||||
.flag.flag-en {background-position: -144px -154px}
|
||||
.flag.flag-en-us {background-position: -144px -154px}
|
||||
.flag.flag-en-gb {background-position: -240px -33px}
|
||||
.flag.flag-en-ca {background-position: -48px -22px}
|
||||
|
||||
.flag.flag-nl, .flag.flag-nl-nl {background-position: -80px -110px}
|
||||
.flag.flag-ru, .flag.flag-ru-ru {background-position: -224px -121px}
|
||||
.flag.flag-de, .flag.flag-de-de {background-position: -80px -33px}
|
||||
.flag.flag-it, .flag.flag-it-it {background-position: -208px -66px}
|
||||
.flag.flag-is, .flag.flag-is-is {background-position: -192px -66px}
|
||||
.flag.flag-lv, .flag.flag-lv-lv {background-position: -112px -88px}
|
||||
|
||||
.flag.flag-fr, .flag.flag-fr-fr, .flag.flag-fr-ca {background-position: -144px -44px}
|
||||
.flag.flag-es, .flag.flag-es-es, .flag.flag-es-la {background-position: -16px -44px}
|
||||
|
||||
.flag.flag-ja, .flag.flag-jp, .flag.flag-ja-jp {background-position: -16px -77px}
|
||||
|
||||
.flag.flag-pt, .flag.flag-pt-pt {background-position: -112px -121px}
|
||||
.flag.flag-pt-br {background-position: -192px -11px}
|
||||
.flag-wrapper {
|
||||
width: 24px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
display: inline-block;
|
||||
background: url(flags.png) no-repeat;
|
||||
}
|
||||
|
||||
.flag.flag-en {background-position: -144px -154px}
|
||||
.flag.flag-en-us {background-position: -144px -154px}
|
||||
.flag.flag-en-gb {background-position: -240px -33px}
|
||||
.flag.flag-en-ca {background-position: -48px -22px}
|
||||
|
||||
.flag.flag-nl, .flag.flag-nl-nl {background-position: -80px -110px}
|
||||
.flag.flag-ru, .flag.flag-ru-ru {background-position: -224px -121px}
|
||||
.flag.flag-de, .flag.flag-de-de {background-position: -80px -33px}
|
||||
.flag.flag-it, .flag.flag-it-it {background-position: -208px -66px}
|
||||
.flag.flag-is, .flag.flag-is-is {background-position: -192px -66px}
|
||||
.flag.flag-lv, .flag.flag-lv-lv {background-position: -112px -88px}
|
||||
|
||||
.flag.flag-fr, .flag.flag-fr-fr, .flag.flag-fr-ca {background-position: -144px -44px}
|
||||
.flag.flag-es, .flag.flag-es-es, .flag.flag-es-la {background-position: -16px -44px}
|
||||
|
||||
.flag.flag-ja, .flag.flag-jp, .flag.flag-ja-jp {background-position: -16px -77px}
|
||||
|
||||
.flag.flag-pt, .flag.flag-pt-pt {background-position: -112px -121px}
|
||||
.flag.flag-pt-br {background-position: -192px -11px}
|
||||
|
||||
.flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px}
|
||||
|
|
|
|||
514
vendors/flags/flags.css
vendored
514
vendors/flags/flags.css
vendored
|
|
@ -1,257 +1,257 @@
|
|||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
background:url(flags.png) no-repeat
|
||||
}
|
||||
|
||||
.flag.flag-ad {background-position: -16px 0}
|
||||
.flag.flag-ae {background-position: -32px 0}
|
||||
.flag.flag-af {background-position: -48px 0}
|
||||
.flag.flag-ag {background-position: -64px 0}
|
||||
.flag.flag-ai {background-position: -80px 0}
|
||||
.flag.flag-al {background-position: -96px 0}
|
||||
.flag.flag-am {background-position: -112px 0}
|
||||
.flag.flag-an {background-position: -128px 0}
|
||||
.flag.flag-ao {background-position: -144px 0}
|
||||
.flag.flag-ar {background-position: -160px 0}
|
||||
.flag.flag-as {background-position: -176px 0}
|
||||
.flag.flag-at {background-position: -192px 0}
|
||||
.flag.flag-au {background-position: -208px 0}
|
||||
.flag.flag-aw {background-position: -224px 0}
|
||||
.flag.flag-az {background-position: -240px 0}
|
||||
.flag.flag-ba {background-position: 0 -11px}
|
||||
.flag.flag-bb {background-position: -16px -11px}
|
||||
.flag.flag-bd {background-position: -32px -11px}
|
||||
.flag.flag-be {background-position: -48px -11px}
|
||||
.flag.flag-bf {background-position: -64px -11px}
|
||||
.flag.flag-bg {background-position: -80px -11px}
|
||||
.flag.flag-bh {background-position: -96px -11px}
|
||||
.flag.flag-bi {background-position: -112px -11px}
|
||||
.flag.flag-bj {background-position: -128px -11px}
|
||||
.flag.flag-bm {background-position: -144px -11px}
|
||||
.flag.flag-bn {background-position: -160px -11px}
|
||||
.flag.flag-bo {background-position: -176px -11px}
|
||||
.flag.flag-br {background-position: -192px -11px}
|
||||
.flag.flag-bs {background-position: -208px -11px}
|
||||
.flag.flag-bt {background-position: -224px -11px}
|
||||
.flag.flag-bv {background-position: -240px -11px}
|
||||
.flag.flag-bw {background-position: 0 -22px}
|
||||
.flag.flag-by {background-position: -16px -22px}
|
||||
.flag.flag-bz {background-position: -32px -22px}
|
||||
.flag.flag-ca {background-position: -48px -22px}
|
||||
.flag.flag-catalonia {background-position: -64px -22px}
|
||||
.flag.flag-cd {background-position: -80px -22px}
|
||||
.flag.flag-cf {background-position: -96px -22px}
|
||||
.flag.flag-cg {background-position: -112px -22px}
|
||||
.flag.flag-ch {background-position: -128px -22px}
|
||||
.flag.flag-ci {background-position: -144px -22px}
|
||||
.flag.flag-ck {background-position: -160px -22px}
|
||||
.flag.flag-cl {background-position: -176px -22px}
|
||||
.flag.flag-cm {background-position: -192px -22px}
|
||||
.flag.flag-cn {background-position: -208px -22px}
|
||||
.flag.flag-co {background-position: -224px -22px}
|
||||
.flag.flag-cr {background-position: -240px -22px}
|
||||
.flag.flag-cu {background-position: 0 -33px}
|
||||
.flag.flag-cv {background-position: -16px -33px}
|
||||
.flag.flag-cw {background-position: -32px -33px}
|
||||
.flag.flag-cy {background-position: -48px -33px}
|
||||
.flag.flag-cz {background-position: -64px -33px}
|
||||
.flag.flag-de {background-position: -80px -33px}
|
||||
.flag.flag-dj {background-position: -96px -33px}
|
||||
.flag.flag-dk {background-position: -112px -33px}
|
||||
.flag.flag-dm {background-position: -128px -33px}
|
||||
.flag.flag-do {background-position: -144px -33px}
|
||||
.flag.flag-dz {background-position: -160px -33px}
|
||||
.flag.flag-ec {background-position: -176px -33px}
|
||||
.flag.flag-ee {background-position: -192px -33px}
|
||||
.flag.flag-eg {background-position: -208px -33px}
|
||||
.flag.flag-eh {background-position: -224px -33px}
|
||||
.flag.flag-england {background-position: -240px -33px}
|
||||
.flag.flag-er {background-position: 0 -44px}
|
||||
.flag.flag-es {background-position: -16px -44px}
|
||||
.flag.flag-et {background-position: -32px -44px}
|
||||
.flag.flag-eu {background-position: -48px -44px}
|
||||
.flag.flag-fi {background-position: -64px -44px}
|
||||
.flag.flag-fj {background-position: -80px -44px}
|
||||
.flag.flag-fk {background-position: -96px -44px}
|
||||
.flag.flag-fm {background-position: -112px -44px}
|
||||
.flag.flag-fo {background-position: -128px -44px}
|
||||
.flag.flag-fr {background-position: -144px -44px}
|
||||
.flag.flag-ga {background-position: -160px -44px}
|
||||
.flag.flag-gb {background-position: -176px -44px}
|
||||
.flag.flag-gd {background-position: -192px -44px}
|
||||
.flag.flag-ge {background-position: -208px -44px}
|
||||
.flag.flag-gf {background-position: -224px -44px}
|
||||
.flag.flag-gg {background-position: -240px -44px}
|
||||
.flag.flag-gh {background-position: 0 -55px}
|
||||
.flag.flag-gi {background-position: -16px -55px}
|
||||
.flag.flag-gl {background-position: -32px -55px}
|
||||
.flag.flag-gm {background-position: -48px -55px}
|
||||
.flag.flag-gn {background-position: -64px -55px}
|
||||
.flag.flag-gp {background-position: -80px -55px}
|
||||
.flag.flag-gq {background-position: -96px -55px}
|
||||
.flag.flag-gr {background-position: -112px -55px}
|
||||
.flag.flag-gs {background-position: -128px -55px}
|
||||
.flag.flag-gt {background-position: -144px -55px}
|
||||
.flag.flag-gu {background-position: -160px -55px}
|
||||
.flag.flag-gw {background-position: -176px -55px}
|
||||
.flag.flag-gy {background-position: -192px -55px}
|
||||
.flag.flag-hk {background-position: -208px -55px}
|
||||
.flag.flag-hm {background-position: -224px -55px}
|
||||
.flag.flag-hn {background-position: -240px -55px}
|
||||
.flag.flag-hr {background-position: 0 -66px}
|
||||
.flag.flag-ht {background-position: -16px -66px}
|
||||
.flag.flag-hu {background-position: -32px -66px}
|
||||
.flag.flag-ic {background-position: -48px -66px}
|
||||
.flag.flag-id {background-position: -64px -66px}
|
||||
.flag.flag-ie {background-position: -80px -66px}
|
||||
.flag.flag-il {background-position: -96px -66px}
|
||||
.flag.flag-im {background-position: -112px -66px}
|
||||
.flag.flag-in {background-position: -128px -66px}
|
||||
.flag.flag-io {background-position: -144px -66px}
|
||||
.flag.flag-iq {background-position: -160px -66px}
|
||||
.flag.flag-ir {background-position: -176px -66px}
|
||||
.flag.flag-is {background-position: -192px -66px}
|
||||
.flag.flag-it {background-position: -208px -66px}
|
||||
.flag.flag-je {background-position: -224px -66px}
|
||||
.flag.flag-jm {background-position: -240px -66px}
|
||||
.flag.flag-jo {background-position: 0 -77px}
|
||||
.flag.flag-jp {background-position: -16px -77px}
|
||||
.flag.flag-ke {background-position: -32px -77px}
|
||||
.flag.flag-kg {background-position: -48px -77px}
|
||||
.flag.flag-kh {background-position: -64px -77px}
|
||||
.flag.flag-ki {background-position: -80px -77px}
|
||||
.flag.flag-km {background-position: -96px -77px}
|
||||
.flag.flag-kn {background-position: -112px -77px}
|
||||
.flag.flag-kp {background-position: -128px -77px}
|
||||
.flag.flag-kr {background-position: -144px -77px}
|
||||
.flag.flag-kurdistan {background-position: -160px -77px}
|
||||
.flag.flag-kw {background-position: -176px -77px}
|
||||
.flag.flag-ky {background-position: -192px -77px}
|
||||
.flag.flag-kz {background-position: -208px -77px}
|
||||
.flag.flag-la {background-position: -224px -77px}
|
||||
.flag.flag-lb {background-position: -240px -77px}
|
||||
.flag.flag-lc {background-position: 0 -88px}
|
||||
.flag.flag-li {background-position: -16px -88px}
|
||||
.flag.flag-lk {background-position: -32px -88px}
|
||||
.flag.flag-lr {background-position: -48px -88px}
|
||||
.flag.flag-ls {background-position: -64px -88px}
|
||||
.flag.flag-lt {background-position: -80px -88px}
|
||||
.flag.flag-lu {background-position: -96px -88px}
|
||||
.flag.flag-lv {background-position: -112px -88px}
|
||||
.flag.flag-ly {background-position: -128px -88px}
|
||||
.flag.flag-ma {background-position: -144px -88px}
|
||||
.flag.flag-mc {background-position: -160px -88px}
|
||||
.flag.flag-md {background-position: -176px -88px}
|
||||
.flag.flag-me {background-position: -192px -88px}
|
||||
.flag.flag-mg {background-position: -208px -88px}
|
||||
.flag.flag-mh {background-position: -224px -88px}
|
||||
.flag.flag-mk {background-position: -240px -88px}
|
||||
.flag.flag-ml {background-position: 0 -99px}
|
||||
.flag.flag-mm {background-position: -16px -99px}
|
||||
.flag.flag-mn {background-position: -32px -99px}
|
||||
.flag.flag-mo {background-position: -48px -99px}
|
||||
.flag.flag-mp {background-position: -64px -99px}
|
||||
.flag.flag-mq {background-position: -80px -99px}
|
||||
.flag.flag-mr {background-position: -96px -99px}
|
||||
.flag.flag-ms {background-position: -112px -99px}
|
||||
.flag.flag-mt {background-position: -128px -99px}
|
||||
.flag.flag-mu {background-position: -144px -99px}
|
||||
.flag.flag-mv {background-position: -160px -99px}
|
||||
.flag.flag-mw {background-position: -176px -99px}
|
||||
.flag.flag-mx {background-position: -192px -99px}
|
||||
.flag.flag-my {background-position: -208px -99px}
|
||||
.flag.flag-mz {background-position: -224px -99px}
|
||||
.flag.flag-na {background-position: -240px -99px}
|
||||
.flag.flag-nc {background-position: 0 -110px}
|
||||
.flag.flag-ne {background-position: -16px -110px}
|
||||
.flag.flag-nf {background-position: -32px -110px}
|
||||
.flag.flag-ng {background-position: -48px -110px}
|
||||
.flag.flag-ni {background-position: -64px -110px}
|
||||
.flag.flag-nl {background-position: -80px -110px}
|
||||
.flag.flag-no {background-position: -96px -110px}
|
||||
.flag.flag-np {background-position: -112px -110px}
|
||||
.flag.flag-nr {background-position: -128px -110px}
|
||||
.flag.flag-nu {background-position: -144px -110px}
|
||||
.flag.flag-nz {background-position: -160px -110px}
|
||||
.flag.flag-om {background-position: -176px -110px}
|
||||
.flag.flag-pa {background-position: -192px -110px}
|
||||
.flag.flag-pe {background-position: -208px -110px}
|
||||
.flag.flag-pf {background-position: -224px -110px}
|
||||
.flag.flag-pg {background-position: -240px -110px}
|
||||
.flag.flag-ph {background-position: 0 -121px}
|
||||
.flag.flag-pk {background-position: -16px -121px}
|
||||
.flag.flag-pl {background-position: -32px -121px}
|
||||
.flag.flag-pm {background-position: -48px -121px}
|
||||
.flag.flag-pn {background-position: -64px -121px}
|
||||
.flag.flag-pr {background-position: -80px -121px}
|
||||
.flag.flag-ps {background-position: -96px -121px}
|
||||
.flag.flag-pt {background-position: -112px -121px}
|
||||
.flag.flag-pw {background-position: -128px -121px}
|
||||
.flag.flag-py {background-position: -144px -121px}
|
||||
.flag.flag-qa {background-position: -160px -121px}
|
||||
.flag.flag-re {background-position: -176px -121px}
|
||||
.flag.flag-ro {background-position: -192px -121px}
|
||||
.flag.flag-rs {background-position: -208px -121px}
|
||||
.flag.flag-ru {background-position: -224px -121px}
|
||||
.flag.flag-rw {background-position: -240px -121px}
|
||||
.flag.flag-sa {background-position: 0 -132px}
|
||||
.flag.flag-sb {background-position: -16px -132px}
|
||||
.flag.flag-sc {background-position: -32px -132px}
|
||||
.flag.flag-scotland {background-position: -48px -132px}
|
||||
.flag.flag-sd {background-position: -64px -132px}
|
||||
.flag.flag-se {background-position: -80px -132px}
|
||||
.flag.flag-sg {background-position: -96px -132px}
|
||||
.flag.flag-sh {background-position: -112px -132px}
|
||||
.flag.flag-si {background-position: -128px -132px}
|
||||
.flag.flag-sk {background-position: -144px -132px}
|
||||
.flag.flag-sl {background-position: -160px -132px}
|
||||
.flag.flag-sm {background-position: -176px -132px}
|
||||
.flag.flag-sn {background-position: -192px -132px}
|
||||
.flag.flag-so {background-position: -208px -132px}
|
||||
.flag.flag-somaliland {background-position: -224px -132px}
|
||||
.flag.flag-sr {background-position: -240px -132px}
|
||||
.flag.flag-ss {background-position: 0 -143px}
|
||||
.flag.flag-st {background-position: -16px -143px}
|
||||
.flag.flag-sv {background-position: -32px -143px}
|
||||
.flag.flag-sx {background-position: -48px -143px}
|
||||
.flag.flag-sy {background-position: -64px -143px}
|
||||
.flag.flag-sz {background-position: -80px -143px}
|
||||
.flag.flag-tc {background-position: -96px -143px}
|
||||
.flag.flag-td {background-position: -112px -143px}
|
||||
.flag.flag-tf {background-position: -128px -143px}
|
||||
.flag.flag-tg {background-position: -144px -143px}
|
||||
.flag.flag-th {background-position: -160px -143px}
|
||||
.flag.flag-tj {background-position: -176px -143px}
|
||||
.flag.flag-tk {background-position: -192px -143px}
|
||||
.flag.flag-tl {background-position: -208px -143px}
|
||||
.flag.flag-tm {background-position: -224px -143px}
|
||||
.flag.flag-tn {background-position: -240px -143px}
|
||||
.flag.flag-to {background-position: 0 -154px}
|
||||
.flag.flag-tr {background-position: -16px -154px}
|
||||
.flag.flag-tt {background-position: -32px -154px}
|
||||
.flag.flag-tv {background-position: -48px -154px}
|
||||
.flag.flag-tw {background-position: -64px -154px}
|
||||
.flag.flag-tz {background-position: -80px -154px}
|
||||
.flag.flag-ua {background-position: -96px -154px}
|
||||
.flag.flag-ug {background-position: -112px -154px}
|
||||
.flag.flag-um {background-position: -128px -154px}
|
||||
.flag.flag-us {background-position: -144px -154px}
|
||||
.flag.flag-uy {background-position: -160px -154px}
|
||||
.flag.flag-uz {background-position: -176px -154px}
|
||||
.flag.flag-va {background-position: -192px -154px}
|
||||
.flag.flag-vc {background-position: -208px -154px}
|
||||
.flag.flag-ve {background-position: -224px -154px}
|
||||
.flag.flag-vg {background-position: -240px -154px}
|
||||
.flag.flag-vi {background-position: 0 -165px}
|
||||
.flag.flag-vn {background-position: -16px -165px}
|
||||
.flag.flag-vu {background-position: -32px -165px}
|
||||
.flag.flag-wales {background-position: -48px -165px}
|
||||
.flag.flag-wf {background-position: -64px -165px}
|
||||
.flag.flag-ws {background-position: -80px -165px}
|
||||
.flag.flag-ye {background-position: -96px -165px}
|
||||
.flag.flag-yt {background-position: -112px -165px}
|
||||
.flag.flag-za {background-position: -128px -165px}
|
||||
.flag.flag-zanzibar {background-position: -144px -165px}
|
||||
.flag.flag-zm {background-position: -160px -165px}
|
||||
.flag.flag-zw {background-position: -176px -165px}
|
||||
.flag {
|
||||
width: 16px;
|
||||
height: 11px;
|
||||
background:url(flags.png) no-repeat;
|
||||
}
|
||||
|
||||
.flag.flag-ad {background-position: -16px 0}
|
||||
.flag.flag-ae {background-position: -32px 0}
|
||||
.flag.flag-af {background-position: -48px 0}
|
||||
.flag.flag-ag {background-position: -64px 0}
|
||||
.flag.flag-ai {background-position: -80px 0}
|
||||
.flag.flag-al {background-position: -96px 0}
|
||||
.flag.flag-am {background-position: -112px 0}
|
||||
.flag.flag-an {background-position: -128px 0}
|
||||
.flag.flag-ao {background-position: -144px 0}
|
||||
.flag.flag-ar {background-position: -160px 0}
|
||||
.flag.flag-as {background-position: -176px 0}
|
||||
.flag.flag-at {background-position: -192px 0}
|
||||
.flag.flag-au {background-position: -208px 0}
|
||||
.flag.flag-aw {background-position: -224px 0}
|
||||
.flag.flag-az {background-position: -240px 0}
|
||||
.flag.flag-ba {background-position: 0 -11px}
|
||||
.flag.flag-bb {background-position: -16px -11px}
|
||||
.flag.flag-bd {background-position: -32px -11px}
|
||||
.flag.flag-be {background-position: -48px -11px}
|
||||
.flag.flag-bf {background-position: -64px -11px}
|
||||
.flag.flag-bg {background-position: -80px -11px}
|
||||
.flag.flag-bh {background-position: -96px -11px}
|
||||
.flag.flag-bi {background-position: -112px -11px}
|
||||
.flag.flag-bj {background-position: -128px -11px}
|
||||
.flag.flag-bm {background-position: -144px -11px}
|
||||
.flag.flag-bn {background-position: -160px -11px}
|
||||
.flag.flag-bo {background-position: -176px -11px}
|
||||
.flag.flag-br {background-position: -192px -11px}
|
||||
.flag.flag-bs {background-position: -208px -11px}
|
||||
.flag.flag-bt {background-position: -224px -11px}
|
||||
.flag.flag-bv {background-position: -240px -11px}
|
||||
.flag.flag-bw {background-position: 0 -22px}
|
||||
.flag.flag-by {background-position: -16px -22px}
|
||||
.flag.flag-bz {background-position: -32px -22px}
|
||||
.flag.flag-ca {background-position: -48px -22px}
|
||||
.flag.flag-catalonia {background-position: -64px -22px}
|
||||
.flag.flag-cd {background-position: -80px -22px}
|
||||
.flag.flag-cf {background-position: -96px -22px}
|
||||
.flag.flag-cg {background-position: -112px -22px}
|
||||
.flag.flag-ch {background-position: -128px -22px}
|
||||
.flag.flag-ci {background-position: -144px -22px}
|
||||
.flag.flag-ck {background-position: -160px -22px}
|
||||
.flag.flag-cl {background-position: -176px -22px}
|
||||
.flag.flag-cm {background-position: -192px -22px}
|
||||
.flag.flag-cn {background-position: -208px -22px}
|
||||
.flag.flag-co {background-position: -224px -22px}
|
||||
.flag.flag-cr {background-position: -240px -22px}
|
||||
.flag.flag-cu {background-position: 0 -33px}
|
||||
.flag.flag-cv {background-position: -16px -33px}
|
||||
.flag.flag-cw {background-position: -32px -33px}
|
||||
.flag.flag-cy {background-position: -48px -33px}
|
||||
.flag.flag-cz {background-position: -64px -33px}
|
||||
.flag.flag-de {background-position: -80px -33px}
|
||||
.flag.flag-dj {background-position: -96px -33px}
|
||||
.flag.flag-dk {background-position: -112px -33px}
|
||||
.flag.flag-dm {background-position: -128px -33px}
|
||||
.flag.flag-do {background-position: -144px -33px}
|
||||
.flag.flag-dz {background-position: -160px -33px}
|
||||
.flag.flag-ec {background-position: -176px -33px}
|
||||
.flag.flag-ee {background-position: -192px -33px}
|
||||
.flag.flag-eg {background-position: -208px -33px}
|
||||
.flag.flag-eh {background-position: -224px -33px}
|
||||
.flag.flag-england {background-position: -240px -33px}
|
||||
.flag.flag-er {background-position: 0 -44px}
|
||||
.flag.flag-es {background-position: -16px -44px}
|
||||
.flag.flag-et {background-position: -32px -44px}
|
||||
.flag.flag-eu {background-position: -48px -44px}
|
||||
.flag.flag-fi {background-position: -64px -44px}
|
||||
.flag.flag-fj {background-position: -80px -44px}
|
||||
.flag.flag-fk {background-position: -96px -44px}
|
||||
.flag.flag-fm {background-position: -112px -44px}
|
||||
.flag.flag-fo {background-position: -128px -44px}
|
||||
.flag.flag-fr {background-position: -144px -44px}
|
||||
.flag.flag-ga {background-position: -160px -44px}
|
||||
.flag.flag-gb {background-position: -176px -44px}
|
||||
.flag.flag-gd {background-position: -192px -44px}
|
||||
.flag.flag-ge {background-position: -208px -44px}
|
||||
.flag.flag-gf {background-position: -224px -44px}
|
||||
.flag.flag-gg {background-position: -240px -44px}
|
||||
.flag.flag-gh {background-position: 0 -55px}
|
||||
.flag.flag-gi {background-position: -16px -55px}
|
||||
.flag.flag-gl {background-position: -32px -55px}
|
||||
.flag.flag-gm {background-position: -48px -55px}
|
||||
.flag.flag-gn {background-position: -64px -55px}
|
||||
.flag.flag-gp {background-position: -80px -55px}
|
||||
.flag.flag-gq {background-position: -96px -55px}
|
||||
.flag.flag-gr {background-position: -112px -55px}
|
||||
.flag.flag-gs {background-position: -128px -55px}
|
||||
.flag.flag-gt {background-position: -144px -55px}
|
||||
.flag.flag-gu {background-position: -160px -55px}
|
||||
.flag.flag-gw {background-position: -176px -55px}
|
||||
.flag.flag-gy {background-position: -192px -55px}
|
||||
.flag.flag-hk {background-position: -208px -55px}
|
||||
.flag.flag-hm {background-position: -224px -55px}
|
||||
.flag.flag-hn {background-position: -240px -55px}
|
||||
.flag.flag-hr {background-position: 0 -66px}
|
||||
.flag.flag-ht {background-position: -16px -66px}
|
||||
.flag.flag-hu {background-position: -32px -66px}
|
||||
.flag.flag-ic {background-position: -48px -66px}
|
||||
.flag.flag-id {background-position: -64px -66px}
|
||||
.flag.flag-ie {background-position: -80px -66px}
|
||||
.flag.flag-il {background-position: -96px -66px}
|
||||
.flag.flag-im {background-position: -112px -66px}
|
||||
.flag.flag-in {background-position: -128px -66px}
|
||||
.flag.flag-io {background-position: -144px -66px}
|
||||
.flag.flag-iq {background-position: -160px -66px}
|
||||
.flag.flag-ir {background-position: -176px -66px}
|
||||
.flag.flag-is {background-position: -192px -66px}
|
||||
.flag.flag-it {background-position: -208px -66px}
|
||||
.flag.flag-je {background-position: -224px -66px}
|
||||
.flag.flag-jm {background-position: -240px -66px}
|
||||
.flag.flag-jo {background-position: 0 -77px}
|
||||
.flag.flag-jp {background-position: -16px -77px}
|
||||
.flag.flag-ke {background-position: -32px -77px}
|
||||
.flag.flag-kg {background-position: -48px -77px}
|
||||
.flag.flag-kh {background-position: -64px -77px}
|
||||
.flag.flag-ki {background-position: -80px -77px}
|
||||
.flag.flag-km {background-position: -96px -77px}
|
||||
.flag.flag-kn {background-position: -112px -77px}
|
||||
.flag.flag-kp {background-position: -128px -77px}
|
||||
.flag.flag-kr {background-position: -144px -77px}
|
||||
.flag.flag-kurdistan {background-position: -160px -77px}
|
||||
.flag.flag-kw {background-position: -176px -77px}
|
||||
.flag.flag-ky {background-position: -192px -77px}
|
||||
.flag.flag-kz {background-position: -208px -77px}
|
||||
.flag.flag-la {background-position: -224px -77px}
|
||||
.flag.flag-lb {background-position: -240px -77px}
|
||||
.flag.flag-lc {background-position: 0 -88px}
|
||||
.flag.flag-li {background-position: -16px -88px}
|
||||
.flag.flag-lk {background-position: -32px -88px}
|
||||
.flag.flag-lr {background-position: -48px -88px}
|
||||
.flag.flag-ls {background-position: -64px -88px}
|
||||
.flag.flag-lt {background-position: -80px -88px}
|
||||
.flag.flag-lu {background-position: -96px -88px}
|
||||
.flag.flag-lv {background-position: -112px -88px}
|
||||
.flag.flag-ly {background-position: -128px -88px}
|
||||
.flag.flag-ma {background-position: -144px -88px}
|
||||
.flag.flag-mc {background-position: -160px -88px}
|
||||
.flag.flag-md {background-position: -176px -88px}
|
||||
.flag.flag-me {background-position: -192px -88px}
|
||||
.flag.flag-mg {background-position: -208px -88px}
|
||||
.flag.flag-mh {background-position: -224px -88px}
|
||||
.flag.flag-mk {background-position: -240px -88px}
|
||||
.flag.flag-ml {background-position: 0 -99px}
|
||||
.flag.flag-mm {background-position: -16px -99px}
|
||||
.flag.flag-mn {background-position: -32px -99px}
|
||||
.flag.flag-mo {background-position: -48px -99px}
|
||||
.flag.flag-mp {background-position: -64px -99px}
|
||||
.flag.flag-mq {background-position: -80px -99px}
|
||||
.flag.flag-mr {background-position: -96px -99px}
|
||||
.flag.flag-ms {background-position: -112px -99px}
|
||||
.flag.flag-mt {background-position: -128px -99px}
|
||||
.flag.flag-mu {background-position: -144px -99px}
|
||||
.flag.flag-mv {background-position: -160px -99px}
|
||||
.flag.flag-mw {background-position: -176px -99px}
|
||||
.flag.flag-mx {background-position: -192px -99px}
|
||||
.flag.flag-my {background-position: -208px -99px}
|
||||
.flag.flag-mz {background-position: -224px -99px}
|
||||
.flag.flag-na {background-position: -240px -99px}
|
||||
.flag.flag-nc {background-position: 0 -110px}
|
||||
.flag.flag-ne {background-position: -16px -110px}
|
||||
.flag.flag-nf {background-position: -32px -110px}
|
||||
.flag.flag-ng {background-position: -48px -110px}
|
||||
.flag.flag-ni {background-position: -64px -110px}
|
||||
.flag.flag-nl {background-position: -80px -110px}
|
||||
.flag.flag-no {background-position: -96px -110px}
|
||||
.flag.flag-np {background-position: -112px -110px}
|
||||
.flag.flag-nr {background-position: -128px -110px}
|
||||
.flag.flag-nu {background-position: -144px -110px}
|
||||
.flag.flag-nz {background-position: -160px -110px}
|
||||
.flag.flag-om {background-position: -176px -110px}
|
||||
.flag.flag-pa {background-position: -192px -110px}
|
||||
.flag.flag-pe {background-position: -208px -110px}
|
||||
.flag.flag-pf {background-position: -224px -110px}
|
||||
.flag.flag-pg {background-position: -240px -110px}
|
||||
.flag.flag-ph {background-position: 0 -121px}
|
||||
.flag.flag-pk {background-position: -16px -121px}
|
||||
.flag.flag-pl {background-position: -32px -121px}
|
||||
.flag.flag-pm {background-position: -48px -121px}
|
||||
.flag.flag-pn {background-position: -64px -121px}
|
||||
.flag.flag-pr {background-position: -80px -121px}
|
||||
.flag.flag-ps {background-position: -96px -121px}
|
||||
.flag.flag-pt {background-position: -112px -121px}
|
||||
.flag.flag-pw {background-position: -128px -121px}
|
||||
.flag.flag-py {background-position: -144px -121px}
|
||||
.flag.flag-qa {background-position: -160px -121px}
|
||||
.flag.flag-re {background-position: -176px -121px}
|
||||
.flag.flag-ro {background-position: -192px -121px}
|
||||
.flag.flag-rs {background-position: -208px -121px}
|
||||
.flag.flag-ru {background-position: -224px -121px}
|
||||
.flag.flag-rw {background-position: -240px -121px}
|
||||
.flag.flag-sa {background-position: 0 -132px}
|
||||
.flag.flag-sb {background-position: -16px -132px}
|
||||
.flag.flag-sc {background-position: -32px -132px}
|
||||
.flag.flag-scotland {background-position: -48px -132px}
|
||||
.flag.flag-sd {background-position: -64px -132px}
|
||||
.flag.flag-se {background-position: -80px -132px}
|
||||
.flag.flag-sg {background-position: -96px -132px}
|
||||
.flag.flag-sh {background-position: -112px -132px}
|
||||
.flag.flag-si {background-position: -128px -132px}
|
||||
.flag.flag-sk {background-position: -144px -132px}
|
||||
.flag.flag-sl {background-position: -160px -132px}
|
||||
.flag.flag-sm {background-position: -176px -132px}
|
||||
.flag.flag-sn {background-position: -192px -132px}
|
||||
.flag.flag-so {background-position: -208px -132px}
|
||||
.flag.flag-somaliland {background-position: -224px -132px}
|
||||
.flag.flag-sr {background-position: -240px -132px}
|
||||
.flag.flag-ss {background-position: 0 -143px}
|
||||
.flag.flag-st {background-position: -16px -143px}
|
||||
.flag.flag-sv {background-position: -32px -143px}
|
||||
.flag.flag-sx {background-position: -48px -143px}
|
||||
.flag.flag-sy {background-position: -64px -143px}
|
||||
.flag.flag-sz {background-position: -80px -143px}
|
||||
.flag.flag-tc {background-position: -96px -143px}
|
||||
.flag.flag-td {background-position: -112px -143px}
|
||||
.flag.flag-tf {background-position: -128px -143px}
|
||||
.flag.flag-tg {background-position: -144px -143px}
|
||||
.flag.flag-th {background-position: -160px -143px}
|
||||
.flag.flag-tj {background-position: -176px -143px}
|
||||
.flag.flag-tk {background-position: -192px -143px}
|
||||
.flag.flag-tl {background-position: -208px -143px}
|
||||
.flag.flag-tm {background-position: -224px -143px}
|
||||
.flag.flag-tn {background-position: -240px -143px}
|
||||
.flag.flag-to {background-position: 0 -154px}
|
||||
.flag.flag-tr {background-position: -16px -154px}
|
||||
.flag.flag-tt {background-position: -32px -154px}
|
||||
.flag.flag-tv {background-position: -48px -154px}
|
||||
.flag.flag-tw {background-position: -64px -154px}
|
||||
.flag.flag-tz {background-position: -80px -154px}
|
||||
.flag.flag-ua {background-position: -96px -154px}
|
||||
.flag.flag-ug {background-position: -112px -154px}
|
||||
.flag.flag-um {background-position: -128px -154px}
|
||||
.flag.flag-us {background-position: -144px -154px}
|
||||
.flag.flag-uy {background-position: -160px -154px}
|
||||
.flag.flag-uz {background-position: -176px -154px}
|
||||
.flag.flag-va {background-position: -192px -154px}
|
||||
.flag.flag-vc {background-position: -208px -154px}
|
||||
.flag.flag-ve {background-position: -224px -154px}
|
||||
.flag.flag-vg {background-position: -240px -154px}
|
||||
.flag.flag-vi {background-position: 0 -165px}
|
||||
.flag.flag-vn {background-position: -16px -165px}
|
||||
.flag.flag-vu {background-position: -32px -165px}
|
||||
.flag.flag-wales {background-position: -48px -165px}
|
||||
.flag.flag-wf {background-position: -64px -165px}
|
||||
.flag.flag-ws {background-position: -80px -165px}
|
||||
.flag.flag-ye {background-position: -96px -165px}
|
||||
.flag.flag-yt {background-position: -112px -165px}
|
||||
.flag.flag-za {background-position: -128px -165px}
|
||||
.flag.flag-zanzibar {background-position: -144px -165px}
|
||||
.flag.flag-zm {background-position: -160px -165px}
|
||||
.flag.flag-zw {background-position: -176px -165px}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue