У меня есть следующий фрагмент кода:
setlocale(LC_ALL, "de"); print(strftime("%A %e %B %Y", time()));
и печать
Вторник, 4 мая 2010 г.
вместо
Dienstag 4. Май 2010
Любые идеи почему? Как исправить?
У вас есть локаль, доступная; что для вас возвращает setlocale
? Смотрите: возвращаемые значения для setlocale () .
Кроме того, проверьте список доступных локалей (например, locale -a
или что-то подходящее для вашей ОС), чтобы узнать, является ли de
среди них. Вероятные альтернативы включают de_DE
или de_DE.utf8
чтобы назвать несколько.
В Debian для создания новой локали выполните следующую команду:
dpkg-reconfigure locales
и выберите те, которые вы хотите.
Настройка локали не будет иметь никакого эффекта, если локаль не будет установлена в вашей системе.
Для меня следующий трюк:
setlocale(LC_TIME, "");
В комбинации с:
echo strftime("%d. %B %Y");
Так я получил текущую дату в немецком формате. Надеюсь, что это поможет.
Попробуйте установить LC_ALL
в «de_DE». В моей системе это не сработало, пока я это не сделаю.
$ LC_ALL=de date Tue May 4 07:40:13 CDT 2010 $ LC_ALL=de_DE date Di 4. Mai 07:39:27 CDT 2010
Я использую Ubuntu на малине Pi, имел ту же самую проблему, пытаясь использовать португальский локальный для даты:
setlocale(LC_TIME, "C"); echo strftime("%A"); echo setlocale(LC_TIME, "pt_PT"); echo strftime(" in Portuguese %A");
Затем проверено командой local -a , pt_PT не было в списке, поэтому я добавил его sudo / usr / share / locales / install-language-pack pt_PT и запустил local -a снова: там был pt_PT.utf8 . После этого результат все тот же: из ожидаемого для pt_PT еще на английском языке. Вот небольшая разница, которая заставляла меня думать:
··· echo setlocale(LC_TIME, "pt_PT.utf8"); ···
Итак, мне пришлось превратить pt_PT в pt_PT.utf8
возможно, у вас нет локали, поэтому, если вы находитесь на ubuntu, вы можете проверить список с помощью «locale -a» без куйотов и проверить доступные языки в файле / usr / share / i18n / SUPPORTED, и они сгенерировали locale, требуемый с "locale-gen de_DE"
надеюсь, эта работа для вас.