///////////////////////////////////////////////////////////////////////////// // // Project ProjectForge Community Edition // www.projectforge.org // // Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de) // // ProjectForge is dual-licensed. // // This community edition is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as published // by the Free Software Foundation; version 3 of the License. // // This community edition is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General // Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, see http://www.gnu.org/licenses/. // ///////////////////////////////////////////////////////////////////////////// package org.projectforge.web; import java.util.Locale; import org.projectforge.common.DateFormatType; import org.projectforge.common.DateFormats; import org.projectforge.common.TimeNotation; import org.projectforge.user.PFUserDO; import org.projectforge.web.calendar.MyFullCalendarConfig; /** * Main class for administration ProjectForge's localization. If you want to add new translations, this class should be referred first. * @author Kai Reinhard (k.reinhard@micromata.de) */ public class I18nCore { /** * If you add new languages don't forget to add the I18nResources_##.properties also for all used plugins. * You need also to add the language to I18nResources*.properties such as<br/> * locale.de=German<br/> * locale.en=English<br/> * locale.zh=Chinese */ public static final String[] LOCALIZATIONS = { "en", "de"}; /** * The datepicker locale is used for localization of the DatePicker. If you add a new language please add also the datepicker translation * file jquery.ui.datepicker-de.js (replace de by your language short cut). * @param locale * @return "de" for german otherwise null (default). */ public static String getDatePickerLocale(final Locale locale) { if (locale == null) { return null; } if (locale.toString().startsWith("de") == true) { return "de"; } return null; } /** * @param locale * @return null for default locale otherwise translation file of date-picker. */ public static String getDatePickerLocalizationFile(final Locale locale) { final String loc = getDatePickerLocale(locale); if (loc == null) { // No translation file needed, default is used: return null; } return "scripts/jqueryui/jquery.ui.datepicker-" + loc + ".js"; } /** * Sets the date and time formats of the FullCalendar (jquery plugin). It's easier to understand this method if you run ProjectForge and * check the calendar page during analyzing this method. * @param config */ public static void setFullCalendarDateFormats(final PFUserDO user, final MyFullCalendarConfig config) { if (TimeNotation.H12.equals(user.getTimeNotation()) == true) { config.setAxisFormat("h(:mm)tt"); config.setTimeFormat("h:mmt{ - h:mmt}"); } else { config.setAxisFormat("HH:mm"); config.setTimeFormat("HH:mm { - HH:mm}"); } final String usersDateFormat = DateFormats.getFormatString(DateFormatType.DATE); final boolean formatMonthFirst = DateFormats.isFormatMonthFirst(usersDateFormat); final char dateSeparatorChar = DateFormats.getDateSeparatorChar(usersDateFormat); if (DateFormats.isIsoFormat(usersDateFormat) == true) { // ISO format: yyyy-MM-dd HH:mm config.setTitleFormatDay("dddd, yyyy-MM-dd"); config.setTitleFormatMonth("MMMM yyyy"); config.setTitleFormatWeek("yyyy-MM-dd { '—' yyyy-MM-dd}"); config.setColumnFormatDay("dddd, MM-dd"); config.setColumnFormatMonth("ddd"); config.setColumnFormatWeek("ddd, MM-dd"); } else if (dateSeparatorChar == '.') { // German format: dd.MM.yyyy config.setTitleFormatDay("dddd, d. MMMM yyyy"); config.setTitleFormatMonth("MMMM yyyy"); config.setTitleFormatWeek("d.[ MMMM] [ yyyy] { '—' d. MMMM yyyy}"); config.setColumnFormatDay("dddd, dd.MM."); config.setColumnFormatMonth("ddd"); config.setColumnFormatWeek("ddd, dd.MM."); } else if (formatMonthFirst == true) { // American format: MM/dd/yyyy config.setTitleFormatDay("dddd, MMM d, yyyy"); config.setTitleFormatMonth("MMMM yyyy"); config.setTitleFormatWeek("MMM d[ yyyy]{ '—'[ MMM] d yyyy}"); config.setColumnFormatDay("dddd M/d"); config.setColumnFormatMonth("ddd"); config.setColumnFormatWeek("ddd M/d"); } else { // British format: dd/MM/yyyy config.setTitleFormatDay("dddd, d MMM yyyy"); config.setTitleFormatMonth("MMMM yyyy"); config.setTitleFormatWeek("d[ MMM][ yyyy]{ '—' d MMM yyyy}"); config.setColumnFormatDay("dddd d/M"); config.setColumnFormatMonth("ddd"); config.setColumnFormatWeek("ddd d/M"); } } }