Как настроить Play для чтения файлов сообщений из пользовательского каталога?

В build.scala я изменил путь к файлам сообщений следующим образом:

val main = play.Project(appName, appVersion, appDependencies).settings(
    lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "main.less"),
    resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository",
    resolvers += "maven2 repository" at "http://repo1.maven.org/maven2/",
    unmanagedBase <<= baseDirectory(_ / ".." / "messagesFiles")
  )

Папка messagesFiles содержит файлы messages и messages.fr.

При запуске приложения переведенный текст не отображается. Почему?

Как настроить приложение воспроизведения для чтения файлов сообщений, находящихся в настраиваемом месте, кроме папки conf?

Ответ 1

Вы не описали свою среду относительно игровой версии, поэтому позвольте мне предположить, что вы используете последнюю версию Play 2.2.2-RC1. Моя...

[myFirstApp] $ show playVersion
[info] 2.2.2-RC1

С учетом версии воспроизведения вы можете сконфигурировать проект, используя build.sbt в большинстве случаев. Создайте его, если у вас его нет в проекте.

Добавьте следующую строку в build.sbt, чтобы указать в пользовательский каталог, где есть файлы сообщений, специфичные для языка.

unmanagedResourceDirectories in Compile += baseDirectory.value / "messagesFiles"

Я не уверен, что это самый рекомендуемый подход для указания каталога сообщений, но учитывая, как работает sbt, он делает трюк.

Вы можете show установить значение параметра unmanagedResourceDirectories следующим образом:

[myFirstApp] $ show unmanagedResourceDirectories
[info] List(/Users/jacek/sandbox/play-ground/myFirstApp/conf, /Users/jacek/sandbox/play-ground/myFirstApp/messagesFiles)

Вышеприведенный вывод предполагает установку выше в build.sbt.

В предыдущих версиях Play (и, следовательно, SBT) следующее в project/Build.scala могло бы сделать трюк:

unmanagedResourceDirectories in Compile <+= baseDirectory(_ / ".." / "messagesFiles" )