diff --git a/proto/items/items.proto b/proto/items/items.proto
index 80d4f21eebe3505beeaf02016b9926bcdce53daf..87228d27198845e6308ca065f4ce3a6d817e30f9 100644
--- a/proto/items/items.proto
+++ b/proto/items/items.proto
@@ -65,15 +65,27 @@ message Item {
   string updated_by = 9;                       // id пользователя обновившего текущую ревизию
   google.protobuf.Timestamp updated_at = 10;     // дата обновления текущей ревизии
   google.protobuf.Struct data = 11;
-  map<string, google.protobuf.Struct> translations = 12;
   string revision_id = 13;
   string revision_description = 14;
-  string locale = 18;
   bool deleted = 19;
   bool hidden = 20;
   bool template = 21;
   Permissions permissions = 22;
   double search_score = 23;  // релеватность элемента при полнотекстовом поиске
+
+  // string locale = 18; // DEPRECATED: используется locale_id
+
+  // При создании или обновлении идентификатор локали в котором создается запись, опционально.
+  // Если указан, то создается перевод для указанного языка, поле translations игнорируется
+  string locale_id = 100; // идентификатор локали полученной записи
+
+  // Позволяет одновременно установить/получить несколько переводов и производить манипуляции с переводами
+  // Ключами является идентификатор локали, значениями - данные переводы
+  map<string, google.protobuf.Struct> translations = 12;
+
+  // список идентификаторов локалей для которых есть переводы
+  // соотвествует ключам в translations
+  repeated string translations_ids = 101;
 }
 
 /**
@@ -131,6 +143,8 @@ message FindOptions {
   bool regular = 4;
   bool hidden = 5;
   bool templates = 6;
+  string locale_id = 7; // Язык перевода который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
+  repeated string translations_ids = 8; // Список идентификаторов переводов/локалей, которых должны быть включены в результат
 }
 
 message UpdateOptions {
@@ -138,7 +152,8 @@ message UpdateOptions {
 }
 
 message GetPublishedOptions {
-  string locale_id = 1;
+  string locale_id = 7; // Язык перевода который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
+  repeated string translations_ids = 8; // Список идентификаторов переводов/локалей, которых должны быть включены в результат
 }
 
 message DeleteOptions {
@@ -160,10 +175,12 @@ message UnpublishOptions {
 
 message FindPublishedOptions {
   common.FindOptions options = 2;
-  string locale_id = 3;
+  // string locale_id = 3; // язык для поиска переводов. Если не указан, то возвращаются данные для языка по умолчанию
   bool regular = 4;
   bool hidden = 5;
   bool templates = 6;
+  string locale_id = 7; // Язык перевода который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
+  repeated string translations_ids = 8; // Список идентификаторов переводов/локалей, которых должны быть включены в результат
 }
 
 message FindArchivedOptions {
@@ -191,6 +208,7 @@ message  AggregateOptions {
 
 message  AggregatePublishedOptions {
   map<string, string> fields = 1;
+  // TODO: Каким образом будет организована работа с переводами и требуется ли она?
 }
 
 message CreateRequest {
@@ -210,12 +228,19 @@ message IntrospectResponse {
   repeated common.Error.BadRequest.FieldViolation validation_errors = 3;
 }
 
+message GetOptions {
+  string locale_id = 7; // Язык перевода который будет использоваться. Если не указан, то возвращаются данные для языка по умолчанию
+  repeated string translations_ids = 8; // Список идентификаторов переводов/локалей, которых должны быть включены в результат
+}
+
 message GetRequest {
   string space_id = 1;
   string env_id = 2;
   string collection_id = 3;
   string item_id = 4;
+  GetOptions options = 5;
 }
+
 message GetResponse {
   Item item = 1;
 }