Merge branch 'develop' into feature/Extract_Designer_to_plugin

This commit is contained in:
Arin Alexander 2017-12-11 14:53:41 +03:00
commit 4c3e96b01e
14 changed files with 3676 additions and 75 deletions

View File

@ -75,7 +75,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
LIMEREPORT_VERSION_MAJOR = 1
LIMEREPORT_VERSION_MINOR = 4
LIMEREPORT_VERSION_RELEASE = 54
LIMEREPORT_VERSION_RELEASE = 57
LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}'
DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\"

View File

@ -1,9 +1,21 @@
#include <QApplication>
#include <LimeReport>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator limeReportTranslator;
QString translationPath = QApplication::applicationDirPath();
translationPath.append("/languages");
limeReportTranslator.load("limereport_"+QLocale::system().name(),translationPath);
a.installTranslator(&limeReportTranslator);
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),translationPath);
a.installTranslator(&qtTranslator);
LimeReport::ReportEngine report;
if (a.arguments().count()>1){
report.loadFromFile(a.arguments().at(1));

View File

@ -95,7 +95,7 @@ void ChartItemEditor::init()
ui->tableWidget->setColumnCount(1);
ui->tableWidget->setRowCount(m_charItem->series().count());
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Series name"));
ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem(tr("Series name")));
rebuildTable();

View File

@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
<string>Series editor</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>

View File

@ -48,8 +48,8 @@ namespace{
LimeReport::ItemLocationPropItem::ItemLocationPropItem(QObject* object, ObjectsList* objects, const QString &name, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly)
:LimeReport::ObjectPropItem(object, objects, name, displayName, value, parent, readonly){
m_locationMap.insert("Band",LimeReport::ItemDesignIntf::Band);
m_locationMap.insert("Page",LimeReport::ItemDesignIntf::Page);
m_locationMap.insert(tr("Band"),LimeReport::ItemDesignIntf::Band);
m_locationMap.insert(tr("Page"),LimeReport::ItemDesignIntf::Page);
}

View File

@ -90,7 +90,7 @@ contains(CONFIG,zint){
####Automatically build required translation files (*.qm)
contains(CONFIG,build_translations){
LANGUAGES = ru es_ES ar
LANGUAGES = ru es_ES ar fr
defineReplace(prependAll) {
for(a,$$1):result += $$2$${a}$$3

View File

@ -628,10 +628,10 @@ QPointF BaseDesignIntf::modifyPosForAlignedItem(const QPointF& pos){
result.setX(leftBorder);
break;
case RightItemAlign:
result.setX(parent->width()-rightBorder);
result.setX(parent->width() - (rightBorder + width()));
break;
case CenterItemAlign:
result.setX((avaibleSpace-width())/2);
result.setX((avaibleSpace-width()) / 2 + leftBorder);
break;
case ParentWidthItemAlign:
result.setX(leftBorder);

View File

@ -134,6 +134,19 @@ void QObjectPropertyModel::translatePropertyName()
tr("condition");
tr("groupFieldName");
tr("keepGroupTogether");
tr("endlessHeight");
tr("extendedHeight");
tr("isExtendedInDesignMode");
tr("pageIsTOC");
tr("setPageSizeToPrinter");
tr("fillInSecondPass");
tr("chartTitle");
tr("chartType");
tr("drawLegendBorder");
tr("labelsField");
tr("legendAlign");
tr("series");
tr("titleAlign");
}
void QObjectPropertyModel::clearObjectsList()

View File

@ -54,10 +54,10 @@ QWidget *EnumPropItem::createProperyEditor(QWidget *parent) const
QStringList enumValues;
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){
if (m_acceptableValues.isEmpty()) enumValues.append(propEnum.key(i));
if (m_acceptableValues.isEmpty()) enumValues.append(tr(propEnum.key(i)));
else {
if (m_acceptableValues.contains(propEnum.value(i))){
enumValues.append(propEnum.key(i));
enumValues.append(tr(propEnum.key(i)));
}
}
}
@ -75,6 +75,74 @@ void EnumPropItem::slotEnumChanged(const QString &text)
}
}
void EnumPropItem::initTranslation()
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){
m_translation.insert(QString(tr(propEnum.key(i))), QString(propEnum.key(i)));
}
}
void EnumPropItem::translateEnumItemName()
{
tr("Default");
tr("Portrait");
tr("Landscape");
tr("NoneAutoWidth");
tr("MaxWordLength");
tr("MaxStringLength");
tr("TransparentMode");
tr("OpaqueMode");
tr("Angle0");
tr("Angle90");
tr("Angle180");
tr("Angle270");
tr("Angle45");
tr("Angle315");
tr("DateTime");
tr("Double");
tr("NoBrush");
tr("SolidPattern");
tr("Dense1Pattern");
tr("Dense2Pattern");
tr("Dense3Pattern");
tr("Dense4Pattern");
tr("Dense5Pattern");
tr("Dense6Pattern");
tr("Dense7Pattern");
tr("HorPattern");
tr("VerPattern");
tr("CrossPattern");
tr("BDiagPattern");
tr("FDiagPattern");
tr("LeftToRight");
tr("RightToLeft");
tr("LayoutDirectionAuto");
tr("LeftItemAlign");
tr("RightItemAlign");
tr("CenterItemAlign");
tr("ParentWidthItemAlign");
tr("DesignedItemAlign");
tr("HorizontalLine");
tr("VerticalLine");
tr("Ellipse");
tr("Rectangle");
tr("Page");
tr("Band");
tr("Horizontal");
tr("Vertical");
tr("VerticalUniform");
tr("Pie");
tr("VerticalBar");
tr("HorizontalBar");
tr("LegendAlignTop");
tr("LegendAlignCenter");
tr("LegendAlignBottom");
tr("TitleAlignLeft");
tr("TitleAlignRight");
tr("TitleAlignCenter");
}
void EnumPropItem::setPropertyEditorData(QWidget *propertyEditor, const QModelIndex &) const
{
ComboBoxEditor *editor=qobject_cast<ComboBoxEditor *>(propertyEditor);
@ -90,13 +158,13 @@ void EnumPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod
QString EnumPropItem::nameByType(int value) const
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
return propEnum.valueToKey(value);
return tr(propEnum.valueToKey(value));
}
int EnumPropItem::typeByName(const QString &value) const
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
return propEnum.keyToValue(value.toLatin1());
return propEnum.keyToValue(m_translation.value(value).toLatin1());
}
QString EnumPropItem::displayValue() const

