2014-12-11 5 views
2

Я использую laravel framework и mysql для создания сайта, который должен быть переведен в 3, но может увеличиться на разных языках. Используя Laravel, относительно легко создавать разные языковые файлы для разных языков и называть их в html для относительно статических строк. Однако для данных, выходящих из базы данных, какова наилучшая практика для локализации таких данных? Похоже, что сохранение локализованных версий строк будет хорошо работать в том смысле, что все они могут быть добавлены одновременно с созданием данных; однако, похоже, это было бы ужасно в смысле добавления нового языка. Использование языковых файлов для данных кажется лучше для добавления новых языков, но будет раздражать, чтобы не отставать, когда новые строки добавляются в базу данных. Я придумал решение для перевода некоторых данных в относительно статический selectbox (он использует статический массив идентификаторов/имен некоторых наиболее распространенных данных), чтобы пользователи могли использовать эту часть сайт очень хорошо, независимо от языка, но данные, которые он обнаруживает на остальной части сайта, естественно, не подвержены влиянию этого изменения.Как хранить динамические локализованные строки

Какова наилучшая практика для решения такой проблемы? Несколько решений, которые я могу придумать, кажутся довольно ошибочными.

Примечание: новые строки добавляются на сайт управления, который отделен от основного сайта, но содержит одни и те же данные в базе данных. Люди, добавляющие новые строки, не имеют прямого доступа к языковым файлам.

+0

Я не понимаю, почему вы не хотите использовать языковые файлы? Я не буду хранить его в БД только из-за накладных расходов, с которыми вы столкнетесь: представьте, что для каждого запроса страницы вам нужно будет извлечь слова из БД (если вы не кэшируете его каким-то образом). – HamZa

+1

Я точно не говорил, что я против использования языковых файлов. Только в некоторые моменты времени некоторые предметы могут увеличиться на сотни за один день. Те, кто вводит данные, не имеют прямого доступа к языковым файлам на главном сайте, поэтому управлять ими в этом смысле мне кажется трудным, если только не существует какого-то хорошего способа, о котором я просто полностью не осознаю. –

ответ

0

Вместо того чтобы изобретать колесо, вы можете попробовать что-то вроде Laravel Перевод - https://github.com/Waavi/translation

+0

Итак, вы говорите, что новые записи могут быть добавлены в эту языковую таблицу во время ввода, и с помощью этого они могут быть легко вызваны? В этом смысле это выглядит хорошо, но называть php artisan translator: load (что, вероятно, понадобится для обновления строк на самом сайте) приведет к тому, что эти записи будут потеряны, не так ли? –

Смежные вопросы