|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
Есть REST веб-приложение. Хотелось бы, чтобы язык сессии устанавливался автоматически в зависимости от значения хэдера Accept-Language (как написано в документации ) Однако вне зависимости он того, какой хэдер я посылаю (например: Accept-Language: en-US,en;q=0.5 или Accept-Language:ru) ответ приходет на языке установленном в портале управления системой для данного пользователя. Как вариант можно самому брать значение хэдера и устанавливать язык сессии, но нет ли варианта проще? Прилагаю брокер с 2мя методами: /test выводит текущую локаль и сообщение в ней /testmanual устанавливает английскую локаль и сообщение в ней Создание веб-приложения: do ##class(REST.Broker).CreateWebApp("/name") ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 15:57 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
eduard93Прилагаю брокер с 2мя методами:Где именно прилагаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 16:04 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
servit, Вот. Был уверен что загрузил его в первый раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 16:27 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
Показывайте как Вы передаёте Accept-Language : у меня всё работает как положено. Class REST.test Extends %CSP.REST { /// The default domain for csp:text, span and div tags. This parameter is /// used to specify the subset of localized messages to be used on this page. Parameter DOMAIN = "MyDomain"; XData UrlMap [ XMLNamespace = " http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/test" Method="GET" Call="Test"/> </Routes> } ClassMethod Test() As %Status { w "$$$SessionLanguage: ",$$$SessionLanguage," ",$$$Text("Язык"),! f i="en","fr" { s $$$SessionLanguageNode=i w "$$$SessionLanguage: ",$$$SessionLanguage," ",$$$Text("Язык"),! } q $$$OK } } Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 17:29 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
eduard93 , а $zv напиши, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 18:32 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
Александр Коблов, Cache for Windows (x86-64) 2015.1 (Build 256U) Fri Oct 3 2014 00:16:45 EDT servit передаю следующие запросы: Код: l 1. 2. 3. 4. 5. 6. 7.
Код: l 1. 2. 3. 4. 5. 6. 7.
Код: l 1. 2. 3. 4. 5. 6. 7.
На любой из них получаю ответ: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 19:46 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
Александр Коблов eduard93 , а $zv напиши, пожалуйста.Из приложенного XML: Cache for UNIX (SUSE Linux Enterprise Server for x86-64) 2015.1 (Build 419U) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 21:37 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
eduard93 , Если использовать curl, проблема наблюдается? Также проверьте, есть ли в домене %Utility нужные языки, в противном случае предпочтительный язык из HTTP_ACCEPT_LANGUAGE для сессии не установится. Проверил прямо из IE и Opera, меняя приоритеты языков - проблем нет (Cache for Windows (x86-64) 2015.1 (Build 419U)). ClassMethod Test() As %Status { w %request.UserAgent,"<br>",! w "HTTP_ACCEPT_LANGUAGE: ",%request.GetCgiEnv("HTTP_ACCEPT_LANGUAGE"),"<br>",! w "$$$SessionLanguage: ",$$$SessionLanguage,"<br>",! w $$$Text("Language"),"<br>",! q $$$OK } Результаты: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2014, 23:10 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
servit, servitИз приложенного XML: Cache for UNIX (SUSE Linux Enterprise Server for x86-64) 2015.1 (Build 419U) Там я тоже пробовал с такими же результатами. servitЕсли использовать curl, проблема наблюдается?Наблюдается. servitТакже проверьте, есть ли в домене %Utility нужные языки, На скриншоте проверил. Да и к тому же это системный домен, он по умолчанию есть. servitПроверил прямо из IE и Opera, меняя приоритеты языков - проблем нет В Opera 12 оно настраивается в: Opera -> Меню -> Настройки -> Общие настройки -> Укажите языковые предпочтения для интерфейса Opera и веб-страниц -> Настройки -> Предпочитаемые языки для веб-страниц? Установил там только английский, также реакции никакой нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2015, 12:48 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
Правильный скриншот curl -s -v -H "Accept-Language:en" http://localhost:57772/lc/test * Hostname was NOT found in DNS cache * Trying ::1... * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 57772 (#0) > GET /lc/test HTTP/1.1 > User-Agent: curl/7.39.0 > Host: localhost:57772 > Accept: */* > Accept-Language:en > < HTTP/1.1 200 OK < Date: Thu, 01 Jan 2015 10:07:57 GMT < Server: Apache < CACHE-CONTROL: no-cache < EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT < PRAGMA: no-cache < CONTENT-LENGTH: 57 < Content-Type: text/html; charset=utf-8 < $$$SessionLanguage: ru<br>Имя пользователя* Failed writing body (42 != 57) * Closing connection 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2015, 13:09 |
|
Локализация REST приложений
|
|||
---|---|---|---|
#18+
eduard93 ,
... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2015, 19:20 |
|
|
start [/forum/topic.php?fid=39&msg=38847410&tid=1556741]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 391ms |
0 / 0 |