Админ-панель.

 
+
-
edit
 

LANCORD

новичок
Хотел бы узнать мнение гуру.

1. Перегрузка компонент (модуль админки) в аттаче, хотелось бы при выводу сообщений учитывать язык пользователя.
Пример:

code text
  1. vocabulary admreload:
  2. also admreload: definitions
  3.  
  4. new-hashmap
  5.         "admin_reload" => back
  6.         "Р_РчС_РчР·Р°Р_С_С_Р·РєР° РєР_Р_РїР_Р_РчР_С'" => title
  7.         "JBForth РїРчС_РчР·Р°Р_С_С_РРчР_!" => message
  8. value admin_message
  9.  
  10. : admin_reload_skills  ( -- )
  11.         "reload" check-access
  12.         skills-reload
  13.         "Р_РчС_РчР·Р°Р_С_С_Р·РєР° С_РєРёР>Р>Р_Р_ Р·Р°Р_РчС_С_РчР_Р°." admin_message "message" m!
  14.         "jbforth/admin/reload_back.htm" show
  15. ;
  16.  
  17. ....


В при любом языке пользователя будет выводить только русский текст.

P.S. Есть желание навести порядок в админке...

2. Хотелось бы узнать, как в

code text
  1. \ Р_Р_С_С<Р>Р°РчС' Р°Р_Р_Р_Р_С_С< С_ С_казаР_Р_Р_Р№ РїРчС_РёР_Р_РёС╪Р_Р_С_С'С_С_
  2. vocabulary announces:
  3. also forth definitions
  4.  
  5. \ РїРчС_РёР_Р_РёС╪Р_Р_С_С'С_ Р°Р_Р_Р_Р_С_Р° (Р_ Р_РёР_)
  6. 40 VALUE have_a_rest_delay      
  7. 10 VALUE online_players_delay  
  8.  
  9. : have_a_rest
  10.         "Р_Р_РёС'Рч РїР_РєС_С_РёС'Рч, Р>С_С╪С_Рч Р_С< РїР_Р_С_С'С'Рч Р_С' С_РёР_Р°С_РчС', С╪РчР_ Р_С' С_С'Р_Р№ РёР_С_С<!" announce
  11.         "have_a_rest" have_a_rest_delay  60000 * timer-start
  12. ;
  13. have_a_rest
  14.  
  15. : online_players
  16.         "l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget announce
  17.         "online_players" online_players_delay 60000 * timer-start
  18. ;
  19. online_players
  20.  
  21. previous definitions


online_players выводить не просто число онлайн игроков, а "Игроков онлайн: x" ?
Прикреплённые файлы:
att.7z (скачать) [1,31 кбайт, 68 загрузок] [attach=54546]
 
 
Я же говорю вам: "Приходите завтра." А вы всё время сегодня приходите!  
Это сообщение редактировалось 27.04.2007 в 10:06
+
-
edit
 

Balancer

администратор
★★★★★
1. Можно было и в русском варианте тексты сюда кинуть :) (а экранирование кавычек - это я попозже поправлю).

2. Сейчас есть несложные слова ru: и en: (и можно дописать для других языков, если понадобится), которые в паре в режиме компиляции позволяют использовать конструкции вида:

code forth
  1. ru: Ты выиграл!
  2. en: You are win!
  3. show


Т.е. просто берётся текст до конца строки, если включен соответствующий язык.
 
UA MorbidAngel #27.04.2007 11:59
+
-
edit
 

MorbidAngel

разработчик L2J Fortress
★★★
а если вместо фразы имена html он их содержимое покажет?
RU Balancer #27.04.2007 12:05  @MorbidAngel#27.04.2007 11:59
+
-
edit
 

Balancer

администратор
★★★★★
MorbidAngel> а если вместо фразы имена html он их содержимое покажет?

А имена html прямо пишешь "go.htm" show