View File

@ -31,17 +31,18 @@
#define LRENUMPROPITEM_H
#include "lrobjectpropitem.h"
#include <QMap>
namespace LimeReport{
class EnumPropItem : public ObjectPropItem
{
Q_OBJECT
public:
EnumPropItem():ObjectPropItem(), m_settingValue(false){}
EnumPropItem():ObjectPropItem(), m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){}
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly, QVector<int> acceptableValues)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){}
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){initTranslation();}
QWidget* createProperyEditor(QWidget *parent) const;
QString displayValue() const;
void setPropertyEditorData(QWidget * propertyEditor, const QModelIndex &) const;
@ -52,9 +53,13 @@ protected:
int typeByName(const QString& propertyValue) const;
private slots:
void slotEnumChanged(const QString& text);
private:
void initTranslation();
void translateEnumItemName();
private:
QVector<int> m_acceptableValues;
bool m_settingValue;
QMap<QString, QString> m_translation;
};
}
#endif // LRENUMPROPITEM_H

View File

@ -58,12 +58,14 @@ void FlagsPropItem::createChildren()
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++)
{
this->appendItem(new LimeReport::FlagPropItem(
object(), objects(), QString(propEnum.key(i)), QString(propEnum.key(i)),
bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))),
this, false
)
);
if ( propEnum.keyToValue(propEnum.key(i)) !=0 ) {
this->appendItem(new LimeReport::FlagPropItem(
object(), objects(), QString(propEnum.key(i)), tr(propEnum.key(i)),
bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))),
this, false
)
);
}
}
}
@ -93,10 +95,10 @@ QString FlagsPropItem::displayValue() const
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++)
{
if ( (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i) ))
if ((propEnum.keyToValue(propEnum.key(i)) == 0) ? propertyValue().toInt() == 0 : (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i))) == propEnum.keyToValue(propEnum.key(i)))
{
if (result.isEmpty()) result+=propEnum.key(i);
else result=result+" | "+propEnum.key(i);
if (result.isEmpty()) result+= tr(propEnum.key(i));
else result=result+" | "+tr(propEnum.key(i));
}
}
@ -113,6 +115,15 @@ void FlagsPropItem::slotEnumChanged(QString /*text*/)
{
}
void FlagsPropItem::translateFlagsItem()
{
tr("NoLine");
tr("TopLine");
tr("BottomLine");
tr("LeftLine");
tr("RightLine");
}
FlagPropItem::FlagPropItem(QObject* object, ObjectsList* objects, const QString &propName, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly)
:BoolPropItem(object, objects, propName,displayName,value,parent,readonly)
{
@ -129,8 +140,8 @@ void FlagPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod
bool value = qobject_cast<CheckBoxEditor*>(propertyEditor)->isChecked();
model->setData(index,value);
int flags = object()->property(parent()->propertyName().toLatin1()).toInt();
if (value) flags=flags | valueByName(displayName());
else if (flags&valueByName(displayName())) flags=flags ^ valueByName(displayName());
if (value) flags = flags | valueByName(propertyName());
else if (flags & valueByName(propertyName())) flags = flags ^ valueByName(propertyName());
setValueToObject(parent()->propertyName(),flags);
parent()->setPropertyValue(flags);
}

