Используйте метод в классе com.google.common.io.Files
, если ваш проект уже зависит от основной библиотеки Google. Вам нужен метод getNameWithoutExtension
.
Я думаю, что основная проблема здесь в том, что настройки браузера фактически не влияют на свойство navigator.language
, которое получается с помощью javascript.
На что они влияют, так это на HTTP-заголовок Accept-Language, но похоже, что это значение вообще недоступно через javascript. (Вероятно, почему @anddoutoi заявляет, что не может найти ссылку на него, которая не связана с серверной частью.)
Я закодировал обходной путь: я создал скрипт движка приложения Google по адресу http: / /ajaxhttpheaders.appspot.com, который вернет вам заголовки HTTP-запроса через JSONP.
(Примечание: это средство взлома, которое можно использовать только в том случае, если у вас нет серверной части, которая могла бы сделать это за вас. Как правило, вам не следует выполнять вызовы сторонних файлов javascript на своих страницах, если у вас нет очень высокий уровень доверия к хосту.)
Я намерен оставить его там на вечность, так что не стесняйтесь использовать его в своем коде.
Вот пример кода (в jQuery) того, как вы можете его использовать.
$.ajax({
url: "http://ajaxhttpheaders.appspot.com",
dataType: 'jsonp',
success: function(headers) {
language = headers['Accept-Language'];
nowDoSomethingWithIt(language);
}
});
Надеюсь, кто-то сочтет это полезным.
Редактировать: Я написал небольшой плагин jQuery на github, который включает в себя эту функциональность: https://github.com/dansingerman/jQuery-Browser-Language
Редактировать 2: По запросу, вот код, который работает на AppEngine (на самом деле супер-тривиально):
class MainPage(webapp.RequestHandler):
def get(self):
headers = self.request.headers
callback = self.request.get('callback')
if callback:
self.response.headers['Content-Type'] = 'application/javascript'
self.response.out.write(callback + "(")
self.response.out.write(headers)
self.response.out.write(")")
else:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write("I need a callback=")
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=False)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
Edit3: Открытый исходный код движка приложения: https://github.com/dansingerman/app-engine-headers
navigator.userLanguage
для IE
window.navigator.language
для firefox / opera / safari
Я не могу найти ни одной ссылки, в которой говорится, что это возможно без участия сервера.
MSDN на:
From browserLanguage:
В Microsoft Internet Explorer 4.0 и ранее свойство browserLanguage отражает язык установленного пользовательский интерфейс браузера. Например, если вы установите японскую версию Windows Internet Explorer на Английская операционная система, browserLanguage будет ja.
В Internet Explorer 5 и более поздних версиях однако свойство browserLanguage отражает язык операционной система независимо от установленной языковая версия Internet Explorer. Однако если Microsoft Windows 2000 Установлена мультиязыковая версия, свойство browserLanguage указывает язык, установленный в операционной текущие меню и диалоговые окна системы, как можно найти в региональных вариантах Панель управления. Например, если вы установить японскую версию Интернета Explorer 5 по английскому (United Kingdom) операционная система, browserLanguage будет en-gb. если ты установить Windows 2000 MultiLanguage версия и установите язык меню и диалоги на французский язык, browserLanguage будет fr, даже хотя у вас есть японская версия Internet Explorer.
Примечание. Это свойство не указывает язык или языки, установленные пользователь в языковых настройках, расположенный в диалоговом окне «Свойства обозревателя».
Кроме того, похоже, что browserLanguage
устарел, потому что IE8 не перечисляет его
Нет достойного способа получить эту настройку, по крайней мере, не зависящую от браузера.
Но у сервера есть эта информация, поскольку она является частью заголовка HTTP-запроса (поле Accept-Language, см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14 .4 )
Итак, единственный надежный способ - это получить ответ от сервера. Вам понадобится что-то, что работает на сервере (например, .asp, .jsp, .php, CGI), и эта «вещь» может возвращать эту информацию. Вот хорошие примеры: http://www.developershome.com/wap/detection/detection.asp?page=readHeader