mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-29 08:24:18 +08:00
Resolve #293
This commit is contained in:
parent
7bbc53c8af
commit
0a49027840
64 changed files with 239 additions and 123 deletions
|
@ -2,6 +2,7 @@ import ko from 'ko';
|
|||
import { koComputable } from 'External/ko';
|
||||
|
||||
import { SettingsGet } from 'Common/Globals';
|
||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
||||
import { ContactUserStore } from 'Stores/User/Contact';
|
||||
import Remote from 'Remote/User/Fetch';
|
||||
|
||||
|
@ -10,14 +11,24 @@ export class UserSettingsContacts /*extends AbstractViewSettings*/ {
|
|||
this.contactsAutosave = ko.observable(!!SettingsGet('ContactsAutosave'));
|
||||
|
||||
this.allowContactsSync = ContactUserStore.allowSync;
|
||||
this.enableContactsSync = ContactUserStore.enableSync;
|
||||
this.contactsSyncUrl = ContactUserStore.syncUrl;
|
||||
this.contactsSyncUser = ContactUserStore.syncUser;
|
||||
this.contactsSyncPass = ContactUserStore.syncPass;
|
||||
this.syncMode = ContactUserStore.syncMode;
|
||||
this.syncUrl = ContactUserStore.syncUrl;
|
||||
this.syncUser = ContactUserStore.syncUser;
|
||||
this.syncPass = ContactUserStore.syncPass;
|
||||
|
||||
const i18nSyncMode = key => i18n('SETTINGS_CONTACTS/SYNC_' + key);
|
||||
this.syncModeOptions = koComputable(() => {
|
||||
translatorTrigger();
|
||||
return [
|
||||
{ id: 0, name: i18nSyncMode('NO') },
|
||||
{ id: 1, name: i18nSyncMode('YES') },
|
||||
{ id: 2, name: i18nSyncMode('READ') },
|
||||
];
|
||||
});
|
||||
|
||||
this.saveTrigger = koComputable(() =>
|
||||
[
|
||||
ContactUserStore.enableSync() ? '1' : '0',
|
||||
ContactUserStore.syncMode(),
|
||||
ContactUserStore.syncUrl(),
|
||||
ContactUserStore.syncUser(),
|
||||
ContactUserStore.syncPass()
|
||||
|
@ -31,7 +42,7 @@ export class UserSettingsContacts /*extends AbstractViewSettings*/ {
|
|||
|
||||
this.saveTrigger.subscribe(() =>
|
||||
Remote.request('SaveContactsSyncData', null, {
|
||||
Enable: ContactUserStore.enableSync() ? 1 : 0,
|
||||
Mode: ContactUserStore.syncMode(),
|
||||
Url: ContactUserStore.syncUrl(),
|
||||
User: ContactUserStore.syncUser(),
|
||||
Password: ContactUserStore.syncPass()
|
||||
|
|
|
@ -12,7 +12,7 @@ ContactUserStore.syncing = ko.observable(false).extend({ debounce: 200 });
|
|||
|
||||
addObservablesTo(ContactUserStore, {
|
||||
allowSync: false, // Admin setting
|
||||
enableSync: false,
|
||||
syncMode: 0,
|
||||
syncUrl: '',
|
||||
syncUser: '',
|
||||
syncPass: ''
|
||||
|
@ -23,7 +23,7 @@ addObservablesTo(ContactUserStore, {
|
|||
* @returns {void}
|
||||
*/
|
||||
ContactUserStore.sync = fResultFunc => {
|
||||
if (ContactUserStore.enableSync()
|
||||
if (ContactUserStore.syncMode()
|
||||
&& !ContactUserStore.importing()
|
||||
&& !ContactUserStore.syncing()
|
||||
) {
|
||||
|
@ -39,7 +39,7 @@ ContactUserStore.init = () => {
|
|||
let value = !!SettingsGet('ContactsSyncIsAllowed');
|
||||
ContactUserStore.allowSync(value);
|
||||
if (value) {
|
||||
ContactUserStore.enableSync(!!SettingsGet('EnableContactsSync'));
|
||||
ContactUserStore.syncMode(SettingsGet('ContactsSyncMode'));
|
||||
ContactUserStore.syncUrl(SettingsGet('ContactsSyncUrl'));
|
||||
ContactUserStore.syncUser(SettingsGet('ContactsSyncUser'));
|
||||
ContactUserStore.syncPass(SettingsGet('ContactsSyncPassword'));
|
||||
|
|
|
@ -37,9 +37,6 @@ export class ContactsPopupView extends AbstractViewPopup {
|
|||
this.bBackToCompose = false;
|
||||
this.sLastComposeFocusedField = '';
|
||||
|
||||
this.allowContactsSync = ContactUserStore.allowSync;
|
||||
this.enableContactsSync = ContactUserStore.enableSync;
|
||||
|
||||
this.addObservables({
|
||||
search: '',
|
||||
contactsCount: 0,
|
||||
|
@ -124,6 +121,8 @@ export class ContactsPopupView extends AbstractViewPopup {
|
|||
|
||||
contactsCheckedOrSelectedUids: () => this.contactsCheckedOrSelected().map(contact => contact.id),
|
||||
|
||||
contactsSyncEnabled: () => ContactUserStore.allowSync() && ContactUserStore.syncMode(),
|
||||
|
||||
viewHash: () => '' + this.viewProperties.map(property => property.value && property.value()).join('')
|
||||
});
|
||||
|
||||
|
|
|
@ -803,7 +803,7 @@ class Actions
|
|||
$aResult['ContactsSyncIsAllowed'] = (bool)$oConfig->Get('contacts', 'allow_sync', false);
|
||||
$aResult['ContactsSyncInterval'] = (int)$oConfig->Get('contacts', 'sync_interval', 20);
|
||||
|
||||
$aResult['EnableContactsSync'] = false;
|
||||
$aResult['ContactsSyncMode'] = 0;
|
||||
$aResult['ContactsSyncUrl'] = '';
|
||||
$aResult['ContactsSyncUser'] = '';
|
||||
$aResult['ContactsSyncPassword'] = '';
|
||||
|
@ -811,7 +811,7 @@ class Actions
|
|||
if ($aResult['ContactsIsAllowed'] && $aResult['ContactsSyncIsAllowed']) {
|
||||
$mData = $this->getContactsSyncData($oAccount);
|
||||
if (\is_array($mData)) {
|
||||
$aResult['EnableContactsSync'] = isset($mData['Enable']) ? !!$mData['Enable'] : false;
|
||||
$aResult['ContactsSyncMode'] = isset($mData['Mode']) ? $mData['Mode'] : 0;
|
||||
$aResult['ContactsSyncUrl'] = isset($mData['Url']) ? \trim($mData['Url']) : '';
|
||||
$aResult['ContactsSyncUser'] = isset($mData['User']) ? \trim($mData['User']) : '';
|
||||
$aResult['ContactsSyncPassword'] = APP_DUMMY;
|
||||
|
|
|
@ -15,19 +15,16 @@ trait Contacts
|
|||
return $this->FalseResponse(__FUNCTION__);
|
||||
}
|
||||
|
||||
$bEnabled = '1' === (string) $this->GetActionParam('Enable', '0');
|
||||
$sUrl = $this->GetActionParam('Url', '');
|
||||
$sUser = $this->GetActionParam('User', '');
|
||||
$sPassword = $this->GetActionParam('Password', '');
|
||||
|
||||
$mData = $this->getContactsSyncData($oAccount);
|
||||
|
||||
$bResult = $this->setContactsSyncData($oAccount, array(
|
||||
'Enable' => $bEnabled,
|
||||
'User' => $sUser,
|
||||
'Mode' => \intval($this->GetActionParam('Mode', '0')),
|
||||
'User' => $this->GetActionParam('User', ''),
|
||||
'Password' => APP_DUMMY === $sPassword && isset($mData['Password'])
|
||||
? $mData['Password'] : (APP_DUMMY === $sPassword ? '' : $sPassword),
|
||||
'Url' => $sUrl
|
||||
'Url' => $this->GetActionParam('Url', '')
|
||||
));
|
||||
|
||||
return $this->DefaultResponse(__FUNCTION__, $bResult);
|
||||
|
@ -42,11 +39,16 @@ trait Contacts
|
|||
if ($oAddressBookProvider && $oAddressBookProvider->IsActive())
|
||||
{
|
||||
$mData = $this->getContactsSyncData($oAccount);
|
||||
if (isset($mData['Enable'], $mData['User'], $mData['Password'], $mData['Url']) && $mData['Enable'])
|
||||
if (isset($mData['User'], $mData['Password'], $mData['Url']) && !empty($mData['Mode']))
|
||||
{
|
||||
$bResult = $oAddressBookProvider->Sync(
|
||||
$this->GetMainEmail($oAccount),
|
||||
$mData['Url'], $mData['User'], $mData['Password']);
|
||||
$bResult = $oAddressBookProvider->Sync([
|
||||
'Email' => $this->GetMainEmail($oAccount),
|
||||
'Url' => $mData['Url'],
|
||||
'User' => $mData['User'],
|
||||
'Password' => $mData['Password'],
|
||||
'Mode' => $mData['Mode'],
|
||||
'Proxy' => ''
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -236,6 +238,9 @@ trait Contacts
|
|||
|
||||
public function setContactsSyncData(\RainLoop\Model\Account $oAccount, array $aData) : bool
|
||||
{
|
||||
if (!isset($aData['Mode'])) {
|
||||
$aData['Mode'] = empty($aData['Enable']) ? 0 : 1;
|
||||
}
|
||||
$oMainAccount = $this->getMainAccountFromToken();
|
||||
if ($aData['Password']) {
|
||||
$aData['Password'] = \SnappyMail\Crypt::EncryptToJSON($aData['Password'], $oMainAccount->CryptKey());
|
||||
|
@ -272,6 +277,9 @@ trait Contacts
|
|||
);
|
||||
}
|
||||
}
|
||||
if (!isset($aData['Mode'])) {
|
||||
$aData['Mode'] = empty($aData['Enable']) ? 0 : 1;
|
||||
}
|
||||
return $aData;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,9 +41,9 @@ class AddressBook extends \RainLoop\Providers\AbstractProvider
|
|||
$this->oDriver->IsSharingAllowed();
|
||||
}
|
||||
|
||||
public function Sync(string $sEmail, string $sUrl, string $sUser, string $sPassword) : bool
|
||||
public function Sync(array $oConfig) : bool
|
||||
{
|
||||
return $this->IsActive() ? $this->oDriver->Sync($sEmail, $sUrl, $sUser, $sPassword) : false;
|
||||
return $this->IsActive() ? $this->oDriver->Sync($oConfig) : false;
|
||||
}
|
||||
|
||||
public function Export(string $sEmail, string $sType = 'vcf') : bool
|
||||
|
|
|
@ -112,18 +112,18 @@ class PdoAddressBook
|
|||
return $aResult;
|
||||
}
|
||||
|
||||
public function Sync(string $sEmail, string $sUrl, string $sUser, string $sPassword, string $sProxy = '') : bool
|
||||
public function Sync(array $oConfig) : bool
|
||||
{
|
||||
$this->SyncDatabase();
|
||||
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
$iUserID = $this->getUserId($oConfig['Email']);
|
||||
if (0 >= $iUserID)
|
||||
{
|
||||
\SnappyMail\Log::warning('PdoAddressBook', 'Sync() invalid $iUserID');
|
||||
return false;
|
||||
}
|
||||
|
||||
$oClient = $this->getDavClient($sUrl, $sUser, $sPassword, $sProxy);
|
||||
$oClient = $this->getDavClient($oConfig['Url'], $oConfig['User'], $oConfig['Password'], $oConfig['Proxy']);
|
||||
if (!$oClient)
|
||||
{
|
||||
\SnappyMail\Log::warning('PdoAddressBook', 'Sync() invalid DavClient');
|
||||
|
@ -144,18 +144,18 @@ class PdoAddressBook
|
|||
// $this->oLogger->WriteDump($aRemoteSyncData);
|
||||
// $this->oLogger->WriteDump($aDatabaseSyncData);
|
||||
|
||||
//+++del (from carddav)
|
||||
foreach ($aDatabaseSyncData as $sKey => $aData)
|
||||
{
|
||||
if ($aData['deleted'] &&
|
||||
isset($aRemoteSyncData[$sKey], $aRemoteSyncData[$sKey]['vcf']))
|
||||
// Delete remote when Mode = read + write
|
||||
if (1 === $oConfig['Mode']) {
|
||||
foreach ($aDatabaseSyncData as $sKey => $aData)
|
||||
{
|
||||
$this->davClientRequest($oClient, 'DELETE', $sPath.$aRemoteSyncData[$sKey]['vcf']);
|
||||
if ($aData['deleted'] && isset($aRemoteSyncData[$sKey], $aRemoteSyncData[$sKey]['vcf']))
|
||||
{
|
||||
$this->davClientRequest($oClient, 'DELETE', $sPath.$aRemoteSyncData[$sKey]['vcf']);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---del
|
||||
|
||||
//+++del (from db)
|
||||
// Delete from db
|
||||
$aIdsForDeletedion = array();
|
||||
foreach ($aDatabaseSyncData as $sKey => $aData)
|
||||
{
|
||||
|
@ -164,12 +164,10 @@ class PdoAddressBook
|
|||
$aIdsForDeletedion[] = $aData['id_contact'];
|
||||
}
|
||||
}
|
||||
|
||||
if (\count($aIdsForDeletedion))
|
||||
{
|
||||
$this->DeleteContacts($sEmail, $aIdsForDeletedion, false);
|
||||
$this->DeleteContacts($oConfig['Email'], $aIdsForDeletedion, false);
|
||||
}
|
||||
//---del
|
||||
|
||||
$this->flushDeletedContacts($iUserID);
|
||||
|
||||
|
@ -186,7 +184,7 @@ class PdoAddressBook
|
|||
)
|
||||
{
|
||||
$mID = $aData['id_contact'];
|
||||
$oContact = $this->GetContactByID($sEmail, $mID, false);
|
||||
$oContact = $this->GetContactByID($oConfig['Email'], $mID, false);
|
||||
if ($oContact)
|
||||
{
|
||||
$sExsistensBody = '';
|
||||
|
@ -202,17 +200,20 @@ class PdoAddressBook
|
|||
// $this->oLogger->WriteDump($sExsistensBody);
|
||||
}
|
||||
|
||||
$oResponse = $this->davClientRequest($oClient, 'PUT',
|
||||
$sPath.(\strlen($mExsistenRemoteID) ? $mExsistenRemoteID : $oContact->CardDavNameUri()),
|
||||
$oContact->ToVCard($sExsistensBody, $this->oLogger)."\r\n\r\n");
|
||||
if ($oResponse)
|
||||
{
|
||||
$sEtag = \trim(\trim($oResponse->getHeader('etag')), '"\'');
|
||||
$sDate = \trim($oResponse->getHeader('date'));
|
||||
if (!empty($sEtag))
|
||||
// Add remote when Mode = read + write
|
||||
if (1 === $oConfig['Mode']) {
|
||||
$oResponse = $this->davClientRequest($oClient, 'PUT',
|
||||
$sPath.(\strlen($mExsistenRemoteID) ? $mExsistenRemoteID : $oContact->CardDavNameUri()),
|
||||
$oContact->ToVCard($sExsistensBody, $this->oLogger)."\r\n\r\n");
|
||||
if ($oResponse)
|
||||
{
|
||||
$iChanged = empty($sDate) ? \time() : \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($sDate);
|
||||
$this->updateContactEtagAndTime($iUserID, $mID, $sEtag, $iChanged);
|
||||
$sEtag = \trim(\trim($oResponse->getHeader('etag')), '"\'');
|
||||
$sDate = \trim($oResponse->getHeader('date'));
|
||||
if (!empty($sEtag))
|
||||
{
|
||||
$iChanged = empty($sDate) ? \time() : \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($sDate);
|
||||
$this->updateContactEtagAndTime($iUserID, $mID, $sEtag, $iChanged);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -268,7 +269,7 @@ class PdoAddressBook
|
|||
$oContact = null;
|
||||
if ($mExsistenContactID)
|
||||
{
|
||||
$oContact = $this->GetContactByID($sEmail, $mExsistenContactID);
|
||||
$oContact = $this->GetContactByID($oConfig['Email'], $mExsistenContactID);
|
||||
}
|
||||
if (!$oContact)
|
||||
{
|
||||
|
@ -280,7 +281,7 @@ class PdoAddressBook
|
|||
\trim(\trim($oResponse->getHeader('etag')), '"\'')
|
||||
);
|
||||
|
||||
$this->ContactSave($sEmail, $oContact);
|
||||
$this->ContactSave($oConfig['Email'], $oContact);
|
||||
unset($oContact);
|
||||
// } else if ($this->oLogger) {
|
||||
// $this->oLogger->WriteDump($sBody);
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "تفعيل التزامن عن بعد",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "المخدم",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "وصلة دفتر العناوين",
|
||||
"LABEL_CONTACTS_SYNC_USER": "المستخدم"
|
||||
"LABEL_CONTACTS_SYNC_USER": "المستخدم",
|
||||
"SYNC_NO": "لا",
|
||||
"SYNC_YES": "نعم",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "المظاهر العامة",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Разрешаване на отдалечено синхронизиране",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Сървър",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL на адресната книга",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Потребител"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Потребител",
|
||||
"SYNC_NO": "Не",
|
||||
"SYNC_YES": "Да",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Теми",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Všechna práva vyhrazena.",
|
||||
"HINT_READ_CHANGE_LOG": "Přečtěte si prosím change log předtím, než budete chtít provést aktualizaci.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop je v aktuální verzi.",
|
||||
"HTML_NEW_VERSION": "Nová verze <b>%VERSION%</b> je k dispozici.",
|
||||
"HTML_NEW_VERSION": "Nová verze <b>%VERSION%<\/b> je k dispozici.",
|
||||
"LABEL_UPDATING": "Aktualizuji",
|
||||
"LABEL_CHECKING": "Kontroluji nové aktualizace",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Povolit vzdálenou synchronizaci",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL adresáře",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Uživatel"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Uživatel",
|
||||
"SYNC_NO": "Ne",
|
||||
"SYNC_YES": "Ano",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Motivy",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "alle rettigheder forbeholdes.",
|
||||
"HINT_READ_CHANGE_LOG": "Læs ændrings listen før der opdateres.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop is up to date.",
|
||||
"HTML_NEW_VERSION": "Ny <b>%VERSION%</b> version tilgængelig",
|
||||
"HTML_NEW_VERSION": "Ny <b>%VERSION%<\/b> version tilgængelig",
|
||||
"LABEL_UPDATING": "Opdatere",
|
||||
"LABEL_CHECKING": "Tjekker for opdateringer",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Aktivér synkronisering",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adressebogs URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Bruger"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Bruger",
|
||||
"SYNC_NO": "Nej",
|
||||
"SYNC_YES": "Ja",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temaer",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Alle Rechte vorbehalten.",
|
||||
"HINT_READ_CHANGE_LOG": "Bitte Lesen Sie das Änderungsprotokoll vor dem Update.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop ist auf dem neusten Stand.",
|
||||
"HTML_NEW_VERSION": "Neue Version <b>%VERSION%</b> verfügbar.",
|
||||
"HTML_NEW_VERSION": "Neue Version <b>%VERSION%<\/b> verfügbar.",
|
||||
"LABEL_UPDATING": "Aktualisiere",
|
||||
"LABEL_CHECKING": "Prüfe auf Aktualisierungen",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Remote-Synchronisierung aktivieren",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adressbuch-URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Benutzer"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Benutzer",
|
||||
"SYNC_NO": "Nein",
|
||||
"SYNC_YES": "Ja",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Themen",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Ενεργοποίηση απομακρυσμένου συγχρονισμού",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Εξυπηρετητής",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL του καταλόγου διεθύνσεων",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Χρήστης"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Χρήστης",
|
||||
"SYNC_NO": "Όχι",
|
||||
"SYNC_YES": "Ναι",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Θέματα",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Enable remote synchronization",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Addressbook URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "User"
|
||||
"LABEL_CONTACTS_SYNC_USER": "User",
|
||||
"SYNC_NO": "No",
|
||||
"SYNC_YES": "Yes",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Themes",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Todos los Derechos Reservados.",
|
||||
"HINT_READ_CHANGE_LOG": "Revisa la lista de cambios antes de actualizar.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop está actualizado.",
|
||||
"HTML_NEW_VERSION": "Nueva versión ( <b>%VERSION%</b> ) está disponible.",
|
||||
"HTML_NEW_VERSION": "Nueva versión ( <b>%VERSION%<\/b> ) está disponible.",
|
||||
"LABEL_UPDATING": "Actualizando",
|
||||
"LABEL_CHECKING": "Buscando actualizaciones",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Activar la sincronización remota",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Servidor",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Libreta de direcciones URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Usuario"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Usuario",
|
||||
"SYNC_NO": "No",
|
||||
"SYNC_YES": "Sí",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temas",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Luba väline sünkroniseerimine",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Aadressiraamatu URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Kasutaja"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Kasutaja",
|
||||
"SYNC_NO": "Ei",
|
||||
"SYNC_YES": "Jah",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Teemad",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "همه حقوق محفوظ هست",
|
||||
"HINT_READ_CHANGE_LOG": "فایل وقایع را قبل از بروزرسانی بخوانید.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop بروز هست",
|
||||
"HTML_NEW_VERSION": "نسخه <b>%VERSION%</b> در دسترس هست",
|
||||
"HTML_NEW_VERSION": "نسخه <b>%VERSION%<\/b> در دسترس هست",
|
||||
"LABEL_UPDATING": "در حال بروزرسانی",
|
||||
"LABEL_CHECKING": "چک کردن برای بروزرسانی",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "فعالسازی همگامسازی از راه دور",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "سرور",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "تارنمای آدرسبوک",
|
||||
"LABEL_CONTACTS_SYNC_USER": "کاربر"
|
||||
"LABEL_CONTACTS_SYNC_USER": "کاربر",
|
||||
"SYNC_NO": "خیر",
|
||||
"SYNC_YES": "بلی",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "پوستهها",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Kaikki oikeudet pidätetään.",
|
||||
"HINT_READ_CHANGE_LOG": "Lue muutosloki ennen päivitystä.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop on ajan tasalla.",
|
||||
"HTML_NEW_VERSION": "Uusi versio <b>%VERSION%</b> on saatavissa.",
|
||||
"HTML_NEW_VERSION": "Uusi versio <b>%VERSION%<\/b> on saatavissa.",
|
||||
"LABEL_UPDATING": "Päivitetään",
|
||||
"LABEL_CHECKING": "Tarkastetaan päivityksiä",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Aktivoi etä-synkronointi",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Palvelin",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Osoitekirjan URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Käyttäjä"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Käyttäjä",
|
||||
"SYNC_NO": "Ei",
|
||||
"SYNC_YES": "Kyllä",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Teemat",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Tous droits réservés.",
|
||||
"HINT_READ_CHANGE_LOG": "Veuillez lire le journal des modifications avant de faire la mise à jour.",
|
||||
"HINT_IS_UP_TO_DATE": "Rainloop est à jour.",
|
||||
"HTML_NEW_VERSION": "Une nouvelle version <b>%VERSION%</b> est disponible.",
|
||||
"HTML_NEW_VERSION": "Une nouvelle version <b>%VERSION%<\/b> est disponible.",
|
||||
"LABEL_UPDATING": "Mise à jour",
|
||||
"LABEL_CHECKING": "Vérification des mises à jour",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Activer la synchronisation à distance",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Serveur",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL du carnet d'adresses",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utilisateur"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utilisateur",
|
||||
"SYNC_NO": "Non",
|
||||
"SYNC_YES": "Oui",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Thèmes",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Minden jog fenntartva.",
|
||||
"HINT_READ_CHANGE_LOG": "Frissítés előtt kérlek olvasd el a változások listáját.",
|
||||
"HINT_IS_UP_TO_DATE": "A RainLoop naprakész.",
|
||||
"HTML_NEW_VERSION": "Új verzió érhető el: <b>%VERSION%</b>",
|
||||
"HTML_NEW_VERSION": "Új verzió érhető el: <b>%VERSION%<\/b>",
|
||||
"LABEL_UPDATING": "Frissítés",
|
||||
"LABEL_CHECKING": "Frissítések ellenőrzése",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Távoli szinkronizálás engedélyezése",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Szerver",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Címtár URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Felhasználó"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Felhasználó",
|
||||
"SYNC_NO": "Nem",
|
||||
"SYNC_YES": "Igen",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Témák",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Hak Cipta",
|
||||
"HINT_READ_CHANGE_LOG": "Mohon baca log perubahan sebelum melakukan pembaruan",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop sudah terbaru",
|
||||
"HTML_NEW_VERSION": "Versi <b>%VERSION%</b> baru tersedia",
|
||||
"HTML_NEW_VERSION": "Versi <b>%VERSION%<\/b> baru tersedia",
|
||||
"LABEL_UPDATING": "Memperbarui",
|
||||
"LABEL_CHECKING": "Memeriksa pembaruan",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Nyalakan sinkronisasi remote",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL Buku alamat",
|
||||
"LABEL_CONTACTS_SYNC_USER": "User"
|
||||
"LABEL_CONTACTS_SYNC_USER": "User",
|
||||
"SYNC_NO": "Tidak",
|
||||
"SYNC_YES": "Ya",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Tema",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Virkja fjartengda samstillingu",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Þjónn",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Slóð á nafnaskrá",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Notandi"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Notandi",
|
||||
"SYNC_NO": "Nei",
|
||||
"SYNC_YES": "Já",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Þemu",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "All Rights Reserved.",
|
||||
"HINT_READ_CHANGE_LOG": "Leggere il changelog prima di effettuare l'aggiornamento.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop è aggiornato.",
|
||||
"HTML_NEW_VERSION": "La nuova versione <b>%VERSION%</b> è disponibile.",
|
||||
"HTML_NEW_VERSION": "La nuova versione <b>%VERSION%<\/b> è disponibile.",
|
||||
"LABEL_UPDATING": "Aggiornamento in corso...",
|
||||
"LABEL_CHECKING": "Controllo della presenza di aggiornamenti...",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Abilita sincronizzazione remota",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Indirizzo della rubrica",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utente"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utente",
|
||||
"SYNC_NO": "No",
|
||||
"SYNC_YES": "Sì",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temi",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "All Rights Reserved.",
|
||||
"HINT_READ_CHANGE_LOG": "更新する前に変更ログをお読みください。",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoopは最新のものです。",
|
||||
"HTML_NEW_VERSION": "新しいバージョン <b>%VERSION%</b> があります",
|
||||
"HTML_NEW_VERSION": "新しいバージョン <b>%VERSION%<\/b> があります",
|
||||
"LABEL_UPDATING": "更新中",
|
||||
"LABEL_CHECKING": "アップデートの確認",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "リモート同期を有効化",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "サーバー",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "アドレス帳 URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "ユーザー"
|
||||
"LABEL_CONTACTS_SYNC_USER": "ユーザー",
|
||||
"SYNC_NO": "いいえ",
|
||||
"SYNC_YES": "はい",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "テーマ",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "원격 동기화 활성화",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "서버",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "주소록 URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "사용자"
|
||||
"LABEL_CONTACTS_SYNC_USER": "사용자",
|
||||
"SYNC_NO": "아니요",
|
||||
"SYNC_YES": "예",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "테마",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Visos teisės saugomos.",
|
||||
"HINT_READ_CHANGE_LOG": "Prašom perskaityti pasikeitimų eigą prieš atnaujinant.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop naujausios laidos.",
|
||||
"HTML_NEW_VERSION": "Nauja <b>%VERSION%</b> versija jau prieinama.",
|
||||
"HTML_NEW_VERSION": "Nauja <b>%VERSION%<\/b> versija jau prieinama.",
|
||||
"LABEL_UPDATING": "Atnaujinama",
|
||||
"LABEL_CHECKING": "Ieškau atnaujinimų",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Įjungti nuotolinį sinchronizavimą",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Serveris",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adresų knygos URL adresas",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Vartotojas"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Vartotojas",
|
||||
"SYNC_NO": "Ne",
|
||||
"SYNC_YES": "Taip",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temos",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Enable remote synchronization",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Addressbook URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "User"
|
||||
"LABEL_CONTACTS_SYNC_USER": "User",
|
||||
"SYNC_NO": "Nē",
|
||||
"SYNC_YES": "Jā",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Tēmas",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "All Rights Reserved.",
|
||||
"HINT_READ_CHANGE_LOG": "Les endringslogg før du oppdaterer.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop er oppdatert.",
|
||||
"HTML_NEW_VERSION": "Versjon <b>%VERSION%</b> er nå tilgjengelig.",
|
||||
"HTML_NEW_VERSION": "Versjon <b>%VERSION%<\/b> er nå tilgjengelig.",
|
||||
"LABEL_UPDATING": "Oppdaterer",
|
||||
"LABEL_CHECKING": "Ser etter oppdateringer",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Slå på fjernstyrt synkronisering",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Tjener",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Nettadresse til adressebok",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Bruker"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Bruker",
|
||||
"SYNC_NO": "Nei",
|
||||
"SYNC_YES": "Ja",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Tema",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Alle rechten voorbehouden.",
|
||||
"HINT_READ_CHANGE_LOG": "Lees a.u.b. het veranderingen logboek alvorens te updaten.",
|
||||
"HINT_IS_UP_TO_DATE": "De laatste versie van RainLoop is geïnstalleerd.",
|
||||
"HTML_NEW_VERSION": "Een nieuwe versie <b>%VERSION%</b> is beschikbaar.",
|
||||
"HTML_NEW_VERSION": "Een nieuwe versie <b>%VERSION%<\/b> is beschikbaar.",
|
||||
"LABEL_UPDATING": "Bezig met updaten",
|
||||
"LABEL_CHECKING": "Controleren op updates",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Server synchronisatie inschakelen",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adresboek URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Gebruikersnaam"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Gebruikersnaam",
|
||||
"SYNC_NO": "Nee",
|
||||
"SYNC_YES": "Ja",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Thema's",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Wszystkie prawa zastrzeżone.",
|
||||
"HINT_READ_CHANGE_LOG": "Przed aktualizacją przeczytaj proszę listę zmian.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop jest aktualny.",
|
||||
"HTML_NEW_VERSION": "Dostępna jest nowa wersja: <b>%VERSION%</b>.",
|
||||
"HTML_NEW_VERSION": "Dostępna jest nowa wersja: <b>%VERSION%<\/b>.",
|
||||
"LABEL_UPDATING": "Aktualizacja w toku...",
|
||||
"LABEL_CHECKING": "Szukanie aktualizacji...",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Włącz zdalną synchronizację",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Serwer",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL książki adresowej",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Użytkownik"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Użytkownik",
|
||||
"SYNC_NO": "Nie",
|
||||
"SYNC_YES": "Tak",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Motywy",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Todos os direitos reservados.",
|
||||
"HINT_READ_CHANGE_LOG": "Por favor, leia o registro de alterações antes de atualizar.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop está atualizado.",
|
||||
"HTML_NEW_VERSION": "Está disponível uma nova versão: <b>%VERSION%</b>.",
|
||||
"HTML_NEW_VERSION": "Está disponível uma nova versão: <b>%VERSION%<\/b>.",
|
||||
"LABEL_UPDATING": "Atualizando",
|
||||
"LABEL_CHECKING": "Checar por atualizações",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Habilitar sincronização remota",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Servidor",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL da lista de contatos",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Usuário"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Usuário",
|
||||
"SYNC_NO": "Não",
|
||||
"SYNC_YES": "Sim",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temas",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Ativar sincronização remota",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Servidor",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL do livro de endereços",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utilizador"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Utilizador",
|
||||
"SYNC_NO": "Não",
|
||||
"SYNC_YES": "Sim",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temas",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Enable remote synchronization",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Addressbook URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "User"
|
||||
"LABEL_CONTACTS_SYNC_USER": "User",
|
||||
"SYNC_NO": "Nu",
|
||||
"SYNC_YES": "Da",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Tematică",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Все права защищены.",
|
||||
"HINT_READ_CHANGE_LOG": "Пожалуйста, ознакомьтесь с изменениями перед обновлением.\n",
|
||||
"HINT_IS_UP_TO_DATE": "Версия RainLoop актуальна.",
|
||||
"HTML_NEW_VERSION": "Новая <b>%VERSION%</b> версия доступна.",
|
||||
"HTML_NEW_VERSION": "Новая <b>%VERSION%<\/b> версия доступна.",
|
||||
"LABEL_UPDATING": "Обновление",
|
||||
"LABEL_CHECKING": "Проверка",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Включить синхронизация",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Сервер",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Адресная книга (URL)",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Пользователь"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Пользователь",
|
||||
"SYNC_NO": "Нет",
|
||||
"SYNC_YES": "Да",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Темы Оформления",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Všetky práva vyhradené.",
|
||||
"HINT_READ_CHANGE_LOG": "Prosím prečítajte si zoznam zmien pred aktualizáciou.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop je aktuálny.",
|
||||
"HTML_NEW_VERSION": "Dostupná nová <b>%VERSION%</b> verzia.",
|
||||
"HTML_NEW_VERSION": "Dostupná nová <b>%VERSION%<\/b> verzia.",
|
||||
"LABEL_UPDATING": "Aktualizujem",
|
||||
"LABEL_CHECKING": "Kontrolujem aktualizácie",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Enable remote synchronization",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Addressbook URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "User"
|
||||
"LABEL_CONTACTS_SYNC_USER": "User",
|
||||
"SYNC_NO": "Nie",
|
||||
"SYNC_YES": "Áno",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Motívy",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Vse pravice pridržane.",
|
||||
"HINT_READ_CHANGE_LOG": "Preberite dnevnik sprememb pred posodobitvijo.",
|
||||
"HINT_IS_UP_TO_DATE": "Ni novih posodobitev.",
|
||||
"HTML_NEW_VERSION": "Na voljo je nova verzija <b>%VERSION%</b>.",
|
||||
"HTML_NEW_VERSION": "Na voljo je nova verzija <b>%VERSION%<\/b>.",
|
||||
"LABEL_UPDATING": "Posodabljanje",
|
||||
"LABEL_CHECKING": "Preverjanje za posdodobitve",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Omogoči oddaljeno sinhronizacijo",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Strežnik",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "URL imenika",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Uporabnik"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Uporabnik",
|
||||
"SYNC_NO": "Ne",
|
||||
"SYNC_YES": "Da",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Teme",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "Alla rättigheter förbehållna.",
|
||||
"HINT_READ_CHANGE_LOG": "Vänligen läs ändringsloggen innan du uppdaterar.",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop är aktuell.",
|
||||
"HTML_NEW_VERSION": "Ny <b>%VERSION%</b> version är tillgänglig",
|
||||
"HTML_NEW_VERSION": "Ny <b>%VERSION%<\/b> version är tillgänglig",
|
||||
"LABEL_UPDATING": "Uppdaterar",
|
||||
"LABEL_CHECKING": "Letar efter uppdaterar",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Aktivera fjärrsynkronisering",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Server",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adressboks-URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Användare"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Användare",
|
||||
"SYNC_NO": "Nej",
|
||||
"SYNC_YES": "Ja",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Teman",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Uzaktan eşleştirme etkin",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Sunucu",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Adres Defteri URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Kullanıcı Adı"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Kullanıcı Adı",
|
||||
"SYNC_NO": "Hayır",
|
||||
"SYNC_YES": "Evet",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Temalar",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "Увімкнути синхронизацію",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "Сервер",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "Адресна книга (URL)",
|
||||
"LABEL_CONTACTS_SYNC_USER": "Користувач"
|
||||
"LABEL_CONTACTS_SYNC_USER": "Користувач",
|
||||
"SYNC_NO": "Ні",
|
||||
"SYNC_YES": "Так",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "Теми Оформлення",
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"LABEL_ALL_RIGHTS_RESERVED": "保留所有权利",
|
||||
"HINT_READ_CHANGE_LOG": "请在更新前阅读更新日志",
|
||||
"HINT_IS_UP_TO_DATE": "RainLoop已经是最新版本的",
|
||||
"HTML_NEW_VERSION": "有新的<b>%VERSION%</b> 版本可用.",
|
||||
"HTML_NEW_VERSION": "有新的<b>%VERSION%<\/b> 版本可用.",
|
||||
"LABEL_UPDATING": "更新中",
|
||||
"LABEL_CHECKING": "检查更新",
|
||||
"BUTTON_RELEASES": "Releases"
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "启用远程同步",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "服务器",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "地址簿 URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "用户名"
|
||||
"LABEL_CONTACTS_SYNC_USER": "用户名",
|
||||
"SYNC_NO": "否",
|
||||
"SYNC_YES": "是",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "主题",
|
||||
|
|
|
@ -404,7 +404,10 @@
|
|||
"LABEL_CONTACTS_SYNC_ENABLE": "啟用遠程同步",
|
||||
"LABEL_CONTACTS_SYNC_SERVER": "伺服器",
|
||||
"LABEL_CONTACTS_SYNC_AB_URL": "地址簿URL",
|
||||
"LABEL_CONTACTS_SYNC_USER": "用戶名"
|
||||
"LABEL_CONTACTS_SYNC_USER": "用戶名",
|
||||
"SYNC_NO": "否",
|
||||
"SYNC_YES": "是",
|
||||
"SYNC_READ": "Read only"
|
||||
},
|
||||
"SETTINGS_THEMES": {
|
||||
"LEGEND_THEMES": "主題",
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<span data-i18n="CONTACTS/BUTTON_EXPORT_VCARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="dividerbar" role="presentation" data-bind="visible: enableContactsSync() && allowContactsSync()">
|
||||
<li class="dividerbar" role="presentation" data-bind="visible: contactsSyncEnabled">
|
||||
<a href="#" tabindex="-1" data-bind="command: syncCommand">
|
||||
<i class="fontastic" data-bind="css: {'icon-spinner': contacts.syncing}">⇆</i>
|
||||
<span data-i18n="CONTACTS/BUTTON_SYNC"></span>
|
||||
|
|
|
@ -13,35 +13,30 @@
|
|||
<div class="form-horizontal" data-bind="visible: allowContactsSync">
|
||||
<div class="legend" data-i18n="SETTINGS_CONTACTS/LEGEND_CONTACTS_SYNC"></div>
|
||||
<div class="control-group">
|
||||
<label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_ENABLE"></label>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
name: 'Select',
|
||||
params: {
|
||||
label: 'SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_ENABLE',
|
||||
value: enableContactsSync
|
||||
options: syncModeOptions,
|
||||
value: syncMode,
|
||||
optionsText: 'name',
|
||||
optionsValue: 'id'
|
||||
}
|
||||
}"></div>
|
||||
<!-- TODO: https://github.com/the-djmaze/snappymail/issues/293
|
||||
<select>
|
||||
<option value="0">No</option>
|
||||
<option value="1">Yes, read + write</option>
|
||||
<option value="2">Yes, read</option>
|
||||
</select>
|
||||
-->
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_AB_URL"></label>
|
||||
<input type="text" class="input-xxlarge" autocomplete="off" autocorrect="off" autocapitalize="off"
|
||||
spellcheck="false" data-bind="value: contactsSyncUrl" placeholder="https://">
|
||||
spellcheck="false" data-bind="value: syncUrl" placeholder="https://">
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_USER"></label>
|
||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: contactsSyncUser">
|
||||
data-bind="value: syncUser">
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label data-i18n="GLOBAL/PASSWORD"></label>
|
||||
<input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off"
|
||||
spellcheck="false" data-bind="value: contactsSyncPass">
|
||||
spellcheck="false" data-bind="value: syncPass">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue