shopizer-developers

Changes

pom.xml 2(+1 -1)

README.md 0(+0 -0)

RELEASE-NOTES.md 0(+0 -0)

sm-core/files/repos/FilesRepository.dat 0(+0 -0)

sm-core/files/store/StoreRepository.dat 0(+0 -0)

sm-shop/pom.xml 2(+1 -1)

sm-shop/SALESMANAGER.trace.db 81(+0 -81)

sm-shop/service.yml.txt 14(+0 -14)

Details

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index 806a595..8966524 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
 		<c3p0-version>0.9.5.2</c3p0-version>
 		<org.elasticsearch-version>2.4.1</org.elasticsearch-version>
 		<infinispan.version>6.0.2.Final</infinispan.version>
-		<mysql-jdbc-version>5.1.40</mysql-jdbc-version>
+		<mysql-jdbc-version>6.0.5</mysql-jdbc-version>
 		<simple-json-version>1.1.1</simple-json-version>
     </properties>
 
diff --git a/postman-tests/SALESMANAGER.h2.db b/postman-tests/SALESMANAGER.h2.db
new file mode 100644
index 0000000..89781c4
Binary files /dev/null and b/postman-tests/SALESMANAGER.h2.db differ

README.md 0(+0 -0)

diff --git a/README.md b/README.md
old mode 100644
new mode 100755

RELEASE-NOTES.md 0(+0 -0)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
old mode 100644
new mode 100755
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/CacheManagerImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/CacheManagerImpl.java
index 4fc2489..bf1583d 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/CacheManagerImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/CacheManagerImpl.java
@@ -1,6 +1,16 @@
 package com.salesmanager.core.business.modules.cms.impl;
 
+import java.util.List;
+import java.util.Properties;
+
 import org.infinispan.Cache;
+import org.infinispan.configuration.cache.Configuration;
+import org.infinispan.configuration.cache.ConfigurationBuilder;
+import org.infinispan.configuration.cache.PersistenceConfigurationBuilder;
+import org.infinispan.configuration.cache.SingleFileStoreConfigurationBuilder;
+import org.infinispan.configuration.cache.StoreConfiguration;
+import org.infinispan.eviction.EvictionStrategy;
+import org.infinispan.manager.DefaultCacheManager;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.infinispan.tree.TreeCache;
 import org.infinispan.tree.TreeCacheFactory;
@@ -11,11 +21,13 @@ public abstract class CacheManagerImpl implements CacheManager {
 	
 	private static final Logger LOGGER = LoggerFactory.getLogger(CacheManagerImpl.class);
 
+	private static final String LOCATION_PROPERTIES = "location";
+	
 	@SuppressWarnings("rawtypes")
 	private TreeCache treeCache = null;
 
 	@SuppressWarnings("unchecked")
-	protected void init(String namedCache) {
+	protected void init(String namedCache, String location) {
 		
 		
 		try {
@@ -23,11 +35,57 @@ public abstract class CacheManagerImpl implements CacheManager {
 
 				 //manager = new DefaultCacheManager(repositoryFileName);
 			
-				 VendorCacheManager cacheManager =  VendorCacheManager.getInstance();
+			     VendorCacheManager manager =  VendorCacheManager.getInstance();
+				 
+				 if(manager==null) {
+					 LOGGER.error("CacheManager is null");
+					 return;
+				 }
+				 
+				 
+				 //final EmbeddedCacheManager manager = new DefaultCacheManager();  
+				 final PersistenceConfigurationBuilder persistConfig = new ConfigurationBuilder().persistence();  
+				 persistConfig.passivation(false);
+				 final SingleFileStoreConfigurationBuilder fileStore = new SingleFileStoreConfigurationBuilder(persistConfig).location(location);
+				 fileStore.invocationBatching().enable();
+				 fileStore.eviction().maxEntries(15);
+				 fileStore.eviction().strategy(EvictionStrategy.LRU);
+				 fileStore.jmxStatistics().disable();
+				 final Configuration config = persistConfig.addStore(fileStore).build();  
+				 config.compatibility().enabled();  
+				 manager.getManager().defineConfiguration(namedCache, config);  
+
+				 final Cache<String, String> cache = manager.getManager().getCache(namedCache);  
+				 //c.addListener(new CacheListener());
 
+				 
+				/* 
 				 @SuppressWarnings("rawtypes")
 				 Cache cache = cacheManager.getManager().getCache(namedCache);
 				 cache.getCacheConfiguration().invocationBatching().enabled();
+				 
+				 Configuration c = cacheManager.getManager().getCacheConfiguration(namedCache);
+				 if(c!=null) {
+					 List<StoreConfiguration> l =c.persistence().stores();
+					 StoreConfiguration sc = null;
+					 int i = 0;
+					 for(StoreConfiguration conf : l) {
+						 if(conf.properties()!=null && conf.properties().containsKey(LOCATION_PROPERTIES)) {
+							 sc = conf;
+							 continue;
+						 }
+						 i++;
+					 }
+					 if(sc!=null) {
+						 sc.properties().setProperty(LOCATION_PROPERTIES, location);
+
+						 c.persistence().stores().set(i, sc);
+						 
+					 }
+					 
+					 
+				  }*/
+					
 		    
 				 TreeCacheFactory f = new TreeCacheFactory();
 		    
@@ -59,7 +117,7 @@ public abstract class CacheManagerImpl implements CacheManager {
 	public TreeCache getTreeCache() {
 		return treeCache;
 	}
-	
+
 	
 
 }
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StaticContentCacheManagerImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StaticContentCacheManagerImpl.java
index 732be46..2517294 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StaticContentCacheManagerImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StaticContentCacheManagerImpl.java
@@ -3,6 +3,8 @@
  */
 package com.salesmanager.core.business.modules.cms.impl;
 
+import com.google.api.client.util.Value;
+
 /**
  * Cache manager to handle static content data in Infinispan cache.
  * static content data can be of following type
@@ -18,25 +20,26 @@ package com.salesmanager.core.business.modules.cms.impl;
  */
 public class StaticContentCacheManagerImpl extends CacheManagerImpl
 {
-    private static  StaticContentCacheManagerImpl cacheManager = null;
-    private final static String NAMED_CACHE = "FilesRepository";
+    
+	private final static String NAMED_CACHE = "FilesRepository";
+    
+    @Value(("${config.cms.files.location}"))
+    private String location = null;
     
 
-    private StaticContentCacheManagerImpl() {
+    public StaticContentCacheManagerImpl(String location) {
         
-        super.init(NAMED_CACHE);
+        super.init(NAMED_CACHE,location);
         
         
     }
 
-   public static StaticContentCacheManagerImpl getInstance() {
-        
-        if(cacheManager==null) {
-            cacheManager = new StaticContentCacheManagerImpl();
-        }
-        
-        return cacheManager;
-      
-        
-    }
+
+	public String getLocation() {
+		return location;
+	}
+	
+	public void setLocation(String location) {
+		this.location = location;
+	}
 }
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StoreCacheManagerImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StoreCacheManagerImpl.java
index b2e43b0..80caefa 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StoreCacheManagerImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/StoreCacheManagerImpl.java
@@ -1,7 +1,5 @@
 package com.salesmanager.core.business.modules.cms.impl;
 
-
-
 /**
  * Used for managing images
  * @author casams1
@@ -10,30 +8,11 @@ package com.salesmanager.core.business.modules.cms.impl;
 public class StoreCacheManagerImpl extends CacheManagerImpl {
 	
 	
-	private static  StoreCacheManagerImpl cacheManager = null;
 	private final static String NAMED_CACHE = "StoreRepository";
-	
-
-	
-
-	private StoreCacheManagerImpl() {
-		
-		super.init(NAMED_CACHE);
-		
-		
-	}
 
-	
-	public static StoreCacheManagerImpl getInstance() {
-		
-		if(cacheManager==null) {
-			cacheManager = new StoreCacheManagerImpl();
 
-		}
-		
-		return cacheManager;
-		
-		
+	public StoreCacheManagerImpl(String location) {		
+		super.init(NAMED_CACHE,location);
 	}
 
 
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/VendorCacheManager.java b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/VendorCacheManager.java
index b0cd687..af923e8 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/VendorCacheManager.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/modules/cms/impl/VendorCacheManager.java
@@ -1,5 +1,6 @@
 package com.salesmanager.core.business.modules.cms.impl;
 
+import org.infinispan.configuration.cache.Configuration;
 import org.infinispan.manager.DefaultCacheManager;
 import org.infinispan.manager.EmbeddedCacheManager;
 import org.slf4j.Logger;
@@ -17,7 +18,8 @@ public class VendorCacheManager {
 	private VendorCacheManager(){
 		
 		try {
-			manager = new DefaultCacheManager(repositoryFileName);
+			//manager = new DefaultCacheManager(repositoryFileName);
+			manager = new DefaultCacheManager();
 		} catch (Exception e) {
 			LOGGER.error("Cannot start manager " + e.toString());
 		}
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/modules/utils/GeoLocationImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/modules/utils/GeoLocationImpl.java
index 1be944f..5e8c470 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/modules/utils/GeoLocationImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/modules/utils/GeoLocationImpl.java
@@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
 
 import com.maxmind.geoip2.DatabaseReader;
 import com.maxmind.geoip2.model.CityResponse;
+import com.salesmanager.core.business.exception.ServiceException;
 import com.salesmanager.core.model.common.Address;
 import com.salesmanager.core.modules.utils.GeoLocation;
 
@@ -36,6 +37,7 @@ public class GeoLocationImpl implements GeoLocation {
 		
 			Address address = new Address();
 
+			try {
 			
 			CityResponse response = reader.city(InetAddress.getByName(ipAddress));
 
@@ -44,7 +46,11 @@ public class GeoLocationImpl implements GeoLocation {
 			address.setZone(response.getMostSpecificSubdivision().getIsoCode());
 			address.setCity(response.getCity().getName());
 			
-
+			} catch(com.maxmind.geoip2.exception.AddressNotFoundException ne) {
+				LOGGER.debug("Address not fount in DB " + ne.getMessage());
+			} catch(Exception e) {
+				throw new ServiceException(e);
+			}
 
 		
 			return address;
diff --git a/sm-core/src/main/resources/profiles/gcp/shopizer-core.properties b/sm-core/src/main/resources/profiles/gcp/shopizer-core.properties
new file mode 100644
index 0000000..7471395
--- /dev/null
+++ b/sm-core/src/main/resources/profiles/gcp/shopizer-core.properties
@@ -0,0 +1,22 @@
+#Must be 16 digits (replace with your own creation !)
+secretKey=7070200000000007
+
+
+
+#Elastic Search configurations
+elasticsearch.cluster.name=shopizer
+elasticsearch.mode=remote
+elasticsearch.server.host=http://es-server
+elasticsearch.server.port=9200
+elasticsearch.server.proxy.user=
+elasticsearch.server.proxy.password=
+
+
+#Infinispan configuration
+config.cms.store.location=/tmp/store
+config.cms.files.location=/tmp/repos
+
+#For using priceByDistance shipping module
+shippingDistancePreProcessor.apiKey=<YOUR KEY>
+
+
diff --git a/sm-core/src/main/resources/shopizer-core.properties b/sm-core/src/main/resources/shopizer-core.properties
new file mode 100644
index 0000000..af40102
--- /dev/null
+++ b/sm-core/src/main/resources/shopizer-core.properties
@@ -0,0 +1,21 @@
+#Must be 16 digits (replace with your own creation !)
+secretKey=7070200000000007
+
+
+
+#Elastic Search configurations
+elasticsearch.cluster.name=shopizer
+elasticsearch.mode=remote
+elasticsearch.server.host=http://localhost
+elasticsearch.server.port=9200
+elasticsearch.server.proxy.user=
+elasticsearch.server.proxy.password=
+
+#Infinispan configuration
+config.cms.store.location=./files/store
+config.cms.files.location=./files/repos
+
+#For using priceByDistance shipping module
+shippingDistancePreProcessor.apiKey=<YOUR KEY>
+
+
diff --git a/sm-core/src/main/resources/spring/shopizer-core-config.xml b/sm-core/src/main/resources/spring/shopizer-core-config.xml
index d8f95a2..8069f51 100644
--- a/sm-core/src/main/resources/spring/shopizer-core-config.xml
+++ b/sm-core/src/main/resources/spring/shopizer-core-config.xml
@@ -114,11 +114,9 @@
     <!-- 
     
     properties files 
-    
-    
-    
-    
+
     -->
+    
     <beans:beans profile="default">
     <beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 		<beans:property name="ignoreUnresolvablePlaceholders" value="false"/>
@@ -126,13 +124,27 @@
 			<beans:list>
 		    	<beans:value>classpath:database.properties</beans:value>
 				<beans:value>classpath:email.properties</beans:value>
-				<beans:value>classpath:configs.properties</beans:value>
+				<beans:value>classpath:shopizer-core.properties</beans:value>
 				<beans:value>classpath:authentication.properties</beans:value>
 			</beans:list>
 		</beans:property>
 	</beans:bean>
 	</beans:beans> 
 	
+    <beans:beans profile="gcp">
+    <beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+		<beans:property name="ignoreUnresolvablePlaceholders" value="false"/>
+		<beans:property name="locations">
+			<beans:list>
+		    	<beans:value>classpath:profiles/gcp/database.properties</beans:value>
+				<beans:value>classpath:email.properties</beans:value>
+				<beans:value>classpath:profiles/gcp/shopizer-core.properties</beans:value>
+				<beans:value>classpath:authentication.properties</beans:value>
+			</beans:list>
+		</beans:property>
+	</beans:bean>
+	</beans:beans> 	
+	
     <beans:beans profile="docker">
     <beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 		<beans:property name="ignoreUnresolvablePlaceholders" value="false"/>
@@ -140,7 +152,7 @@
 			<beans:list>
 		    	<beans:value>classpath:profiles/docker/database.properties</beans:value>
 				<beans:value>classpath:email.properties</beans:value>
-				<beans:value>classpath:configs.properties</beans:value>
+				<beans:value>classpath:profiles/docker/shopizer-core.properties</beans:value>
 				<beans:value>classpath:authentication.properties</beans:value>
 			</beans:list>
 		</beans:property>
diff --git a/sm-core/src/main/resources/spring/shopizer-core-modules.xml b/sm-core/src/main/resources/spring/shopizer-core-modules.xml
index 5bfe0b4..3d1c80c 100644
--- a/sm-core/src/main/resources/spring/shopizer-core-modules.xml
+++ b/sm-core/src/main/resources/spring/shopizer-core-modules.xml
@@ -143,9 +143,6 @@
 				<!--<beans:property name="rootName" value="/Applications/MAMP/htdocs/bam-images"/>-->
 	</beans:bean>
 	
-	
-
-	
 	<!-- Static content files manager (images, pdf...) -->
 	<beans:bean id="staticContentFileManager"	class="com.salesmanager.core.business.modules.cms.content.StaticContentFileManagerImpl">
 		<beans:property name="uploadFile">
@@ -171,9 +168,7 @@
 		<!--<beans:property name="rootName" value="/Applications/MAMP/htdocs/bam-images/"/>-->
 	</beans:bean>
 	
-	
-	
-	
+
 	<!-- product downloads -->
 	<beans:bean id="productDownloadsFileManager"	class="com.salesmanager.core.business.modules.cms.content.StaticContentFileManagerImpl">
 		<beans:property name="uploadFile">
@@ -201,8 +196,10 @@
 
 	<!-- Store Cache Manager (infinispan) -->
 	<beans:bean id="localCacheManager"
-				class="com.salesmanager.core.business.modules.cms.impl.StoreCacheManagerImpl" factory-method="getInstance" >
+				class="com.salesmanager.core.business.modules.cms.impl.StoreCacheManagerImpl">
+				<beans:constructor-arg value="${config.cms.store.location}"/>
 	</beans:bean>
+	<!-- factory-method="getInstance"  -->
 	
 	
 	<!-- Local cache manager  (for apache httpd)-->
@@ -211,20 +208,23 @@
 				class="com.salesmanager.core.business.modules.cms.impl.LocalCacheManagerImpl" factory-method="getInstance" >
 	</beans:bean>
 	-->
-    
-	
-
 
 	
-	
 	<!-- Cache manager to handle static content data which includes
 	 1. CSS Files
 	 2. JS Files
 	 2. Digital data -->
 
 	<beans:bean id="filesCacheManager" 
-		class="com.salesmanager.core.business.modules.cms.impl.StaticContentCacheManagerImpl" factory-method="getInstance" >
+		class="com.salesmanager.core.business.modules.cms.impl.StaticContentCacheManagerImpl" >
+		<beans:constructor-arg value="${config.cms.files.location}"/>
 	</beans:bean>
+	
+	<!-- factory-method="getInstance" -->
+	
+	<!-- 
+		*** End CMS configuration ***
+	 -->
 
  	<!--Encryption-->
 	<beans:bean id="encryption"
diff --git a/sm-core-model/src/main/java/com/salesmanager/core/constants/SchemaConstant.java b/sm-core-model/src/main/java/com/salesmanager/core/constants/SchemaConstant.java
index e43884f..3cb4b00 100644
--- a/sm-core-model/src/main/java/com/salesmanager/core/constants/SchemaConstant.java
+++ b/sm-core-model/src/main/java/com/salesmanager/core/constants/SchemaConstant.java
@@ -11,7 +11,7 @@ public class SchemaConstant {
 	 * Languages iso codes
 	 * 
 	 */
-	public static final String[] LANGUAGE_ISO_CODE = {"en", "fr"};
+	public static final String[] LANGUAGE_ISO_CODE = {"en", "fr", "ru"};
 	
 	/**
 	 * All regions
diff --git a/sm-shop/.gitignore b/sm-shop/.gitignore
index b83d222..8dfd401 100644
--- a/sm-shop/.gitignore
+++ b/sm-shop/.gitignore
@@ -1 +1,3 @@
 /target/
+SALESMANAGER.h2.db
+SALESMANAGER.lock.db

sm-shop/pom.xml 2(+1 -1)

diff --git a/sm-shop/pom.xml b/sm-shop/pom.xml
index 0ff567e..de3ab76 100644
--- a/sm-shop/pom.xml
+++ b/sm-shop/pom.xml
@@ -10,7 +10,7 @@
 	</parent>
 
 	<artifactId>sm-shop</artifactId>
-	<packaging>war</packaging>
+	<packaging>jar</packaging>
 
 	<name>sm-shop</name>
 	<url>http://www.shopizer.com</url>
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/filter/StoreFilter.java b/sm-shop/src/main/java/com/salesmanager/shop/filter/StoreFilter.java
index 8216d5f..dd94f7d 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/filter/StoreFilter.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/filter/StoreFilter.java
@@ -125,7 +125,6 @@ public class StoreFilter extends HandlerInterceptorAdapter {
 			 * exit from here !
 			 */
 			//System.out.println("****** " + request.getRequestURL().toString());
-			//System.out.println("****** " + request.getRequestURI().toString());
 			if(request.getRequestURL().toString().toLowerCase().contains(SERVICES_URL_PATTERN)
 				|| request.getRequestURL().toString().toLowerCase().contains(REFERENCE_URL_PATTERN)	
 			) {
diff --git a/sm-shop/src/main/resources/bundles/messages_ru.properties b/sm-shop/src/main/resources/bundles/messages_ru.properties
new file mode 100644
index 0000000..711510e
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/messages_ru.properties
@@ -0,0 +1,211 @@
+message.success=Запрос успешно завершён
+message.error=Ошибка произошла во время запроса
+message.email.success=Сообщение было отправлено
+message.productreview.created=Вы успешно создали обзор на продукт
+message.email.error=Ошибка произошла во время отправки вашего сообщения
+message.access.denied=Доступ запрещён
+message.error.shoppingcart.update=Произошла ошибка во время обновления корзины
+message.username.password=Не получилось выполнить вход. Пароль или имя неверны.
+message.resource.notfound=Запрошенная страница не существует
+message.fielderror=Ошибка поля
+message.timeout=Время сессии истекло
+message.error.shipping=Ошибка произошла во время оценки стоимости доставки
+NotEmpty=Поле обязательно к заполнению
+password.notequal=Пароли должны совпадать
+
+NotEmpty.store.storename=Имя магазина должно быть указано
+NotEmpty.store.storeEmailAddress=Электронная почта магазина должна быть указана
+Email.store.storeEmailAddress=Электронная почта магазина указана неверно
+NotEmpty.product.productPrice=Цена продукта должна быть указана
+NotEmpty.product.manufacturer=Производитель должен быть указан
+NotEmpty.price.code=Код цены должен быть указан
+Pattern.price.code=Код цены должен быть буквенно-цифровой
+Pattern.product.sku=Торговая единица должна быть буквенно-цифровой
+Pattern.merchant.code=Код торгового магазина должен быть буквенно-цифровой
+Pattern.optionValue.code=Код должен быть буквенно-цифровой
+NotEmpty.optionValue.code=Код должен быть указан
+Pattern.option.code=Код должен быть буквенно-цифровой
+NotEmpty.option.code=Код должен быть указан
+NotEmpty.keyword.keyword=Ключевое слово должно быть указано
+NotEmpty.review.description=Ваше мнение должно быть указано
+NotEmpty.group.groupType=Тип группы должен быть указан
+NotEmpty.group.groupName=Имя группы должно быть указано
+
+NotEmpty.customer.userName=Имя пользователя должно быть указано
+NotEmpty.customer.firstName=Имя должно быть указано
+NotEmpty.customer.lastName=Фамилия должна быть указана
+NotEmpty.customer.address=Адрес должен быть указан
+NotEmpty.customer.address2=Адрес должен быть указан
+NotEmpty.customer.postalCode=Почтовый индекс должен быть указан
+NotEmpty.customer.stateProvince=Регион должен быть указан
+NotEmpty.customer.phone=Номер телефона должен быть указан
+NotEmpty.customer.city=Город должен быть указан
+NotEmpty.customer.agreement=Для совершения заказы вы должны согласиться с нашими условиями и положениями
+
+NotEmpty.origin.address=Адрес должен быть указан
+NotEmpty.origin.postalCode=Почтовый индекс должен быть указан
+NotEmpty.origin.city=Город должен быть указан
+NotEmpty.origin.country=Страна должна быть указана
+
+NotEmpty.customer.emailAddress=Электронный почтовый адрес должен быть указан
+Email.customer.emailAddress=Электронная почта неверна
+NotEmpty.customer.billing.phone=Телефонный номер должен быть указан
+NotEmpty.customer.billing.address=Улица должна быть указана
+NotEmpty.customer.billing.city=Город должен быть указан
+NotEmpty.customer.billing.postalCode=Почтовый индекс должен быть указан
+NotEmpty.customer.billing.country=Страна должна быть указана
+NotEmpty.customer.billing.stateProvince=Регион должен быть указан
+
+NotEmpty.customer.shipping.firstName=Имя получателя должно быть указано
+NotEmpty.customer.shipping.lastName=Фамилия получателя должна быть указана
+NotEmpty.customer.shipping.address=Улица получателя должна быть указана
+NotEmpty.customer.shipping.city=Город получателя должен быть указан
+NotEmpty.customer.shipping.postalCode=Почтовый индекс получателя должен быть указан
+NotEmpty.customer.shipping.phone=Телефон получателя должен быть указан
+NotEmpty.customer.shipping.stateProvince=Регион получателя должен быть указан
+
+NotEmpty.order.creditcard.number=Номер действующей кредитной карты должен быть указан
+NotEmpty.order.creditcard.name=Имя держателя карты должно быть указано
+NotEmpty.order.creditcard.cvv=Код CCV должен быть указан
+NotEmpty.contact.name=Контактное имя должно быть указано
+NotEmpty.contact.subject=Субъект должен быть указан
+NotEmpty.contact.comment=Комментарий должен быть указан
+Email.contact.email=Формат электронной почты неверный
+NotEmpty.contact.captchaResponseField=Ответ на проверку Captcha должен быть указан
+NotEmpty.contact.captchaChallengeField=Captcha проверка обязательна
+
+message.order.canprocess=Заказ может быть завершён
+message.name.required=Имя объекта должно быть указано
+
+message.code.exist=Такой код уже существует
+message.name.exist=Такое имя уже существует
+message.invalid.amount=Неверная сумму
+message.region.exists=Регион уже существует
+message.region.null=Регион должен быть указан
+message.invalid.price=Формат цены неверный
+message.invalid.rate=Формат ставки неверный
+message.invalid.date=Формат даты неверный
+message.maximumWeight.null=Максимальный вес должен быть указан
+message.maximumWeight.invalid=Максимальный вес должен быть больше 0
+message.unauthorized=Транзакция не может быть завершена
+message.code.available=Этот код доступен
+message.image.height=Высота изображения слишком большая
+message.image.width=Ширина изображения слишком большая
+message.image.size=Изображение слишком большое
+message.number.invalid=Должно быть числом (Например, 5)
+message.productoption.required=Опция или атрибут должны быть указаны
+message.productoptionvalue.required=Значение продукта или атрибута должно быть указано
+message.product.language=Продукт не был настроен для выбранного языка. Отредактируйте описание продукта для этого языка
+
+message.password.required=Пароль обязателен
+message.password.repeat.required=Необходимо повторить пароль
+message.username.required=Имя пользователя должно быть указано
+message.username.notfound=Имя пользователя не найдено
+message.price.cents=Пожалуйста, введите максимум 99 центов
+message.security.cannotrevoke.superadmin=Невозможно разойтись группе супер администраторов
+message.cannot.empty=должно быть указано
+message.password.different=Пароли должны совпадать
+message.password.invalid=Неверный пароль
+message.password.length=Пароль должен быть не менее 6 символов
+message.password.reset=Пароль бы сброшен
+message.password.checkpassword.identical=Оба пароля должны совпадать
+message.credentials.reset=Учетные данные были изменены
+
+message.security.caanotremovesuperadmin=Невозможно удалить пользователя - супер администратора
+
+message.group.alerady.exists=Группа {0} уже существует
+message.group.required=Группа должна быть указана
+
+message.product.association=Эта сущность связана с продуктами. Устраните все свзя перед удалением.
+message.notexist.customer=Покупатель уже существует
+message.optionset.optionassociationexists=Такая ассоциация опции уже существует
+message.optionset.noassociation=Выберите опцию и её значение
+
+messages.error.creditcard=Информация о кредитной карте неверная
+messages.error.creditcard.number=Номер кредитной карты неверный
+messages.error.creditcard.dateformat=Срок окончания действия карты неверный
+messages.error.creditcard.cvc=Код CCV неверный
+
+
+message.payment.declined=Транзакция оплаты была отменена
+message.payment.error=Получена ошибка во время оплаты. Пожалуйста, используйте другой метод.
+
+message.content.missing.agreement=Содержимого с кодом 'agreement' не существут
+
+merchant.storeId.invalid=Пожалуйста, укажите торговый магазин
+merchant.files.invalid=Пожалуйста, укажите файлы для загрузки
+merchant.zone.invalid=Регион магазина должен быть указан
+
+NotEmpty.order.customerFirstName=Имя покупателя должно быть указано
+NotEmpty.order.customerLastName=Фамилия покупателя должна быть указана
+NotEmpty.order.customerStreetAddress=Улица покупателя должна быть указана
+NotEmpty.order.customerCity=Город покупателя должен быть указан
+NotEmpty.order.customerPostCode=Почтовый индекс покупателя должен быть указан
+NotEmpty.order.customerTelephone=Телеон покупателя должен быть указан
+Email.order.customerEmailAddress=Почтовый адрес покупателя должен быть указан
+NotEmpty.order.customerEmailAddress=Почтовый адрес покупателя должен быть указан
+
+
+NotEmpty.order.billingName=Имя платёжного лица должен быть указан
+NotEmpty.order.billingStreetAddress=Улица платёжного лица должен быть указан
+NotEmpty.order.billingCity=Город платёжного лица должен быть указан
+NotEmpty.order.billingState=Регион платёжного лица платёжного лица должен быть указан
+NotEmpty.order.billingPostCode=Почтовый индекс платёжного лица должен быть указан
+
+
+NotEmpty.customer.FirstName=Имя покупателя должно быть указано
+NotEmpty.customer.LastName=Фамилия покупателя должна быть указана
+NotEmpty.customer.StreetAddress=Улица покупателя должна быть указана
+NotEmpty.customer.City=Город покупателя должен быть указан
+NotEmpty.customer.Country=Страна покупателя должна быть указана
+NotEmpty.customer.PostCode=Почтовый индекс покупателя должен быть указан
+NotEmpty.customer.Telephone=Телеон покупателя должен быть указан
+Email.customer.EmailAddress=Электронная почта покупателя должна быть указана
+NotEmpty.customer.EmailAddress=Почтовый адрес покупателя должен быть указан
+
+NotEmpty.customer.billingCompany=Компания должна быть указана
+NotEmpty.customer.billingFirstName=Имя должно быть указано
+NotEmpty.customer.billingLastName=Фамилия должна быть указана
+NotEmpty.customer.billingStreetAddress=Адрес должен быть указан
+NotEmpty.customer.billingCity=Город должен быть указан
+NotEmpty.customer.billingState=Регион должен быть указан
+NotEmpty.customer.billingCountry=Страна должна быть указана
+NotEmpty.customer.billingPostCode=Почтовый индекс должен быть указан
+
+NotEmpty.customer.shippingCountry=Страна доставки должна быть указана
+
+NotEmpty.taxClass.code=Код класса налогов обязателен к заполнению
+NotEmpty.taxClass.title=Имя класса налогов должно быть указано
+message.taxclass.alreadyexist=Код класса налогов уже существует
+NotEmpty.taxRate.code=Код ставки налогов должен быть указан
+NotEmpty.taxRate.unique.code=Код ставки налогов должен быть уникальным
+NotEmpty.taxRate.rateText=Ставка налога должна быть указана
+NotEmpty.taxRateDescription.name=Имя ставки налога должно быть указано
+NotNull.taxRate.parent=Родительская ставка налога должна быть указана
+
+message.noshipping.configured=Способы доставки не настроены
+message.noshipping=Доставка невозможна
+message.noshippingerror=Доставка невозможна. Пожалуйста, проверьте указанный вами адрес.
+
+message.login.duallogin=Двойной вход систему из разных браузеров
+
+User.resetPassword.resetSuccess=Успешно изменён пароль, проверьте электронную почту
+User.resetPassword.wrongSecurityQtn=Ответ/вопрос на секретный вопрос не верен
+User.resetPassword.userNotFound=Указанный пользователь не найден
+User.resetPassword.Error=Произошла ошибка, свяжитесь с администратором
+
+validaion.recaptcha.not.matched=Проверка Recaptcha не прошла успешно
+registration.username.not.empty=Пожалуйста, укажите имя пользователя
+registration.username.length.invalid=Имя пользователя должно быть не менее 6 символов
+registration.password.not.empty=Пожалуйста, укажите пароль
+registration.firstName.invalid=Пожалуйста, укажите имя
+registration.lastName.invalid=Пожалуйста, укажите фамилию
+messages.invalid.email=Пожалуйста, укажите действующую электронную почту
+registration.username.already.exists = Пользователь с таким именем уже существует
+registration.failed=Невозможно завершить регистрацию, повторите позже
+currentpassword.not.empty=Пожалуйста, укажите текущий пароль
+newpassword.not.empty=Новый пароль должен быть указан и быть длиной не менее 6 символов
+repeatpassword.not.empty=Новый пароль должен быть указан и быть длиной не менее 6 символов
+message.invalidpassword=Неверный пароль
+
+error.code.99=Ошибка произошла во время попытки обработать запрос
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/payment_ru.properties b/sm-shop/src/main/resources/bundles/payment_ru.properties
new file mode 100644
index 0000000..357578c
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/payment_ru.properties
@@ -0,0 +1,59 @@
+payment.not.configured=Способы оплаты не настроены
+
+
+payment.type.MONEYORDER=Перевод денег
+payment.type.PAYPAL=PayPal
+payment.type.CREDITCARD=Кредитная карта
+payment.type.STRIPE=Кредитная карта
+payment.type.BRAINTREE=Кредитная карта
+
+label.payment.moneyorder.usemoneyorder=Использовать перевод денег
+
+module.payment.paypal=PayPal
+module.payment.beanstream=Beanstream
+module.payment.authorizenet=Authorize Net
+module.payment.moneyorder=Перевод денег
+module.payment.paypal-express-checkout=PayPal экспресс оплата
+module.payment.stripe=Stripe
+module.payment.braintree=Braintree
+
+
+module.payment.transactiontype=Тип транзакции
+module.payment.transactiontype.preauth=Преавторизация
+module.payment.transactiontype.capture=Захват
+module.payment.transactiontype.sale=Продажа
+module.payment.transactiontype.refund=Возврат
+
+#PayPal
+module.payment.paypal-express-checkout.userid=PayPal API имя пользователя
+module.payment.paypal-express-checkout.apikey=PayPal API пароль
+module.payment.paypal-express-checkout.signature=PayPal API подпись
+module.payment.paypal-express-checkout.applicationid=PayPal id приложения
+module.payment.paypal-express-checkout.note=Следуйте указанным здесь инструкциям, чтобы создать аккаунт PayPal API имя пользователя, пароль и подпись (https://developer.paypal.com/docs/classic/api/apiCredentials/#creating-classic-api-credentials)
+
+
+
+#paypal rest
+module,payment.paypal.clientId=PayPal clientId
+module,payment.paypal.secret=PayPal secret
+module.payment.paypal.note=Create a PayPal seller account (www.paypal.com). Once completed, login to PayPal developer website (https://developer.paypal.com/webapps/developer/index) using your PayPal seller credentials. Click Applications on the upper nav bar to access the My Applications page. Click on Create App button, this action will provide your client id and secret keys.
+module.payment.paypal.message.clientId=PayPal clientId is required
+module.payment.paypal.message.secret=PayPal secret is required
+
+module.payment.paypal.message.identifier=PayPal API user name required
+module.payment.paypal.message.api=PayPal API user name required
+module.payment.paypal.message.password=PayPal API password required
+module.payment.paypal.message.signature=PayPal API signature required
+
+#Beanstream
+module.payment.beanstream.merchantid=Merchant id
+module.payment.beanstream.username=User name
+module.payment.beanstream.password=Password
+
+module.payment.beanstream.message.merchantid=Merchant id required
+module.payment.beanstream.message.username=Username is required
+module.payment.beanstream.message.password=Password is required
+
+#Moneyorder
+module.payment.moneyorder.adress=Cheque to be made to this address
+module.payment.moneyorder.message.address=Address is required
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/shipping_ru.properties b/sm-shop/src/main/resources/bundles/shipping_ru.properties
new file mode 100644
index 0000000..65d1696
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shipping_ru.properties
@@ -0,0 +1,145 @@
+NO_SHIPPING_MODULE_CONFIGURED=Способ доставки не настроен
+
+module.shipping.canadapost=Canada Post
+module.shipping.ups=UPS
+module.shipping.usps=United States Postal Service
+module.shipping.fedex=Fedex
+module.shipping.weightBased=Доставка основанная на весе
+module.shipping.customQuotesRules=Доставка от {0}
+module.shipping.storePickUp=Самовывоз
+module.shipping.priceByDistance=Доставка от {0}
+
+module.shipping.storePickUp.note=Эта опция позволяет забронировать ваш товар и забрать её самому из магазина. Эта опция также предлагается, когда нет других возможных способ получения товара.
+
+#custom
+module.shipping.customQuotesRules.title=Создайте ваши собственные правила доставки
+module.shipping.customQuotesRules.text=Создать свою таблицу с правилами доставки. Ваша таблица по изменению таблицы оценки доставки может быть изменена в sm-core/src/main/resources/rules/shipping-custom-rules.xls 
+
+#custom
+module.shipping.priceByDistance.title=Создайте вашу собственную стоимость доставки, основанную на расстоянии
+module.shipping.priceByDistance.text=Измените цену доставки (в киолометрах). Требует калькулятор по расчёту расстояния.
+
+module.shipping.canada=Canada
+module.shipping.usa=United states
+module.shipping.international=International
+
+
+
+#Canada Post
+module.shipping.canadapost.identifier=Canada Post identifier (CPC number)
+module.shipping.canadapost.username=Canada Post user name (first part of the API key before semi column)
+module.shipping.canadapost.password=Canada Post password (second part of the API key after semi column)
+module.shipping.canadapost.apikey=Canada Post API key
+module.shipping.canadapost.packages=Package type
+module.shipping.canadapost.services=Services to be rated
+module.shipping.canadapost.message.identifier=Canada Post identifier required
+module.shipping.canadapost.message.username=Canada Post user name required
+module.shipping.canadapost.message.password=Canada Post password required
+module.shipping.canadapost.message.apikey=Canada Post API key required
+
+module.shipping.canadapost.DOM.RP=Regular Parcel
+module.shipping.canadapost.DOM.EP=Expedited Parcel
+module.shipping.canadapost.DOM.XP=Xpresspost
+module.shipping.canadapost.DOM.XP.CERT=Xpresspost Certified
+module.shipping.canadapost.DOM.PC=Priority
+module.shipping.canadapost.DOM.DT=Delivered Tonight
+module.shipping.canadapost.DOM.LIB=Library Books
+
+module.shipping.canadapost.USA.EP=Expedited Parcel USA
+module.shipping.canadapost.USA.PW.ENV=Priority Worldwide Envelope USA
+module.shipping.canadapost.USA.PW.PAK=Priority Worldwide pak USA
+module.shipping.canadapost.USA.PW.PARCEL=Priority Worldwide Parcel USA
+module.shipping.canadapost.USA.SP.AIR=Small Packet USA Air 
+module.shipping.canadapost.USA.TP=Tracked Packet - USA
+module.shipping.canadapost.USA.TP.LVM=Tracked Packet - USA -  (LVM - large volume mailers)
+module.shipping.canadapost.USA.XP=Xpresspost USA
+
+
+module.shipping.canadapost.INT.XP=Xpresspost International
+module.shipping.canadapost.INT.IP.AIR=International Parcel Air
+module.shipping.canadapost.INT.IP.SURF=International Parcel Surface
+module.shipping.canadapost.INT.PW.ENV=Priority Worldwide Envelope International
+module.shipping.canadapost.INT.PW.PAK=Priority Worldwide pak International
+module.shipping.canadapost.INT.PW.PARCEL=Priority Worldwide parcel International
+module.shipping.canadapost.INT.SP.AIR=Small Packet International Air
+module.shipping.canadapost.INT.SP.SURF=Small Packet International Surface
+module.shipping.canadapost.INT.TP=Tracked Packet - International
+
+
+#USPS
+module.shipping.usps.identifier=USPS account identifier
+module.shipping.usps.packages=Package type
+module.shipping.usps.shippingmethods=Select up to 3 shipping methods
+module.shipping.usps.message.identifier=USPS account identifier required
+module.shipping.usps.message.packages=You must select one package type
+
+
+module.shipping.usps.package.01=Variable
+module.shipping.usps.package.02=Flat Rate Box
+module.shipping.usps.package.03=Flat Rate Envelope
+module.shipping.usps.package.04=Rectangular
+module.shipping.usps.package.05=Non Rectangular
+module.shipping.usps.package.06=LG Flat Rate Box
+
+module.shipping.usps.package.07=Envelope
+module.shipping.usps.package.08=Package
+
+module.shipping.usps.method.01=First-Class Mail
+module.shipping.usps.method.02=Priority Mail
+module.shipping.usps.method.03=Express Mail
+module.shipping.usps.method.04=Express SH
+module.shipping.usps.method.05=Express HFP
+module.shipping.usps.method.06=BPM
+module.shipping.usps.method.07=Parcel Post
+
+#UPS
+module.shipping.ups.identifier=UPS access key
+module.shipping.ups.userid=User ID
+module.shipping.ups.password=Password
+module.shipping.ups.packages=Package type
+module.shipping.ups.shippingmethods=Select a shipping method
+module.shipping.ups.message.identifier=UPS account identifier required
+module.shipping.ups.message.packages=You must select one package type
+
+
+
+module.shipping.ups.package.02=Customer Package
+module.shipping.ups.packagel.01=UPS Letter
+module.shipping.ups.package.03=UPS Tube
+module.shipping.ups.package.04=UPS Pak
+module.shipping.ups.package.21=UPS Express Box
+module.shipping.ups.package.24=UPS 25kg Box
+module.shipping.ups.package.10=UPS 10kg box
+module.shipping.ups.package.25=Unknown
+
+
+
+
+module.shipping.ups.method.01=UPS Next Day Air
+module.shipping.ups.method.02=UPS Second Day Air
+module.shipping.ups.method.03=UPS Ground
+module.shipping.ups.method.07=UPS Worldwide Express
+module.shipping.ups.method.08=UPS Worldwide Expedited
+module.shipping.ups.method.11=UPS Standard
+module.shipping.ups.method.12=UPS Three-Day Select
+module.shipping.ups.method.13=UPS Next Day Air Saver
+module.shipping.ups.method.14=UPS Next Day Air Early A.M.
+module.shipping.ups.method.54=UPS Worldwide Express Plus
+module.shipping.ups.method.59=UPS Second Day Air A.M.
+module.shipping.ups.method.65=UPS Saver
+
+#module.shipping.ups.method.68=UPS Express
+#module.shipping.ups.method.69=UPS Worldwide Expedited
+#module.shipping.ups.method.70=UPS Standard
+#module.shipping.ups.method.71=UPS Worldwide Express Plus
+#module.shipping.ups.method.72=UPS Saver
+module.shipping.ups.method=Способы доставки UPS
+module.shipping.ups.method.select=Выберите метод доставки UPS
+module.shipping.ups.method.unselect=Позвольте UPS предложить все возможные методы доставки
+
+
+#store pick up
+module.shipping.storePickUp.address=Адрес получения заказа
+module.shipping.storePickUp.address.message=Адрес получения заказа обязателен к заполнению
+module.shipping.storePickUp.price=Цена за получение товара из магазина (обычно 0)
+module.shipping.storePickUp.price.message=Цена за получение товара из магазина обязательна (в числах)
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/bundles/shopizer.properties b/sm-shop/src/main/resources/bundles/shopizer.properties
index 3f963d1..523e5dc 100644
--- a/sm-shop/src/main/resources/bundles/shopizer.properties
+++ b/sm-shop/src/main/resources/bundles/shopizer.properties
@@ -4,6 +4,7 @@ label.defaultlanguage=Default language
 label.defaultSelection=Default selection
 lang.en=English
 lang.fr=French
+lang.ru=Russian
 
 label.entity.id=Id
 label.entity.name=Name
diff --git a/sm-shop/src/main/resources/bundles/shopizer_fr.properties b/sm-shop/src/main/resources/bundles/shopizer_fr.properties
index f3318d2..bc0e537 100644
--- a/sm-shop/src/main/resources/bundles/shopizer_fr.properties
+++ b/sm-shop/src/main/resources/bundles/shopizer_fr.properties
@@ -4,6 +4,7 @@ label.defaultlanguage=Langue par défaut
 label.defaultSelection=Sélection par défaut
 lang.en=Anglais
 lang.fr=Français
+lang.ru=Russe
 
 
 label.entity.id=Identifiant
diff --git a/sm-shop/src/main/resources/bundles/shopizer_ru.properties b/sm-shop/src/main/resources/bundles/shopizer_ru.properties
new file mode 100644
index 0000000..ca15acb
--- /dev/null
+++ b/sm-shop/src/main/resources/bundles/shopizer_ru.properties
@@ -0,0 +1,770 @@
+label.quantity=Колличество
+
+label.defaultlanguage=Язык по умолчанию
+label.defaultSelection=Выбор по умолчанию
+lang.en=Английский
+lang.fr=Французский
+lang.ru=Русский
+
+label.entity.id=Id
+label.entity.name=Имя
+label.entity.code=Код
+label.entity.visible=Видимо
+label.entity.enabled=Включено
+label.entity.active=Активно
+label.entity.public=Публично
+label.entity.details=Детали
+label.entity.type=Тип
+label.entity.remove.confirm=Вы действительно хотите удалить эту сущность?
+label.entity.setAsDefault.confirm=Вы действительно хотите изменить эту сущность?
+label.entity.order=Заказ
+label.entity.status=Статус
+label.generic.all=Все
+label.generic.email=Электронный адрес
+label.generic.address=Адрес
+label.generic.price=Цена
+label.generic.phone=Номер телефона
+label.generic.back=Назад
+label.generic.setAsDefault=Изменить по умолчанию
+label.generic.stateprovince=Регион
+label.generic.item=товар
+label.generic.item.title=Товар
+label.generic.items=товары
+label.generic.displayonly=Только отображение
+label.generic.url=URL
+label.generic.sortby=Отсортировать по
+label.generic.default=По умолчанию
+label.generic.name=Имя
+label.generic.next=Следующий
+label.generic.genre=Жанр
+label.generic.male=Мужчина
+label.generic.female=Женщина
+label.generic.register=Регистрация
+label.generic.youropinion=Ваше мнение
+label.generic.comments=Комментарии
+label.generic.subject=Тема
+label.generic.minimum=Минимум
+label.generic.maximum=Макимум
+label.generic.pictures=Картинки
+label.generic.videos=Видео
+label.generic.imageType=Тип медиа
+label.generic.today=Сегодня
+
+label.generic.welcome=Добро пожаловать
+label.generic.weightunit.LB=Фунты
+label.generic.weightunit.KG=Килограммы
+label.generic.language=Язык
+label.generic.search=Поиск
+
+label.generic.sizeunit.CM=Сантиметры
+label.generic.sizeunit.IN=Дюймы
+label.generic.remove=Удалить
+label.generic.yes=Да
+label.generic.no=Нет
+label.generic.alphanumeric=Буквенно-цифровой
+label.generic.add=Добавить
+label.generic.username=Имя пользователя
+label.generic.edit=Редактировать
+label.generic.print=Распечатать
+
+label.generic.environment=Окружение
+label.generic.providedby=Поддержано
+
+label.generic.title=Название
+label.generic.keywords=Ключевые слова
+label.generic.amount=Сумма
+
+label.generic.changepassword=Изменить пароль
+
+label.generic.confirm=Пожалуйста подтвердите
+label.generic.firstname=Имя
+label.generic.lastname=Фамилия
+label.generic.streetaddress=Уилца
+label.generic.postalcode=Почтовый индекс
+label.generic.city=Город
+label.generic.country=Страна
+label.generic.hi=Здравствуйте
+label.generic.send=Отправить
+label.generic.rebate=Сделать скидку
+
+label.soldout=Продано
+
+#merchant store
+label.store.information.title=Информация
+label.store.title=Торговый магазин
+label.store.information=Информация о магазине
+label.storeadministration=Администрация магазина
+label.storeadministrator=Администратор магазина
+label.storename=Название магазина
+label.storecode=Уникальный код магазина
+label.currency=Валюта
+label.bgcolorcode=Фоновый цвет
+label.storelogo=Лого магазина
+label.storebanner=Баннер магазина
+label.storephone=Телефон магазина
+label.accepteddomains=Принятый домен
+label.storeaddress=Адрес магазина
+label.storecity=Город магазина
+label.storepostalcode=Почтовый индекс магазина
+label.storecountry=Страна магазина
+label.storezone=Регион магазина
+label.supportedlanguages=Поддерживаемые языки
+label.storeemailaddress=Электронный адрес магазина
+label.storesetup=Установка магазина
+label.store.template=Тема
+label.store.baseurl=URL (домен) магазина
+label.store.inbusinesssince=Интернет магазин работает с
+label.changepasswordrequest = Запрос на изменение пароля
+label.store.weightunit=Единицы измерения веса
+label.store.sizeunits=Единицы измерения размера
+label.store.list=Магазины
+label.store.useCache=Использовать кэш
+label.store.currency.format=Формат национальной валюты
+label.store.currency.format.help=Пример национального формата валюты - $1,345.79. Пример международного - USD1,345.79
+
+label.store.displaycontactussection=Отображать страницу "Свяжитесь с нами"
+label.store.displaystoreaddress=Отображать адрес магазина
+label.store.displaysearchbox=Отображать поиск
+label.store.testmode=Тестовый мод(прятать категории и детали продуктов)
+label.store.debugmode=Debug мод (добавлять дополнительный лог)
+label.store.allowPurchaseItems=Разрешать покупки
+label.store.displayaddtocartfeatured=Разрешать добавлять отмеченные товары в корзину
+label.store.tofindus=Где нас найти
+
+label.storefront.landingpage=Информация о главной станице
+label.storefront.storetext=Главный текс главной страницы
+label.storefront.metatags.keywords=Ключевые слова тегов
+label.storefront.metatags.description=Описание тегов
+label.storefront.landingpage.title=Заголовок главной страницы
+
+#user
+label.profile.title=Профиль пользователя
+label.my.profile=Мой профиль
+label.profile.lastaccess=Последний доступ
+label.register.personal.information=Личная информация
+label.register.signin.information=Информация для входа
+label.register.createaccount=Создать аккаунт
+
+#search
+label.search.searchQuery=Поисковый запрос
+label.search.items.found=товары найдены
+
+
+label.generic.password=Пароль
+label.generic.repeatpassword=Повторите пароль
+label.generic.newpassword=Новый пароль
+label.generic.newpassword.repeat=Повторите новый пароль
+
+security.question.1=Цвет первой машины?
+security.question.2=В каком городе родились?
+security.question.3=Имя первого питомца?
+security.question.4=Любимый музыкальный жанр?
+security.question.5=Герой детства?
+security.question.6=Город, где получили первую работу?
+security.question.7=Место, где первый раз поцеловались? 
+security.question.8=В каком городе встретили супругу/важного человека?
+security.question.9=Кличка в детстве?
+
+
+security.questions.differentmessages=Пожалуйста, выберете 3 разных вопроса
+
+security.question1=Вопрос 1
+security.question2=Вопрос 2
+security.question3=Вопрос 3
+security.answer.question1.message=Пожалуйста, ответьте на вопрос 1
+security.answer.question2.message=Пожалуйста, ответьте на вопрос 2
+security.answer.question3.message=Пожалуйста, ответьте на вопрос 3
+
+ 
+security.group.description.SUPERADMIN=Единственный пользователь может быть супер администратором. The user admin is created by default as the superadmin user. This user can do everything in the system and is the only one who can manage stores.
+security.group.description.ADMIN=Администратор - пользователь со всеми правами. Имеет все необходимые возможности для менеджера магазина и может создавать пользователей с более ограниченными возможностями.
+security.group.description.ADMIN_CATALOGUE=Могут создавать продукты и категории.
+security.group.description.ADMIN_STORE=Могут распоряжаться магазинами, которые им назначили.
+security.group.description.ADMIN_ORDER=Могут управлять заказами, искать заказы, изменять информацию покупателя, подтверждать возврат.
+security.group.description.ADMIN_CONTENT=Могут управлять статическим и динамическим содержимым страницы, добавлять изображения, файлы.
+
+label.security.loggedinas=Вы вошли как
+label.security.nologinacces.store=Мы не можем отобразить форму входа
+
+#customer
+label.customer.new=Новый пользователь
+label.customer.registered.signinemail=Если у вас уже есть, аккаунт, зайдите под своим электронным адресом
+label.customer.signin.social=Упростите процесс и зайдите под своим {0} аккаунтом!
+label.customer.signin.social.system=Зайти под {0}
+label.customer.faster=У создания аккаунта много преимущество: оплачивать покупки быстрее, хранить более одного адреса, отслеживать заказы и больше.
+label.customer.myaccount=Мой аккаунт
+label.customer.contactus=Связаться с нами
+label.customer.list=Список покупателей
+label.customer.name=Имя покупателя
+label.customer.lastname=Фамилия покупателя
+label.customer.firstname=Имя покупателя
+label.customer.id=Id покупателя
+label.customer.companyname=Название компании
+label.customer.email=Электронный адрес покупателя
+label.customer.streetaddress=Улица покупателя
+label.customer.suburb=Пригород покупателя
+label.customer.postalcode=Почтовый индекс покупателя
+label.customer.telephone=Телефон покупателя
+label.customer.city=Город покупателя
+label.customer.zone=Регион покупателя
+label.customer.country=Страна покупателя
+label.customer.registered=Зарегестрированый покупатель
+label.customer.editcustomer=Редактировать покупателя
+label.customer.createcustomer=Создать покупателя
+label.customer.order.date= Дата заказа
+label.customer.order.agreement=Я согласен с указанными условиями и положениями
+label.customer.order.agreement.title=Условия и положения
+label.customer.options.edit=Редактировать опцию
+label.customer.option=Опция покупателя
+label.customer.option.value=Значение опции покупателя
+
+label.customer.billinginformation=Платёжная информация
+label.customer.shippinginformation=Информация о доставке
+label.customer.shippingaddress=Адрес доставки
+label.customer.billingaddress=Адрес платежа
+label.customer.billingshipping=Информацию о платеже и доставке
+
+label.customer.edit.billingaddress=Редактировать информацию о платеже
+label.customer.edit.shippinginformation=Редактировать информацию о покупке
+
+label.customer.billing.company=Компания платёжного лица
+label.customer.billing.streetaddress=Улица платёжного лица
+label.customer.billing.suburb=Пригород платёжного лица
+label.customer.billing.postalcode=Почтовый индекс платёжного лица
+label.customer.billing.city=Город платёжного лица
+label.customer.billing.zone=Регион платёжного лица
+label.customer.billing.country=Страна платёжного лица
+label.customer.billing.firstname=Имя платёжного лица
+label.customer.billing.lastname=Фамилия платёжного лица
+label.customer.billing.name=Имя платёжного лица
+
+label.customer.shipping.company=Компания получателя
+label.customer.shipping.streetaddress=Адрес получателя
+label.customer.shipping.suburb=Пригород получателя
+label.customer.shipping.postalcode=Почтовый индекс получателя
+label.customer.shipping.city=Город получателя
+label.customer.shipping.zone=Регион получателя
+label.customer.shipping.country=Страна получателя
+label.customer.shipping.firstname=Имя получателя
+label.customer.shipping.lastname=Фамилия получателя
+label.customer.shipping.name=Имя получателя
+label.customer.shipping.shipaddress=Отправить на указанный пдрес
+label.customer.shipping.shipdifferentaddress=Отправить на другой адрес?
+
+label.customer.confirmshippingaddress=Подтверждение доставки
+
+label.customer.optionv.edit=Редактировать опцию
+label.customer.option.name=Название опции
+label.customer.option.code=Код опции
+label.customer.option.type=Тип отображения
+
+label.customer.optionvalue.edit=Редактировать значение опции
+label.customer.optionvalue.name=Имя значения опции
+label.customer.optionvalue.code=Код значения опции
+
+label.customer.displaycustomersection=Отображать секцию покупателя
+label.customer.accessportal=Вы можете получить доступ к секции покупателя, использую следующую ссылку
+label.customer.accessnow=Получите доступ сейчас!
+
+label.customer.resetpasswor.confirm=Вы уверены что хотите сбросить пароль?
+label.customer.moredetails=Подробнее!
+label.order.editcustomer=Редактировать покупателя
+label.order.displayagreement=Отображать соглашение с условиями и положениями магазина при покупке
+label.order.notes=Примечания к заказу
+label.order.notes.eg=Примечания к заказу или доставке
+
+
+label.customer.currentpassword=Текущий пароль
+label.customer.newpassword=Новый пароль
+label.customer.repeatpassword=Повторите пароль
+
+label.customer.createaccount=Создать аккаунт?
+label.customer.accountpassword=Пароль для аккаунта
+label.customer.createaccount.text=Создать аккаунт, введя информацию нижу. Если вы вернувшийся покупатель, пожалуйста, войдите с помощью формы входа вверху.
+
+#permission
+label.permissions.title=Права доступа
+label.permission.editpermission=Редактировать права доступа
+label.permission.createpermission=Создать права доступа
+label.permission.name=Название прав доступа
+
+#groups
+label.groups.title=Группы
+label.group.editgroup=Редактировать группу
+label.group.creategroup=Создать группу
+label.group.root=Главная
+label.group.groupId=Id группы
+
+#category
+label.category.title=Название категории
+label.category.highlight=Кратко основное о категории
+label.categories.title=Категории
+label.categories.hierarchy.title=Иерархия категорий
+label.category.root=Основная
+label.productedit.categoryname=Имя категории
+label.productedit.choosecategory=Выбрать категории
+label.category.categogydetails=Детали категории
+label.category.editcategory=Редактировать категорию
+label.category.movecategory=Переместить категорию
+label.category.moveundercategory=Переместить под категорию
+label.category.createcategory=Создать категорию
+label.category.code=Код категории
+label.category.categoryvisible=Видимость категории
+label.category.categorydescription=Описание категории
+label.category.parentcategory=Родительская категория
+label.category.hierarchy.text=Перетащить категории для переогрганизации иерархии
+label.category.maincategories=Главные категории
+
+#manufacturer
+label.manufacturer.brand=Бренды
+label.manufacturer.edit=Редактировать производителя
+label.manufacturer.create=Создать производителя
+label.manufactureredit.manufacturername=Имя производителя
+label.manufactureredit.manufacturertitle=Название производителя
+label.manufactureredit.manufacturerurl=URL
+label.manufactureredit.manufacturerurlclicked=URL кликнутое
+label.manufactureredit.manufacturerdescription=Описание производителя
+label.manufacturer.image=Изображение
+label.manufactureredit.manufacturerorder=Заказ
+
+
+#product
+label.product.create=Создать продукт
+label.product.edit=Редактировать продукт
+label.sefurl=Url поискового движка
+label.metatags.description = (Мета теги) Описание
+label.metatags.keywords = (Мета теги) Ключевые слова
+label.product.sku=Единица хранения
+label.product.refsku=Идентификатор справочной системы
+label.product.available=Доступно
+label.productedit.productname=Название продукта
+label.productedit.producthl=Основные моменты о продукте
+label.productedit.productdesc=Описание продукта
+label.product.title=Название продукта
+label.product.price=Цена продукта
+label.product.price.code=Код цены продукта
+label.product.preorder=Предзаказ
+label.product.price.name=Название цены продукта
+label.product.price.default=Цена продукта по умолчанию
+label.product.price.special=Специальная цена
+label.product.price.special.startdate=Специальная дата старта
+label.product.price.special.enddate=Специальная дата окончания
+label.taxclass =Класс налогов
+label.product.ordermax=Максимум колличества заказа
+label.product.ordermin=Минимум колличества заказа
+label.product.visible=Продукт видимый
+label.product.status=Статус
+label.product.weight=Вес
+label.product.height=Высота
+label.product.length=Длина
+label.product.width=Ширина
+label.product.image=Изображение
+label.product.uploadfile=Скачать файл
+label.product.details=Детали продукта
+label.product.prices=Цены продукта
+label.product.attributes=Опции / атрибуты продукта
+label.product.attribute=Опция / атрибут
+label.product.attribute.default=Опция по умолчанию
+label.product.attribute.required=Обязательная опция
+label.product.attribute.display=Использовать атрибут только для отображения
+label.product.attribute.otherweight=Дополнительный вес
+label.product.attribute.option.name=Имя опции или атрибута
+label.product.attribute.value=Значение атрибута
+label.product.attribute.specifications=Спецификации
+label.product.price.create=Создать цену продукта
+label.product.attribute.create=Создать опцию или атрибут продукта
+label.product.category.association=Ассоциировать продукт с категорией
+label.product.customer.reviews=Обзор покупателя
+label.product.reviews=Обзоры
+label.product.reviews.rating=Рейтинг
+label.product.reviews.write=Написать обзор
+label.product.reviews.logon.write=Вы должны быть авторизованы, чтобы написать обзор
+label.product.reviews.evaluated=Вы оценили данный продукт
+label.product.featured.meassage=Чтобы добавить продукт к отмеченным, перетащите один из доступных продуктов в секцию с отмеченными продуктами.
+label.product.group.meassage=Чтобы добавить продукт в группу, перетащите один из свободных продуктов в секцию с группой.
+label.product.related.title=Похожие товары
+label.product.related.meassage=Чтобы добавить товар в похожие товары, перетащите его в выделенную для этого секцию.
+label.product.createsimilar=Создать похожий продукт
+label.product.configure=Определение продукта
+label.product.specification=Спецификация
+label.product.digitalproduct=Цифровой продукт
+label.product.specials=Специальные предложения
+label.product.brand=Бренд
+label.product.code=Код продукта
+label.product.nomoreitems=Больше нет доступных товаров
+label.product.moreitems=Отобразить больше товаров
+label.product.searchkeywords=Поисковые ключевые слова
+label.product.shipeable=Продукт будет доставлен
+label.product.outofstock=Нет на складе
+label.product.defaultImage.message=Когда выбрано по умолчанию, это изображение будет отображено на странице продукта
+
+#options
+label.product.productoptions.edit.title=Редактировать опцию продукта
+label.product.productoptions.create.title=Создать опцию продукта
+label.product.productoptions.title=Опция продукта
+label.product.productoptions.name=Имя опции
+label.product.productoptions.price=Цена опции
+label.product.productoptions.comments=Комментарии к опции
+label.product.productoptions.type=Тип опции
+label.product.productoptions.list=Список опций
+
+label.product.productoption.type.text=Text
+label.product.productoption.type.radio=Radio
+label.product.productoption.type.select=Select
+label.product.productoption.type.checkbox=Checkbox
+
+label.product.option.displayonly=Опция только для отображения
+label.product.option.code=Код опции
+label.product.option.codehelp=Код опции требуется для запроса опции по атрибутам
+
+#options values
+label.product.productoptionsvalues.title=Значение опции продукта
+label.product.productoptionsvalues.list=Список значений опций продукта
+label.product.productoptiosvalue.title=Значение опции продукта
+label.product.productoptionvalue.edit.title=Редактировать значение опции продукта
+label.product.productoptionvalue.create.title=Создать значение опции продукта
+label.product.productoptionvalue=Изображение значения опции
+
+label.product.customGroup.title=Группа продукта
+label.product.customgroup.add=Добавить собственную группу продуктов
+label.product.customgroup.code=Код собственной группы продуктов (должен быть уникальным)
+
+label.product.rate=Поставить рейтинг товару
+label.product.clickrate=Рейтинг товара (щёлкните по звёздам, чтобы активировать рейтинг)
+
+#content Images - Files
+label.contentImages.store=Торговый магазин
+label.content.images=Библиотека изображений
+label.content.files=Библиотека файлов
+label.content.pages=Страницы с контентом
+label.content.pages.manage.content=Управлять страницами с контентом
+label.content.manage.content=Управлять контентом
+label.content.pages.page.name=Имя страницы
+label.content.pages.page.content=Контент страницы
+label.content.boxes=Контейнеры контента
+label.content.boxes.position=Позиция контейнера
+label.content.boxes.name=Имя контейнера
+label.content.sections=Секции контента
+label.content.friendlyurl=Дружественный url
+label.content.metatag.description=Мета тег описания
+label.content.page.displaymainmenu=Отображать эту страницу в главном меню
+
+#shipping
+label.shipping.title=Настройки доставки
+label.shipping.national=Национальная
+label.shipping.international=Международная
+label.shipping.mode=Мод доставки
+label.shipping.methods=Способ доставки
+label.shipping.countries=Отправлять в страны
+label.shipping.options=Опции доставки
+label.shipping.taxonshipping=Принимать налоги на доставку
+label.shipping.freeshippingamount=Бесплатная доставка на сумму свыше
+label.shipping.handlingfees=Сборы на обработку
+label.shipping.packaging.title=Информация о упаковке
+label.shipping.packaging.individual=Товары будут доставлены индивидуально
+label.shipping.packaging.boxes=Товары будут собраны и отправлены в коробке
+label.shipping.packaging.box.height=Высота коробки
+label.shipping.packaging.box.length=Длина коробки
+label.shipping.packaging.box.width=Ширина коробки
+label.shipping.packaging.box.weight=Вес коробки
+label.shipping.packaging.box.maxweight=Максимальный вес в коробке
+label.shipping.packaging.box.maxitems=Максимум товаров в коробке
+label.shipping.addregion=Добавить регион
+label.shipping.region=Регион
+label.shipping.allquotes=Отобразить все примечания о стоимосте доставки
+label.shipping.leastexpensivequotes=Отобразить наименьшую стоимость доставки
+label.shipping.moreexpensivequotes=Отобразить наибольшую стоимость доставки
+label.message.region.available=Регион доступен
+label.message.region.exist=Регион уже существует
+label.shipping.maximumWeight=Максимальный вес
+label.shipping.shippingaddress=Адрес доставки
+label.shipping.billingaddress=Адрес платёжного лица
+label.message.maximumWeight.exist=Максимальный вес уже существует
+label.shipping.fees=Платы за доставку
+label.shipping.freeshipping=Бесплатная доставка!
+label.shipping.freeshipping.over=Бесплатная доставка на заказы свыше
+label.shipping.freeshippingandhandling=Бесплатная доставка и вручение
+label.shipping.origin.title=Источник адреса доставки
+label.shipping.origin.description=Поможет расчитать стоимость доставки. По умолчанию адрес магазина.
+
+#order
+label.order.title=Заказы
+label.order.total=Всего
+label.order.totals=Итого
+label.order.date=Дата заказа
+label.order.module=Моудль оплаты
+label.order.paymentmode=Мод оплаты
+label.order.shippingmethod=Мод доставки
+label.order.refund=Принимать возвраты
+label.order.capture=Захват транзакции
+label.order.item=Товар
+label.order.price=Цена
+label.order.sendinvoice=Отправить счёт по электронной почте
+label.order.printinvoice=Распечатать счёт
+label.order.packing=Печать упаковочного листа
+label.order.updatestatus=Отправить статус заказа по электронной почте
+label.order.downloademail=Отправить скачанное электронное письмо
+label.order.history=История
+label.order.recent=Недавние заказы
+label.order.pastorders=Предыдущие заказы
+label.order.summary=Итоги заказа
+label.order.details=Детали заказа
+label.order.PROCESSING=Обработка
+label.order.ORDERED=Заказано
+label.order.PAID=Заплачено
+label.order.SHIPPED=Доставлено
+label.order.PREPARED=Подготовлено
+label.order.REFUNDED=Возвращено
+label.order.DELIVERED=Доставлено
+label.order.CANCELED=Отменено
+refund=Возврат
+
+order.total.subtotal=Подитог
+order.total.total=Итого
+order.total.shipping=Доставка
+order.total.handling=Вручение
+order.total.discount=Скидка
+
+label.order.recalculate=Пересчитать
+
+label.order.transactions=Список транзакций
+
+#payment
+label.payment.title=Способы оплаты
+label.payment.module.title=Способ оплаты
+
+label.payment.paypal.usepaypal=Использовать PayPal
+label.payment.moneyorder.usemoneyorder=Использовать денежный перевод
+label.payment.creditcard.usecredicard=Использовать кредитную карту
+label.payment.creditcard.cardowner=Имя держателя карты
+label.payment.creditcard.cardnumber=Номер карты
+label.payment.creditcard.cardexpiry=Дата истечения срока действия карты
+label.payment.creditcard.cardexpiry.month=Месяц истчения срока действия карты
+label.payment.creditcard.cardexpiry.year=Год истчения срока действия карты
+label.payment.creditcard.cardcvv=CCV вашей карты
+label.payment.creditcard.whatiscvv=Цифры CCV вашей кредитной карты?
+
+
+#tax
+label.tax.taxclass.title=Классы налогов
+label.tax.taxclass=Класс налогов
+label.tax.taxclass.name=Имя класса налогов
+label.tax.taxconfiguration=Базис расчёта налогов
+label.tax.storeaddress=Адрес магазина
+label.tax.piggyback=Накопления
+label.tax.compound=Соединения
+
+#configuration
+label.configuration.options=Опции конфигурации
+label.configuration.configurations=Конфигурации
+label.configuration.google_analytics_url=Google Analytics URL (UC-XXXXXX)
+label.configuration.google_api_key=Google API key (Для карт)
+label.configuration.facebook_page_url=FaceBook Страница
+label.configuration.twitter_handle=Twitter
+label.configuration.pinterest=Pinterest
+label.configuration.instagram=Instagram
+label.social.connect=Свяжитесь с нами
+label.social.facebook=FaceBook
+label.social.twitter=Twitter
+label.configuration.useglobalsearch_suggestions=Использовать глобальный преопределённые поисковые предложения
+label.configuration.globalsearch_suggestions_path=Использовать глобальные преопределённые предложения путей
+
+#cart
+label.emptycart=Нет товаров в корзине
+label.cart=Корзина
+label.mycart=Моя корзина
+label.cart.revieworder=Обзор моего заказа
+label.cart.placeorder=Разместить мой заказ
+
+label.shipping.nopostalcode=Стоимость доставки будет доступна после заполнения почтового индекса
+
+#checkout
+label.checkout=Оплата
+label.proceed.checkout=Перейти к оплате
+label.subtotal=Под-итог
+label.checkout.confirmation=Заказ завершён
+
+#register
+label.register.notyetregistered=Ещё не зарегестрированы?
+label.register.whyregister=Почему стоит зарегестрироваться?
+label.register.registerreasons=Упростить процесс оплаты, уже имея всю заполненную информацию, покупки в один клик и доступ к дополнительным возможностям.
+label.register.confirmation=Регистрация завершена успешно! Электронное письмо было отправлено на {0} со всеми деталями авторизации. Проследуйте по {1} и используйте полученную информцию для входа.
+
+label.notification.message.passwordchanged=Мы бы хотели сообщить, что недавно Ваш пароль был изменён на {0}
+label.notification.title.passwordchanged=Предупреждение об ихменении пароля
+
+
+#Email configuration
+label.emailconfig.options=Опции настройки электронной почты
+label.emailconfig.protocol=Протокол
+label.emailconfig.host=Хост
+label.emailconfig.port=Порт
+label.emailconfig.username=Имя пользователя
+label.emailconfig.password=Пароль
+label.emailconfig.smtpauth=Требует авторизацию
+label.emailconfig.starttls=STARTTLS
+label.emailconfig.requiresauthentication=Почтовый сервер требует авторизацию (должно быть)
+label.emailconfig.requiresstarttls=Некоторые серверы, такие как Google, могут потребовать starttls шифрование
+
+label.adminurl=URL администрации
+
+email.username.label=Имя пользователя : {0}
+email.password.label=Пароль : {0}
+email.administration.url=URL администрации : {0}
+
+email.newuser.title=Новый пользователь был создан
+email.newstore.title=Новый магазин был создан
+email.newstore.text=Новый магазин был создан
+email.newuser.text=Новый пользователь был создан
+email.newstore.name=Название магазина : {0}
+email.newstore.info=Информация о пользователе будет отправлена в отдельном письме.
+
+email.order.title={0} - подтверждение заказа: {1}
+email.order.confirmation=Подтверждение заказа: {0}
+email.order.ordered=Заказано в : {0}
+email.order.updated=Обновлено в : {0}
+email.order.status.title=Заказ {0} обновлён
+email.order.status=Последний статус заказа: {0}
+email.order.thanks=Спасибо за покупку!
+email.order.download.title=Скачайте ваши файлы - подтверждение заказа: {0}
+email.order.download.text=Скачанные вами файлы будут доступны {0} дней. Вы должны получить на почту всю необходимую для входа информацию. Однажды войдя, проследуйте в детали заказа <strong>{1}</strong> И кликните на "Скачать файлы". Также можете получить доступ к этой секции по ссылке {2}. Если возникли трудности свяжитесь с нами через {3}.
+
+email.contact=Новый контактный электронный адрес - {0}
+email.contact.title=Электронный почтовый адрес
+label.checkout.logon=Войдите для упрощения процесса покупки!
+
+label.checkout.text=Спасибо Вам за заказ от {0}.
+label.checkout.orderid= ID вашего заказа - {0}.
+label.checkout.email=Письмо с деталями заказа было отправлено на {0}.
+label.checkout.additionaltext=Если у вас есть какие-либо вопросы или предложения, пожалуйста, отправьте нам письмо с вашим номером заказа. Мы ценим ваше мнение.
+label.checkout.downloads.completed=Здесь вы можете скачать файлы.
+label.checkout.downloads.processing=Просим обратить внимание, что заказ вступит силу только после оплаты.
+
+label.entitylist.paging=Показано {0} - {1} из {2} результатов
+
+label.checkout.moneyorder=Пожалуйста оплатите заказ по указанным реквизитам:
+
+email.user.resetpassword.text=Был произведён запрос на сброс вашего пароля. Здесь вы можете найти ваш пароль.
+email.customer.resetpassword.text=Был произведён запрос на сброс вашего пароля. Здесь вы можете найти ваш пароль.
+email.disclaimer=Этот почтовый адрес был указан вами или одним из наших пользователей. Если произошла ошибка, пожалуйста, напишите письмо по {0} для деактивации.
+email.contactowner=Если у вас остались вопросы по запросу, пожалуйста, напишите письмо по {0} в порядке получения более подробной информации.
+email.spam.disclaimer=Запросы на удаление вашей личной информации могут быть отправлены на этот адрес и будут тщательно соблюдены.
+email.copyright=Copyright @ {0} {1}, All Rights Reserved
+email.message.from=Сообщение от {0}
+email.greeting=Здравствуйте {0},
+email.customer.greeting=Спасибо за присоединение к {0}, вы получите доступ к секции покупателя по ссылке {1}. Войдите в систему и проследуйте в детали заказа. Информация по входу в систему прикреплена. Если вы встретились с какими-либо трудностями, пожалуйста, отправьте пиьсмо на {2}.
+email.order.statustext=Обновления статуса произошло на заказ {0} заказанный на {1}
+email.order.status=Обновлено на {0} - статус последнего заказа {1}
+
+
+# General Form
+button.label.close=Закрыть
+button.label.esc=Отмена
+button.label.submit=Сохранить
+button.label.submit2=Отправить
+button.label.submitorder=Отправить заказ
+button.label.ok=Ok
+button.label.cancel=Отмена
+button.label.edit=Редактировать
+button.label.crop=Обрезать
+button.label.reset=Сбросить
+button.label.clear=Очистить
+button.label.clear.all=Очистить всё
+button.label.add=Добавить
+button.label.update=Обновить
+button.label.removeservice=Удалить сервис
+button.label.getcode=Получить код
+button.label.logout=Выйти
+button.label.logon=Войти
+button.label.login=Войти
+button.label.signin=Войти
+button.label.register=Регистрация
+button.label.select=Выбрать
+button.label.subscribe=Подписаться
+button.label.printreport=Распечатать отчёт
+button.label.upload.images=Загрузить изображения
+button.label.upload.files=Загрузить файлы
+button.label.resetpassword=Сбросить пароль
+button.label.view=Детали
+button.label.addToCart=Добавить в корзину
+button.label.continue=Продолжить выбор покупок
+
+#menus
+menu.home=Домой
+menu.catalogue=Каталог
+menu.store=Магазин
+menu.storeDetails=Магазин
+menu.storeLanding=Домашняя страница магазина
+menu.storeBranding=Бренд магазина
+menu.catalogue-products=Продукты
+menu.catalogue-products-create=Создать продукт
+menu.catalogue-categories=Категории
+menu.catalogue-categories-create=Создать категорию
+menu.catalogue-categories-list=Лист категорий
+menu.catalogue-categories-hierarchy=Иерархия категорий
+menu.catalogue-products-categories=Продукты к категориям
+menu.catalogue-options=Опции
+menu.catalogue-products-images=Изображения продуктов
+menu.catalogue-products-images-url=Внешний URL продуктов
+menu.catalogue-options-create=Создать опцию
+menu.catalogue-options-list=Список опций
+menu.catalogue-optionsvalues-create=Создать значение опции
+menu.catalogue-optionsvalues-list=Список значений опций
+menu.catalogue-products-group=Группа продуктов
+menu.catalogue-featured=Отмеченные продукты
+menu.catalogue-products-custom-group=Своя группа продуктов
+menu.customer=Покупатели
+menu.profile=Профиль
+menu.users=Пользователи
+menu.user=Пользователь
+menu.myprofile=Мой профиль
+menu.change-password=Изменить пароль
+menu.create-user=Создать пользователя
+menu.create-store=Создать магазин
+menu.store-list=Магазины
+menu.security=Безопасность
+menu.security-permissions=Права доступа
+menu.security-groups=Группы
+menu.security-create-group=Создать группу
+menu.order=Заказы
+menu.order-list=Список заказов
+menu.shipping=Доставка
+menu.shipping-configs=Настройки доставки
+menu.shipping-methods=Способы доставки
+menu.shipping-options=Опции доставки
+menu.shipping-packages=Упаковка
+menu.shipping-origin=Источник доставки
+menu.configuration=Настройки
+menu.cache=Управление кэшем
+menu.customer-list=Список покупателей
+menu.customer-create=Создать покупателя
+menu.customer-options=Опции покупателя
+menu.customer-options-list=Список опций покупателя
+menu.customer-options-create=Создать опцию покупателя
+menu.customer-options-values-list=Список со значениями опции покупателя
+menu.customer-options-values-create=Создать значение опции покупателя
+menu.customer-options-set=Управление сетом опций покупателя
+menu.content=Управление контентом
+menu.content-pages=Управление страницами
+menu.content-boxes=Управление контейнерами
+menu.content-images=Управление изображениями
+menu.content-images-create=Создать изображения
+menu.content-pages-create=Создать страницу
+menu.content-boxes-create=Создать контейнер
+menu.content-files=Управление файлами
+menu.payment=Оплата
+menu.tax=Управление
+menu.taxconfiguration=Настройки налогов
+menu.taxclass=Классы налогов
+menu.taxrates=Налоговые ставки
+menu.taxrates.rate=Налоговая ставка
+menu.taxrates.code=Код налоговой ставки
+menu.taxrates.name=Имя налоговой ставки
+menu.product.category=Ассоциировать с категорией
+menu.accounts-conf=Настройки аккаунта
+menu.email-conf=Настройки электронной почты
+menu.system-configurations=Системные настройки
+menu.manufacturer-list=Список производителей
+menu.manufacturer-create=Создать производителя
+menu.addaddress=Добавить новый адрес
+menu.editaddress=Изменить адрес
\ No newline at end of file
diff --git a/sm-shop/src/main/resources/database.properties b/sm-shop/src/main/resources/database.properties
index 89a1fe1..f407533 100644
--- a/sm-shop/src/main/resources/database.properties
+++ b/sm-shop/src/main/resources/database.properties
@@ -1,12 +1,11 @@
 ##
-## configuration base de donnees
+## db config
 ##
 
 #Need to run these commands before running shopizer - choose your username and password
 #mysql>CREATE DATABASE SALESMANAGER;
-#mysql>GRANT USAGE, SELECT ON *.* TO test@localhost IDENTIFIED BY 'password' with grant option;
-#mysql>GRANT ALL ON SALESMANAGER.* TO test@localhost;
-#mysql>GRANT FILE ON *.* TO test@localhost;
+#mysql>CREATE USER shopizer IDENTIFIED BY 'very-long-shopizer-password';
+#mysql>GRANT ALL ON SALESMANAGER.* TO shopizer;
 #mysql>FLUSH PRIVILEGES;
 
 #MYSQL
diff --git a/sm-shop/src/main/resources/profiles/docker/database.properties b/sm-shop/src/main/resources/profiles/docker/database.properties
index 97cb23a..e207dcd 100644
--- a/sm-shop/src/main/resources/profiles/docker/database.properties
+++ b/sm-shop/src/main/resources/profiles/docker/database.properties
@@ -1,20 +1,3 @@
-##
-## configuration base de donnees
-##
-
-#Need to run these commands before running shopizer - choose your username and password
-#mysql>CREATE DATABASE SALESMANAGER;
-#mysql>GRANT USAGE, SELECT ON *.* TO test@localhost IDENTIFIED BY 'password' with grant option;
-#mysql>GRANT ALL ON SALESMANAGER.* TO test@localhost;
-#mysql>GRANT FILE ON *.* TO test@localhost;
-#mysql>FLUSH PRIVILEGES;
-
-#MYSQL
-#db.jdbcUrl=jdbc:mysql://localhost:3306/SALESMANAGER?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
-#db.user=root
-#db.password=password
-#db.driverClass=com.mysql.jdbc.Driver
-#hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
 
 #H2
 db.jdbcUrl=jdbc\:h2\:file\:/tmp/SALESMANAGER;AUTOCOMMIT=OFF;;mv_store=false;INIT\=CREATE SCHEMA IF NOT EXISTS SALESMANAGER
diff --git a/sm-shop/src/main/resources/profiles/gcp/database.properties b/sm-shop/src/main/resources/profiles/gcp/database.properties
new file mode 100644
index 0000000..2881b10
--- /dev/null
+++ b/sm-shop/src/main/resources/profiles/gcp/database.properties
@@ -0,0 +1,28 @@
+
+#Need to run these commands before running shopizer - choose your username and password
+#mysql>CREATE DATABASE SALESMANAGER;
+#mysql>CREATE USER shopizer IDENTIFIED BY 'very-long-shopizer-password';
+#mysql>GRANT ALL ON SALESMANAGER.* TO shopizer;
+#mysql>FLUSH PRIVILEGES;
+
+#MYSQL
+db.jdbcUrl=jdbc:mysql://<HOST>:3306/SALESMANAGER?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
+db.user=shopizer
+db.password=<YOUR PASSWORD>
+db.driverClass=com.mysql.jdbc.Driver
+hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
+
+
+
+db.preferredTestQuery=SELECT 1
+db.schema=SALESMANAGER
+hibernate.hbm2ddl.auto=update
+
+
+
+##
+## db pool config
+##
+db.initialPoolSize=4
+db.minPoolSize=4
+db.maxPoolSize=8
\ No newline at end of file