 
			
				13.02.2017, 11:10
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Проблемы локализации
			 
			
		
		
		
		Совершенно не понятно как правильно написать override для перевода тех или иных частей программы. 
На данный момент проблема с колонками грида и кнопками в тулбаре.
 
Песочница  https://fiddle.sencha.com/#view/editor&fiddle/1q4p
Такой override к примеру, заголовок правильно поменяет, а вот колонки он просто перезапишет - то есть по сути удалит все настройки в исходном классе:
 
Ext.define("Element.locale.ru.office.view.element.workstationList.WorkstationList", {
	override: "Ews.office.view.element.workstationList.WorkstationList",
	title: "Список рабочих мест",
	columns: [{
		dataIndex: "PARAMS",
		text: "Параметры"
	}]
});
Нечто аналогичное происходит с тулбарами и вообще со всеми компонентами, которые перечисляются в массивах (колонки, items, tbar, bbar и тп)
 
Вдобавок title: "Список рабочих мест" тоже не перезаписывает исходный заголовок таблицы.
 
Как вы переводите?
 
Проблему озвучил на:
 https://goo.gl/SJwLLH
https://goo.gl/BNxNYP
https://toster.ru/q/397237
Попробовал в модели вида сделать перевод. Но это не работает. Почему-то игнорируется override модели вида:
 
Ext.define("Element.locale.ru.office.view.element.workstationList.WorkstationListModel", {
	override: "Ews.office.view.element.workstationList.WorkstationListModel",
	
	data: {
		columnText: {
			PARAMS: "Параметры"
		}
	}
	
});
	columns: [{
	...
		dataIndex: "PARAMS",
		bind: {
			text: "{columnText.PARAMS}"
		}
	}]
Песочница  https://fiddle.sencha.com/#view/editor&fiddle/1q4p
В исходных кодах случайно нашел этот тег //<locale type="object">  
в файле  http://docs.sencha.com/extjs/6.2.0/c...rs.filter.Date
Но как его использовать не понятно. Подставил в свой код, пока действия не оказало.  
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось khusamov, 13.02.2017 в 12:02.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.02.2017, 13:20
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.06.2014 
					
					
					
						Сообщений: 292
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		А почему не держать переводы в отдельном файле как константы? У меня получаются вот примерно такие конфиги компонентов: 
Ext.define('SafetyRound.view.sr.delegate.Delegate', {
	extend: 'Ext.window.Window',
	title: Localtext.heading.delegate_as_tasks,
	bbar: [
		{ handler: 'doConvert',
			text: Localtext.button.delegate
		},
		{ handler: 'closeView',
			text: Localtext.button.closewindow
		}
	],
	layout: 'card'
	// ...
});
А значения можете или динамически подгружать при загрузке приложения, или из статичного файла с переводами.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.02.2017, 14:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Конечно можно и так. Но я хочу этот вопрос решить так, как предложили разработчики Сенчи  http://docs.sencha.com/extjs/6.2.0/g...alization.html
Они там просто не до конца изложили все. Не объяснили как свои компоненты оформлять. И как переводить компоненты внутри массивов.
 
Мне их подход нравится тем, что перевод осуществляется на этапе компиляции, а не на этапе выполнения. И памяти ест меньше и быстрее по идее работает.  
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.02.2017, 15:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Хотя ваш подход удобен тем, что при рефакторинге будет меньше телодвижений... 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.02.2017, 17:44
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.06.2014 
					
					
					
						Сообщений: 292
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Методика локализации от сенчи мне категорически не нравится. И архитектурно и, как вы подметили, изобилием телодвижений. А каждое лишнее телодвижение - это потенциальнй баг. Хотя соглашусь что мой метод требует больше памяти на хранение ключей. Но тут уже можно думать над оптимизацией. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				13.02.2017, 22:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Скорее всего они просто не решали еще эту проблему всерьез. Сделали локализацию на основе хаков (через механизм override) и для начала этого вполне достаточно. А вот дальше пока ничего не делают. А было бы неплохо, если они совместили оба подхода. 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.02.2017, 02:01
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.05.2016 
					
					
					
						Сообщений: 95
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		У меня несколько иная проблема с переводами. Делал по туторилу Сенчи overrides, внося строки локализации, которые отсутствуют в русском переводе. 
Мне не понравилась строка в pagingtoolbar с количеством элементов, очень уж длинная. Заменил: 
 
Ext.define("Ext.locale.ru.toolbar.Paging", {
     override: "Ext.toolbar.Paging",
     displayMsg: 'Показано {0} - {1} из {2}'
});
Проверил — работает. 
Однако в production build'е увидел, что строка осталась прежней. В поисках по app.js обнаружил, что стандартная строчка никуда не делась, она просто расположилась ниже, заменив мою собственную, которая почему-то выше.
 
На форуме сенчи:
 https://www.sencha.com/forum/showthr...oduction-build 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.02.2017, 12:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Возможно Ext.define("Ext.locale.ru.toolbar.Paging", { 
надо переписать так: 
 
Ext.define("MyApp.locale.ru.toolbar.Paging", { 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2017, 03:44
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.05.2016 
					
					
					
						Сообщений: 95
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 khusamov, так тоже работает, но в production build проблема осталась. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |