Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как изменить язык во время выполнения? (http://www.flasher.ru/forum/showthread.php?t=110519)

lingardo 04.04.2008 03:37

Как изменить язык во время выполнения?
 
Допустим есть текстовое поле привязанным идентификатором из таблицы языков Strings. Есть кнопка "Русский" и "Английский".

Какой код нужно повесить на кнопкив AS3, чтобы менять язык налету?

Спасибо.
________
(а может кто-нибудь альтернативу предложит)

manah 04.04.2008 08:45

вы хотите что бы AS3 "перевел" все слова с одного языка на другой?

lingardo 04.04.2008 11:44

Нажмите во Флеше ctrl+F11. Появится окошко Strings. В нем у меня забито слово на русском и английском. На поле есть динамик текст, с привязанным идентификатором из Strings. Если я в окошке стрингс меняю язык, то мой динамик текст тоже меняет содержимое (т.к. он привязан).

Вопрос. Можноли во время выполнения программы через AS сменить язык, так чтобы все привязанные текстовые поля изменили свой язык?

wvxvw 04.04.2008 12:44

Это в АС2 тож в пакете мх была такая утилита, "переводила" тексты... если честно, никто ей никогда не пользовался... Помоему сейчас это находится в fl.lang.Locale а метод по замене выглядит что-то типа Locale.setDefaultLang, нужно просто этот класс открыть и почитать чего они там понаписывали...

ulik 04.04.2008 13:16

Цитата:

Сообщение от lingardo
Вопрос. Можноли во время выполнения программы через AS сменить язык, так чтобы все привязанные текстовые поля изменили свой язык?

Я вас немного не понимаю. Что значит "изменить язык"?
Код:

// вот русский.
var lang:String="ru";
// изменили на английский.
lang="en";

Смена языка - это ваша реализация, но никак не Class или пакет, встроенный в IDE.

Вот вам пример:
Код:

import flash.text.TextField;
import flash.text.TextFieldAutoSize;

var tf:TextField;
/* текущий язык ставим русский */
var language:String="ru";
/* объект, который лучше бы сделать static classом для удобства */
var textData:Object=new Object();
textData["ru"]=new Object();
textData["ru"].welcome="Добропожаловать на мой сайт !";
textData["ru"].bye="Всего доброго !";
textData["en"]=new Object();
textData["en"].welcome="Welcome to my website !";
textData["en"].bye="Goodbye ";
/* ф-ия смены языка */
function chageLang(newLanguage:String){
        language=newLanguage;
}
/**
* ф-ия для текущего языка
* id - свойство объекта указанного в lang (в нашем случае их 2 - welcome и bye)
*/
function getCurrentLangData(id:String):String {
        return textData[language][id];
}
/*
* ф-ия, на случай, если вы захотите язык, отличный от текущего
* lang - язык (в нашем случае ru/en), id - свойство объекта указанного в lang (в нашем случае их 2 - welcome и bye)
*/
function getDefinedLangData(lang:String, id:String):String {
        return textData[lang][id];
}
/* создадим TF и проверим */
function createTextField():void {
        tf=new TextField();
        tf.autoSize=TextFieldAutoSize.LEFT;
        addChild(tf);
}
createTextField();
/* пример: */
//tf.htmlText=getDefinedLangData("en", "welcome");
tf.htmlText=getCurrentLangData("bye");


lingardo 04.04.2008 13:57

"Смена языка - это ваша реализация, но никак не Class или пакет, встроенный в IDE."

Вот это и спрашивал. Вобщем спасибо, придётся действительно вручную всё делать.

ulik 04.04.2008 14:11

Цитата:

Сообщение от lingardo
"Смена языка - это ваша реализация, но никак не Class или пакет, встроенный в IDE."

Вот это и спрашивал. Вобщем спасибо, придётся действительно вручную всё делать.

Ну, вы сами подумайте, даже если и был класс-переводчик, то он бы имел метод из серии loadExternalDictionary(file:String), это как минимум.
Да и это была б та же "ручная" реализация. Только разработчиков, а не ваша.

wvxvw 04.04.2008 15:20

Ну, так это ИДЕ умеет работать с одним классом (сейчас посмотрел, он действительно существует, там где я и думал), ну и соответственно дает пользователю возможность выбрать какой набор строрк использовать при компиляции... Но он не хороший, если нужно текстовые поля создавать динамически и все такое... вобщем, лучше самому делать


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

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