#java #grails #groovy #internationalization
#java #grails #groovy #интернационализация
Вопрос:
Есть ли у кого-нибудь быстрый метод для генерации слагов и постоянных ссылок в Grails 1.3.7 / 2.0.0.RC1? Основное ограничение: этот метод должен работать с нелатинскими символами.
Русская / болгарская кириллица, немецкие умляуты и т.д…
Есть предложения?
Ответ №1:
Grails 2.0.0.RC1
API для генерации ссылок
Теперь доступен класс LinkGenerator общего назначения, который можно использовать в любом месте приложения Grails, а не только в контексте контроллера. Например, если вам нужно сгенерировать ссылки в службе или асинхронное фоновое задание вне области запроса:
LinkGenerator grailsLinkGenerator
def generateLink() { grailsLinkGenerator.link(controller:"book", action:"list") }
Хотя это явно не указано, я предполагаю, что ссылка на grailsLinkGenerator
получена с помощью внедрения зависимостей
Grails 1.3.7
Для создания ссылок можно использовать теги createLink или resource. Если вы создаете постоянные ссылки, я предполагаю, что вы хотите, чтобы они были абсолютными URL-адресами. Если это так, вам нужно будет использовать атрибут absolute
или base
при использовании этих тегов.
Если вы используете absolute
атрибут, обязательно установите значение grails.serverURL
в Config.groovy
Постоянство ссылок
Приведенный выше текст описывает, как генерировать ссылки на ресурсы в приложении Grails, но ничего не говорит о том, как сделать эти ссылки постоянными. AFAIK, ссылка на ресурс всегда будет оставаться неизменной до тех пор, пока вы ничего не измените, что используется в схеме сопоставления URL (как определено в UrlMappings.groovy
)
По умолчанию схема сопоставления URL использует
- идентификатор ресурса
- имя контроллера
- название действия
Так что, если вы никогда не измените их для интересующих ссылок, у вас все должно быть хорошо.
Комментарии:
1. Спасибо )) Но мой вопрос относительно ГЕНЕРАЦИИ ПОСТОЯННЫХ ССЫЛОК, ДРУЖЕСТВЕННЫХ к SEO, с нелатинских языков, таких как русский … )) Пример: mysite.com/blog/Вася/Пупкин/Должен_Быть-Латинницей … должно быть mysite.com/blog/vasya/pupkin/dolzhen-byt-latinnitsej
Ответ №2:
Так просто, как:
title.replaceAll("[\W] ", "-")
Это делает его.
Комментарии:
1. Лучшее приближение к полной генерации слагов:
title.trim().toLowerCase().replaceAll("[\W] ", "-")