show же перед выводом сперва попытается найти файл "go-<lang>.htm", например, "go-ru.htm". Если не найдёт, а поиск был в data/html, то попытается найти в data/html-<lang>. Если был поиск файла go.htm в каталоге квестов, то попытается найти <lang>/go.htm (например, ru/go.htm").

В общем, там никаких особых хитростей не нужно. Вообще, смотри как русификация сделана на сайте.

Кстати, при этом языков может быть любое число, хоть немецкий, хоть испанский.
 
+
-
edit
 

LANCORD

новичок
balancer:
2. Сейчас есть несложные слова ru: и en: (и можно дописать для других языков, если понадобится), которые в паре в режиме компиляции позволяют использовать конструкции вида:
 


Сейчас - это начиная с какой ревизии?
Как решить мой второй вопрос?

Заранее благодарен за ответ.
Я же говорю вам: "Приходите завтра." А вы всё время сегодня приходите!  
UA MorbidAngel #27.04.2007 17:42  @LANCORD#27.04.2007 15:06
+
-
edit
 

MorbidAngel

разработчик L2J Fortress
★★★
LANCORD> Сейчас - это начиная с какой ревизии?

6052

LANCORD> Как решить мой второй вопрос?

!Server status Total online: [ "l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget ]%% Time to restart: [ shutdown: seconds@ seconds>hms ]%%
 
+
-
edit
 

LANCORD

новичок

Server status Total online: [ "l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget ]%% Time to restart: [ shutdown: seconds@ seconds>hms ]%%



это вариант через htm, конечно это выход, но просто хотелось бы знать, как приписать строку в моём случае.

code text
  1. : online_players
  2.     \"l2f.gameserver.model.L2World\" class \"getAllPlayersCount\" 0 jget announce
  3.     \"online_players\" online_players_delay 60000 * timer-start
  4. ;
  5. online_players
Я же говорю вам: "Приходите завтра." А вы всё время сегодня приходите!  
UA MorbidAngel #03.05.2007 10:41
+
-
edit
 

MorbidAngel

разработчик L2J Fortress
★★★
"l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget announce
Так!
RU Balancer #03.05.2007 11:18  @MorbidAngel#03.05.2007 10:41
+
-
edit
 

Balancer

администратор
★★★★★
MorbidAngel> Так!

Можно упростить до:
code forth
  1. world@ "AllPlayersCount" p@


А ещё лучше один раз описать соответствующее слово через japi-func и вызывать его :)
 
+
-
edit
 

LANCORD

новичок
Временное решение стало таким: (рабочий пример в аттаче)

code text
  1. \ Эвент аннонсер. Посылает аннонсы с указанной периодичностью
  2. vocabulary announces:
  3. also forth definitions
  4.  
  5. \ частота повтора аннонса (в мин)
  6. 60 VALUE have_a_rest_delay      
  7. 15 VALUE online_players_delay  
  8.  
  9. : have_a_rest
  10.                 "Отдохните от игры, сходите и купите колов!" announce
  11.                 "have_a_rest" have_a_rest_delay  60000 * timer-start
  12. ;
  13. have_a_rest
  14.  
  15. : getAllPlayersCount  ( -- )  L2World.class "getAllPlayersCount" 0 jget ;
  16. : online_players
  17.                 "Игроков онлайн: [ getAllPlayersCount ]" parse announce
  18.                 "online_players" online_players_delay 60000 * timer-start
  19. ;
  20. online_players
  21.  
  22. previous definitions


но вопросы всё ещё остались. Balancer писал про простые слова en и ru. В моём примере нужно другое решение. Ибо если использовать эти слова в моём случае, то при переключении языка клиента язык аннонса не меняется. Реализовано было так:

code text
  1. ...
  2.  
  3. : have_a_rest
  4.                 ru: Отдохните от игры, сходите и купите колов!
  5.                 en: Text example!
  6.                 announce
  7.                 "have_a_rest" have_a_rest_delay  60000 * timer-start
  8. ;
  9.  
  10. ...
Прикреплённые файлы:
main.f (скачать) [741 байт, 93 загрузки] [attach=55359]
 
 
Я же говорю вам: "Приходите завтра." А вы всё время сегодня приходите!  
+
-
edit
 

Balancer

администратор
★★★★★
Замечание:
code forth
  1. vocabulary announces:
  2. also forth definitions
  3.  
  4. \ ...
  5.  
  6. previous definitions


Сейчас удобнее писать:
code forth
  1. module: announces:
  2. \...
  3. ;module


Слово module: сформирует нужный словарь и сделает его и текущим и контекстным.

А в записи also forth definitions смысла особого нет, что получается:
also - запихивает контекстный словарь (где ищутся слова по умолчанию) в стек словарей.
forth - указывает контекстным словарём базовый системный
definitions - указывает, что нужно текущим словарём (куда компилируются новые слова) установить контекстный. Т.е. - только что указанный forth. Иначе говоря, после этого все слова будут компилироваться в базовый системный словарь, и в заведении словаря announces: смысла не было :)

...

По словам ru: и en: - видимо, какой-то баг. Проверю. Должно работать "динамически", выдавая строку с текущим языком объекта, в потоке которого выполняется код.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru