Я делаю константы в своем приложении PHP для организации своих ответов, и я планирую добавить поддержку иностранного языка в ближайшее время. Вот что я делаю прямо сейчас: define('SOME_SYSTEM_MESSAGE',array('EN' => 'This is the system message!') [USER_LANGUAGE]);
(Я знаю, что синтаксис [] поддерживается только в PHP 5.5, у меня есть функция обратной совместимости для более старых версий). Это хорошая практика для кодирования, или я должен хранить сообщения в массиве (например, $ en для английских сообщений или $ fr для французских сообщений) или каким-то другим способом?Хорошая практика - сделать постоянную, которая зависит от языка пользователя?
ответ
Я думаю, что это зависит от того, куда вы хотите пойти с вашим приложением. Ваше предлагаемое решение может работать, если вы хотите ограничить его в основном своей/вашей командой.
Но если другие люди должны использовать ваш код позже или если вы хотите перевести его на другие языки, было бы удобно иметь такие файлы, как .po или .csv, с которыми могут работать переводчики.
Константы не могут содержать массивы, константы ограничены следующими типами: нулевым, логическим, целым числом, строкой или ресурсом.
Если вы хотите локализовать свое приложение на разных языках, используйте gettext или другие технологии локализации. Вы предпочитаете компоненты вместо того, чтобы изобретать что-то.
Как пример: Symfony Framework содержит (автономный) Translation-Component.
Константы могут содержать сериализованные массивы - которые могут быть неэтериализованы при использовании;) – Jimbo
Сериализованные массивы - это строки. Вы не можете перезаписывать константы. – tr0y
Я ничего не упоминал о переписывающих константах. Ваше первое предложение не имеет смысла - конечно, массивы могут меняться, но так же могут быть строки. В PHP у нас нет неизменяемых скалярных типов. – Jimbo
- 1. Публикация, которая зависит от состояния пользователя
- 2. Система документации, которая не зависит от языка программирования
- 3. Как написать формулу из Javascript Api в Excel, которая не зависит от языка пользователя?
- 4. Хорошая практика? Dummy object
- 5. «Хорошая практика»?
- 6. Guice injector.getInstance() - хорошая практика?
- 7. Строка поиска логики - не зависит от языка
- 8. Хорошая практика - сделать геттеры и сеттеры встроенными?
- 9. Apache ErrorDocument зависит от языка браузера
- 10. GUI зависит от языка и платформы?
- 11. CodeIgniter Url Rewrite (зависит от языка)
- 12. Как и почему зависит от языка string.isdigit()?
- 13. Is Go зависит от языка CPU?
- 14. как изменить текст заполнителя зависит от языка
- 15. MVVM: это хорошая практика?
- 16. Актер хорошая практика?
- 17. Строка модели, которая зависит от других столбцов
- 18. Хорошая практика для многопоточности
- 19. Хорошая практика или плохая практика
- 20. Вызывает перерисовку от paintComponent. Хорошая практика
- 21. Хорошая практика ведения журнала
- 22. Хорошая практика SQLite & ContentProvider
- 23. IOS FMDB Хорошая практика
- 24. Хорошая практика кода раздела
- 25. Is @SessionScoped хорошая практика?
- 26. Хорошая практика разработки JavaScript API
- 27. Создание функции, которая зависит от произвольной функции
- 28. Динамические классы: хорошая практика?
- 29. Хорошая практика: Обработка исключений
- 30. Новичок C# Хорошая практика
На данный момент я просто работаю над этим. Я не знал, что файлы PO являются официальной частью PHP. Я отмечаю ваш ответ как принятый. – iggyvolz