View File

@ -46,6 +46,8 @@ public:
virtual void setPropertyValue(QVariant propertyValue);
private slots:
void slotEnumChanged(QString);
private:
void translateFlagsItem();
private:
QSet<int> m_acceptableValues;
QString nameByType(int propertyValue) const;

File diff suppressed because it is too large Load Diff

View File

@ -12,43 +12,51 @@
<name>ChartItemEditor</name>
<message>
<source>Form</source>
<translation type="unfinished">Форма</translation>
<translation type="obsolete">Форма</translation>
</message>
<message>
<source>Series</source>
<translation type="unfinished"></translation>
<translation>Серии</translation>
</message>
<message>
<source>Add</source>
<translation type="unfinished"></translation>
<translation>Добавить</translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
<translation>Удалить</translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished">Имя переменной</translation>
<translation>Наименование</translation>
</message>
<message>
<source>Values field</source>
<translation type="unfinished"></translation>
<translation>Значения</translation>
</message>
<message>
<source>Color</source>
<translation type="unfinished"></translation>
<translation>Цвет</translation>
</message>
<message>
<source>Type</source>
<translation type="unfinished">Тип</translation>
<translation>Тип</translation>
</message>
<message>
<source>Labels field</source>
<translation type="unfinished"></translation>
<translation>Подписи</translation>
</message>
<message>
<source>Ok</source>
<translation type="unfinished">Ок</translation>
<translation>Ок</translation>
</message>
<message>
<source>Series name</source>
<translation>Серии</translation>
</message>
<message>
<source>Series editor</source>
<translation>Редактор серий</translation>
</message>
</context>
<context>
@ -75,18 +83,18 @@
</message>
<message>
<source>Mandatory</source>
<translation type="unfinished"></translation>
<translation>Обязательная</translation>
</message>
</context>
<context>
<name>LanguageSelectDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
<translation>Диалог</translation>
</message>
<message>
<source>Language</source>
<translation type="unfinished"></translation>
<translation>Язык</translation>
</message>
</context>
<context>
@ -143,7 +151,7 @@ p, li { white-space: pre-wrap; }
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;justify&quot; style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600; color:#000000;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Copyright 2015 Arin Alexander. All rights reserved.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -260,7 +268,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;; font-style:italic;&quot;&gt;signature of Ty Coon&lt;/span&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;, 1 April 1990&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:15px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;Ty Coon, President of Vice&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:19px; margin-bottom:19px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;sans-serif&apos;;&quot;&gt;That&apos;s all there is to it!&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -390,15 +398,15 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Keep bottom space</source>
<translation type="unfinished"></translation>
<translation>Сохранять отступ снизу</translation>
</message>
<message>
<source>Start from new page</source>
<translation type="unfinished"></translation>
<translation>Начинать с новой страницы</translation>
</message>
<message>
<source>Start new page</source>
<translation type="unfinished"></translation>
<translation>Начинать новую страницу</translation>
</message>
</context>
<context>
@ -730,6 +738,256 @@ p, li { white-space: pre-wrap; }
<translation>Редактор действий</translation>
</message>
</context>
<context>
<name>LimeReport::EnumPropItem</name>
<message>
<source>Default</source>
<translation>По умолчанию</translation>
</message>
<message>
<source>Portrait</source>
<translation>Портретная</translation>
</message>
<message>
<source>Landscape</source>
<translation>Альбомная</translation>
</message>
<message>
<source>NoneAutoWidth</source>
<translation>Нет</translation>
</message>
<message>
<source>MaxWordLength</source>
<translation>По ширине слова</translation>
</message>
<message>
<source>MaxStringLength</source>
<translation>По ширине строки</translation>
</message>
<message>
<source>TransparentMode</source>
<translation>Прозрачный</translation>
</message>
<message>
<source>OpaqueMode</source>
<translation>Заливка</translation>
</message>
<message>
<source>Angle0</source>
<translation>0</translation>
</message>
<message>
<source>Angle90</source>
<translation>90</translation>
</message>
<message>
<source>Angle180</source>
<translation>180</translation>
</message>
<message>
<source>Angle270</source>
<translation>270</translation>
</message>
<message>
<source>Angle45</source>
<translation>45</translation>
</message>
<message>
<source>Angle315</source>
<translation>315</translation>
</message>
<message>
<source>DateTime</source>
<translation>Дата и время</translation>
</message>
<message>
<source>Double</source>
<translation>Число</translation>
</message>
<message>
<source>NoBrush</source>
<translation>Нет заливки</translation>
</message>
<message>
<source>SolidPattern</source>
<translation>Сплошная заливка</translation>
</message>
<message>
<source>Dense1Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense2Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense3Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense4Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense5Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense6Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense7Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HorPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>VerPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CrossPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BDiagPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FDiagPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LeftToRight</source>
<translation>Слева на право</translation>
</message>
<message>
<source>RightToLeft</source>
<translation>С права на лево</translation>
</message>
<message>
<source>LayoutDirectionAuto</source>
<translation>Авто</translation>
</message>
<message>
<source>LeftItemAlign</source>
<translation>Слева</translation>
</message>
<message>
<source>RightItemAlign</source>
<translation>Справа</translation>
</message>
<message>
<source>CenterItemAlign</source>
<translation>По центру</translation>
</message>
<message>
<source>ParentWidthItemAlign</source>
<translation>По ширине родителя</translation>
</message>
<message>
<source>DesignedItemAlign</source>
<translation>Заданное положение</translation>
</message>
<message>
<source>HorizontalLine</source>
<translation>Горизонтальная линия</translation>
</message>
<message>
<source>VerticalLine</source>
<translation>Вертикальная линия</translation>
</message>
<message>
<source>Ellipse</source>
<translation>Элипс</translation>
</message>
<message>
<source>Rectangle</source>
<translation>Прямоугольник</translation>
</message>
<message>
<source>Page</source>
<translation>Страница</translation>
</message>
<message>
<source>Band</source>
<translation>Раздел</translation>
</message>
<message>
<source>Horizontal</source>
<translation>Горизонтально</translation>
</message>
<message>
<source>Vertical</source>
<translation>Вертикально</translation>
</message>
<message>
<source>VerticalUniform</source>
<translation>Вертикально равномерно</translation>
</message>
<message>
<source>Pie</source>
<translation>Круговая</translation>
</message>
<message>
<source>VerticalBar</source>
<translation>Вертикальные столбцы</translation>
</message>
<message>
<source>HorizontalBar</source>
<translation>Горизонтальные столбцы</translation>
</message>
<message>
<source>LegendAlignTop</source>
<translation>Сверху</translation>
</message>
<message>
<source>LegendAlignCenter</source>
<translation>По центру</translation>
</message>
<message>
<source>LegendAlignBottom</source>
<translation>Снизу</translation>
</message>
<message>
<source>TitleAlignLeft</source>
<translation>Слева</translation>
</message>
<message>
<source>TitleAlignRight</source>
<translation>Справа</translation>
</message>
<message>
<source>TitleAlignCenter</source>
<translation>По цетру</translation>
</message>
</context>
<context>
<name>LimeReport::FlagsPropItem</name>
<message>
<source>NoLine</source>
<translation>Нет границ</translation>
</message>
<message>
<source>TopLine</source>
<translation>Верхняя граница</translation>
</message>
<message>
<source>BottomLine</source>
<translation>Нижняя граница</translation>
</message>
<message>
<source>LeftLine</source>
<translation>Левая граница</translation>
</message>
<message>
<source>RightLine</source>
<translation>Правая граница</translation>
</message>
</context>
<context>
<name>LimeReport::FontEditorWidget</name>
<message>
@ -816,6 +1074,17 @@ p, li { white-space: pre-wrap; }
<translation>Изображение</translation>
</message>
</context>
<context>
<name>LimeReport::ItemLocationPropItem</name>
<message>
<source>Band</source>
<translation>Раздел</translation>
</message>
<message>
<source>Page</source>
<translation>Страница</translation>
</message>
</context>
<context>
<name>LimeReport::ItemsAlignmentEditorWidget</name>
<message>
@ -1421,7 +1690,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>securityLevel</source>
<translation type="unfinished">Уровень безопасности</translation>
<translation>Уровень безопасности</translation>
</message>
<message>
<source>testValue</source>
@ -1429,11 +1698,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>whitespace</source>
<translation type="unfinished">Отступ</translation>
<translation>Отступ</translation>
</message>
<message>
<source>cornerRadius</source>
<translation type="unfinished">Радиус закругления</translation>
<translation>Радиус закругления</translation>
</message>
<message>
<source>shapeColor</source>
@ -1487,6 +1756,58 @@ p, li { white-space: pre-wrap; }
<source>repeatOnEachRow</source>
<translation>Печатать на каждой странице</translation>
</message>
<message>
<source>endlessHeight</source>
<translation>Бесконечная страница</translation>
</message>
<message>
<source>extendedHeight</source>
<translation>Дополнителная высота</translation>
</message>
<message>
<source>isExtendedInDesignMode</source>
<translation>Увеличенный размер в дизайнере</translation>
</message>
<message>
<source>pageIsTOC</source>
<translation>Оглавление</translation>
</message>
<message>
<source>setPageSizeToPrinter</source>
<translation>Отправлять размер страницы принтеру</translation>
</message>
<message>
<source>fillInSecondPass</source>
<translation>Заполнять на втором проходе</translation>
</message>
<message>
<source>chartTitle</source>
<translation>Заголовок диаграммы</translation>
</message>
<message>
<source>chartType</source>
<translation>Тип диаграммы</translation>
</message>
<message>
<source>drawLegendBorder</source>
<translation>Границы вокруг легенды</translation>
</message>
<message>
<source>labelsField</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>legendAlign</source>
<translation>Расположение легенды</translation>
</message>
<message>
<source>series</source>
<translation>Серии</translation>
</message>
<message>
<source>titleAlign</source>
<translation>Расположение заголовка</translation>
</message>
</context>
<context>
<name>LimeReport::RectMMPropItem</name>
@ -1534,7 +1855,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Translations</source>
<translation type="unfinished"></translation>
<translation>Переводы</translation>
</message>
</context>
<context>
@ -1834,7 +2155,7 @@ This preview is no longer valid.</source>
</message>
<message>
<source>Language %1 already exists</source>
<translation type="unfinished"></translation>
<translation>Перевод %1 уже существует!</translation>
</message>
</context>
<context>
@ -2024,15 +2345,15 @@ This preview is no longer valid.</source>
<name>LimeReport::ScriptEditor</name>
<message>
<source>Form</source>
<translation type="unfinished">Форма</translation>
<translation>Форма</translation>
</message>
<message>
<source>Data</source>
<translation type="unfinished">Данные</translation>
<translation>Данные</translation>
</message>
<message>
<source>Functions</source>
<translation type="unfinished">Функции</translation>
<translation>Функции</translation>
</message>
</context>
<context>
@ -2122,35 +2443,35 @@ This preview is no longer valid.</source>
</message>
<message>
<source>Datasource</source>
<translation type="unfinished">Источник данных</translation>
<translation>Источник данных</translation>
</message>
<message>
<source>ValueField</source>
<translation type="unfinished"></translation>
<translation>Поле значения</translation>
</message>
<message>
<source>KeyField</source>
<translation type="unfinished"></translation>
<translation>Поле ключа</translation>
</message>
<message>
<source>KeyFieldValue</source>
<translation type="unfinished"></translation>
<translation>Значение поля ключа</translation>
</message>
<message>
<source>Unique identifier</source>
<translation type="unfinished"></translation>
<translation>Уникальный идентификатор</translation>
</message>
<message>
<source>Content</source>
<translation type="unfinished">Содержимое</translation>
<translation>Содержимое</translation>
</message>
<message>
<source>Indent</source>
<translation type="unfinished"></translation>
<translation>Отступ</translation>
</message>
<message>
<source>datasourceName</source>
<translation type="unfinished"></translation>
<translation>Источника данных</translation>
</message>
</context>
<context>
@ -2326,47 +2647,47 @@ This preview is no longer valid.</source>
<name>LimeReport::TranslationEditor</name>
<message>
<source>Form</source>
<translation type="unfinished">Форма</translation>
<translation>Форма</translation>
</message>
<message>
<source>Languages</source>
<translation type="unfinished"></translation>
<translation>Языки</translation>
</message>
<message>
<source>...</source>
<translation type="unfinished">...</translation>
<translation>...</translation>
</message>
<message>
<source>Pages</source>
<translation type="unfinished"></translation>
<translation>Страницы</translation>
</message>
<message>
<source>Strings</source>
<translation type="unfinished"></translation>
<translation>Строки</translation>
</message>
<message>
<source>Source Text</source>
<translation type="unfinished"></translation>
<translation>Исходный текст</translation>
</message>
<message>
<source>Translation</source>
<translation type="unfinished"></translation>
<translation>Превод</translation>
</message>
<message>
<source>Checked</source>
<translation type="unfinished"></translation>
<translation>Проверено</translation>
</message>
<message>
<source>Report Item</source>
<translation type="unfinished"></translation>
<translation>Элемент отчета</translation>
</message>
<message>
<source>Property</source>
<translation type="unfinished"></translation>
<translation>Свойство</translation>
</message>
<message>
<source>Source text</source>
<translation type="unfinished"></translation>
<translation>Исходный текст</translation>
</message>
</context>
<context>
@ -2600,19 +2921,19 @@ This preview is no longer valid.</source>
</message>
<message>
<source>Chart Item</source>
<translation type="unfinished"></translation>
<translation>Диаграмма</translation>
</message>
<message>
<source>First</source>
<translation type="unfinished"></translation>
<translation>Первая</translation>
</message>
<message>
<source>Second</source>
<translation type="unfinished"></translation>
<translation>Вторая</translation>
</message>
<message>
<source>Thrid</source>
<translation type="unfinished"></translation>
<translation>Третья</translation>
</message>
</context>
</TS>