Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.10.2012, 13:50
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 1  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
Post Локализация и статические классы и поля

День добрый, господа!
Занимаюсь локализацией проекта. Все надписи тяну с помощью ResourceManager'а :
Код AS3:
resourceManager.getString('ResultsCanvas','lMinutes')
Но вот незадача - в проекте куча статических полей и классов хранящие текст, который тоже нужно переводить.

Подскажите, как тут быть?

Старый 31.10.2012, 13:58
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 2  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Так и переводить вручную. А если вы так сильно завязались на названия - тот тут уже проблема в структуре приложения.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 31.10.2012, 14:07
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 3  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
просто переписать не получиться. Нужно что бы при смене языка все надписи подтягивались из пакета ресурсов для выбранной локали.
например:
Код AS3:
resourceManager.getString('ResultsCanvas','refreshButton')
Если язык русский, то вернётся "Обновить". Если английский, то "Refresh". Так же нужно и с статик полями провернуть. Только увы ресурсМенеджер они конечно же не видят.

Старый 31.10.2012, 14:34
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
РесурсМенеджер - синглтон, его можно где угодно трогать.

Код AS3:
var rm:IResourceManager = ResourceManager.getInstance();
Ну а само обновление полей все равно на вас. Где-то биндинг отработает, a где-то надо сказать контролам, чтобы забрали новые метки.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.


Последний раз редактировалось GBee; 31.10.2012 в 14:34. Причина: , забыл
Старый 31.10.2012, 15:54
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 5  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
Что-то никак не разберусь...
Давайте лучше на живом примере разберём.
Вот компонент. Его статик поля используются в других частях приложения. Тут попытался воспользоваться вашим советом.
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx"
 			width="148" height="24">
 
	<fx:Script>
		<![CDATA[
			var rm:IResourceManager = ResourceManager.getInstance(); //Ошибка: Обращение к несуществующему свойству ResourceManager
 
			public static const STATUS_TYPES : Object = 
				 {
					bad:
					{
						status_id: 2,
						name: rm, // Ошибка: Обращение несуществующего свойства rm. 
						color: 0xFF0000
					},
					notBad:
					{
						status_id: 1,
						name: "С ошибками",
						color: 0xFF9100
					},
					notGood:
					{
						status_id: -1,
						name: "Нет данных",
						color: 0xF2FF00
					},
					good:
					{
						status_id: 0,
						name: "Работает",
						color: 0x9DFF00
					}
				}; 
 
		]]>
	</fx:Script>
 
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Metadata>
		[ResourceBundle("ResultsCanvas")]
	</fx:Metadata>
Хотелось что бы поле name менялось в зависимости от выбранного языка.

Код AS3:
public final class ApplicationConst
	{
               //List of Values constants
		public static const LOV_TEXTINPUT_TOOLTIP:String = "Для сокращения списка введите текст для поиска и нажмите 'Enter'";
		public static const LOV_TEXTINPUT_PROMPT:String = "Поиск";
и эти поля тоже подтягивали в зависимости от выбранного языка.

Старый 31.10.2012, 16:28
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 6  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
//Ошибка: Обращение к несуществующему свойству ResourceManager
импорт-то где?
Да и визуальные компоненты вроде должны иметь ссылку и так


Цитата:
и эти поля тоже подтягивали в зависимости от выбранного языка.
Вообще странно вынесите все во внешний файлик.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 31.10.2012, 18:46
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 7  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
Цитата:
Вообще странно вынесите все во внешний файлик.
Что именно вынести? Статические поля или локализованные строки? Почему странно?

Старый 31.10.2012, 22:37
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Код AS3:
public static const LOV_TEXTINPUT_TOOLTIP:String = "Для сокращения списка введите текст для поиска и нажмите 'Enter'";
public static const LOV_TEXTINPUT_PROMPT:String = "Поиск";
Вот это тоже, по идее, должно быть в локалях и STATUS_TYPES.name тоже. Даже цвет можно.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 01.11.2012, 11:54
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 9  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
Да, полностью согласен, так и хочу сделать только у меня не получается потом это из локали вытащить!
Код AS3:
public static const LOV_TEXTINPUT_TOOLTIP:String = resourceManager.getString('ResultsCanvas','LOV_TEXTINPUT_TOOLTIP');
public static const LOV_TEXTINPUT_PROMPT:String = resourceManager.getString('ResultsCanvas','LOV_TEXTINPUT_PROMPT');
попросту не видит resourceManager, вообще короме статичных вещей ничего не видит(

STATUS_TYPES - объект, но думаю что это можно будет поправить. Но опять же главная загвозка в том что он статик. Можно ли оставив эти вещи статичными подвязать к ним строки из локали?

Старый 01.11.2012, 13:23
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Статик можно, а константы вряд ли
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.