Recurrence picker improvements

* Improve recurrence description
* Move from due/completion to edit screen
pull/574/head
Alex Baker 7 years ago
parent 156c67b01a
commit 02aae4c5c2

@ -7,15 +7,24 @@ package com.todoroo.astrid.repeats;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import com.google.common.primitives.Booleans;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.google.ical.values.Weekday;
@ -27,15 +36,19 @@ import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForActivity;
import org.tasks.injection.FragmentComponent;
import org.tasks.locale.Locale;
import org.tasks.preferences.Preferences;
import org.tasks.repeats.CustomRecurrenceDialog;
import org.tasks.themes.Theme;
import org.tasks.time.DateTime;
import org.tasks.ui.HiddenTopArrayAdapter;
import org.tasks.ui.SingleCheckedArrayAdapter;
import org.tasks.ui.TaskEditControlFragment;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
@ -43,11 +56,12 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnItemSelected;
import timber.log.Timber;
import static android.support.v4.content.ContextCompat.getColor;
import static com.google.common.collect.Iterables.any;
import static com.google.common.collect.Lists.newArrayList;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.repeats.CustomRecurrenceDialog.newCustomRecurrenceDialog;
/**
@ -63,14 +77,12 @@ public class RepeatControlSet extends TaskEditControlFragment
private static final String FRAG_TAG_CUSTOM_RECURRENCE = "frag_tag_custom_recurrence";
@Override
public void onSelected(int frequency, int interval, long repeatUntilValue,
boolean repeatAfterCompletion, boolean[] isChecked) {
public void onSelected(int frequency, int interval, long repeatUntilValue, boolean[] isChecked) {
doRepeat = true;
this.interval = interval;
this.frequency = frequency;
this.repeatUntilValue = repeatUntilValue;
this.isChecked = isChecked;
this.repeatAfterCompletion = repeatAfterCompletion;
refreshDisplayView();
}
@ -101,8 +113,11 @@ public class RepeatControlSet extends TaskEditControlFragment
@Inject Preferences preferences;
@Inject @ForActivity Context context;
@Inject Theme theme;
@Inject Locale locale;
@BindView(R.id.display_row_edit) TextView displayView;
@BindView(R.id.repeatType) Spinner typeSpinner;
@BindView(R.id.repeatTypeContainer) LinearLayout repeatTypeContainer;
private String recurrence;
private int interval;
@ -110,6 +125,8 @@ public class RepeatControlSet extends TaskEditControlFragment
private long repeatUntilValue;
private boolean[] isChecked;
private final Weekday[] weekdays = new Weekday[7];
private final List<String> repeatTypes = new ArrayList<>();
private HiddenTopArrayAdapter<String> typeAdapter;
private RepeatChangedListener callback;
@ -125,6 +142,29 @@ public class RepeatControlSet extends TaskEditControlFragment
repeatAfterCompletion = savedInstanceState.getBoolean(EXTRA_REPEAT_AFTER_COMPLETION);
}
repeatTypes.add("");
repeatTypes.addAll(Arrays.asList(getResources().getStringArray(R.array.repeat_type)));
typeAdapter = new HiddenTopArrayAdapter<String>(context, 0, repeatTypes) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
int selectedItemPosition = position;
if (parent instanceof AdapterView) {
selectedItemPosition = ((AdapterView) parent).getSelectedItemPosition();
}
TextView tv = (TextView) inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
tv.setPadding(0, 0, 0, 0);
tv.setText(repeatTypes.get(selectedItemPosition));
return tv;
}
};
Drawable drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.textfield_underline_black));
drawable.mutate();
DrawableCompat.setTint(drawable, getColor(context, R.color.text_primary));
typeSpinner.setBackgroundDrawable(drawable);
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setSelection(repeatAfterCompletion ? TYPE_COMPLETION_DATE : TYPE_DUE_DATE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
for(int i = 0; i < 7; i++) {
@ -177,6 +217,13 @@ public class RepeatControlSet extends TaskEditControlFragment
return view;
}
@OnItemSelected(R.id.repeatType)
public void onRepeatTypeChanged(Spinner spinner, int position) {
repeatAfterCompletion = position == TYPE_COMPLETION_DATE;
repeatTypes.set(0, repeatAfterCompletion ? repeatTypes.get(2) : repeatTypes.get(1));
typeAdapter.notifyDataSetChanged();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@ -202,16 +249,11 @@ public class RepeatControlSet extends TaskEditControlFragment
if (!doRepeat) {
return false;
}
if (frequency == FREQUENCY_WEEKS) {
for (boolean checked : isChecked) {
if (checked) {
return true;
}
}
}
return frequency == FREQUENCY_HOURS ||
return frequency == FREQUENCY_WEEKS && any(Booleans.asList(isChecked), b -> b) ||
frequency == FREQUENCY_HOURS ||
frequency == FREQUENCY_MINUTES ||
!(repeatUntilValue == 0 && interval == 1 && !repeatAfterCompletion);
repeatUntilValue != 0 ||
interval != 1;
}
@OnClick(R.id.display_row_edit)
@ -380,52 +422,94 @@ public class RepeatControlSet extends TaskEditControlFragment
if (doRepeat) {
displayView.setText(getRepeatString());
displayView.setTextColor(getColor(context, R.color.text_primary));
repeatTypeContainer.setVisibility(View.VISIBLE);
} else {
displayView.setText(R.string.repeat_option_does_not_repeat);
displayView.setTextColor(getColor(context, R.color.text_tertiary));
repeatTypeContainer.setVisibility(View.GONE);
}
}
private String getRepeatString() {
if (!isCustomValue()) {
switch (frequency) {
case FREQUENCY_DAYS:
return getString(R.string.repeat_option_every_day);
case FREQUENCY_WEEKS:
return getString(R.string.repeat_option_every_week);
case FREQUENCY_MONTHS:
return getString(R.string.repeat_option_every_month);
case FREQUENCY_YEARS:
return getString(R.string.repeat_option_every_year);
if (interval == 1) {
String frequencyString = getString(getSingleFrequencyResource(frequency));
if (frequency == FREQUENCY_WEEKS && any(Booleans.asList(isChecked), b -> b)) {
String dayString = getDayString();
if (repeatUntilValue > 0) {
return getString(R.string.repeats_single_on_until, frequencyString, dayString, DateUtilities.getLongDateString(new DateTime(repeatUntilValue)));
} else {
return getString(R.string.repeats_single_on, frequencyString, dayString);
}
} else if (repeatUntilValue > 0) {
return getString(R.string.repeats_single_until, frequencyString, DateUtilities.getLongDateString(new DateTime(repeatUntilValue)));
} else {
return getString(R.string.repeats_single, frequencyString);
}
} else {
int plural = getFrequencyPlural(frequency);
String frequencyPlural = getResources().getQuantityString(plural, interval, interval);
if (frequency == FREQUENCY_WEEKS && any(Booleans.asList(isChecked), b -> b)) {
String dayString = getDayString();
if (repeatUntilValue > 0) {
return getString(R.string.repeats_plural_on_until, frequencyPlural, dayString, DateUtilities.getLongDateString(new DateTime(repeatUntilValue)));
} else {
return getString(R.string.repeats_plural_on, frequencyPlural, dayString);
}
} else if (repeatUntilValue > 0) {
return getString(R.string.repeats_plural_until, frequencyPlural, DateUtilities.getLongDateString(new DateTime(repeatUntilValue)));
} else {
return getString(R.string.repeats_plural, frequencyPlural);
}
}
}
int arrayResource = R.array.repeat_interval;
String[] dates = getResources().getStringArray(
arrayResource);
String date = String.format("%s %s", interval, dates[frequency]); //$NON-NLS-1$
if (repeatUntilValue > 0) {
return getString(R.string.repeat_detail_duedate_until, date, getDisplayString());
} else {
return getString(R.string.repeat_detail_duedate, date); // Every freq int
private String getDayString() {
DateFormatSymbols dfs = new DateFormatSymbols(locale.getLocale());
String[] shortWeekdays = dfs.getShortWeekdays();
List<String> days = new ArrayList<>();
for (int i = 0 ; i < 7 ; i++) {
if (isChecked[i]) {
days.add(shortWeekdays[i + 1]);
}
}
return Joiner.on(getString(R.string.list_separator_with_space)).join(days);
}
private String getDisplayString() {
return getDisplayString(context, repeatUntilValue);
private int getSingleFrequencyResource(int frequency) {
switch (frequency) {
case FREQUENCY_MINUTES:
return R.string.repeats_minutely;
case FREQUENCY_HOURS:
return R.string.repeats_hourly;
case FREQUENCY_DAYS:
return R.string.repeats_daily;
case FREQUENCY_WEEKS:
return R.string.repeats_weekly;
case FREQUENCY_MONTHS:
return R.string.repeats_monthly;
case FREQUENCY_YEARS:
return R.string.repeats_yearly;
default:
throw new RuntimeException("Invalid frequency: " + frequency);
}
}
public static String getDisplayString(Context context, long repeatUntilValue) {
StringBuilder displayString = new StringBuilder();
DateTime d = newDateTime(repeatUntilValue);
if (d.getMillis() > 0) {
displayString.append(DateUtilities.getDateString(d));
if (Task.hasDueTime(repeatUntilValue)) {
displayString.append(", "); //$NON-NLS-1$ //$NON-NLS-2$
displayString.append(DateUtilities.getTimeString(context, repeatUntilValue));
}
private int getFrequencyPlural(int frequency) {
switch (frequency) {
case FREQUENCY_MINUTES:
return R.plurals.repeat_n_minutes;
case FREQUENCY_HOURS:
return R.plurals.repeat_n_hours;
case FREQUENCY_DAYS:
return R.plurals.repeat_n_days;
case FREQUENCY_WEEKS:
return R.plurals.repeat_n_weeks;
case FREQUENCY_MONTHS:
return R.plurals.repeat_n_months;
case FREQUENCY_YEARS:
return R.plurals.repeat_n_years;
default:
throw new RuntimeException("Invalid frequency: " + frequency);
}
return displayString.toString();
}
}

@ -259,7 +259,7 @@ public class NotificationManager {
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationManager.NOTIFICATION_CHANNEL_DEFAULT)
.setContentTitle(summaryTitle)
.setContentText(Joiner.on(", ").join(titles))
.setContentText(Joiner.on(context.getString(R.string.list_separator_with_space)).join(titles))
.setShowWhen(true)
.setWhen(when)
.setSmallIcon(R.drawable.ic_done_all_white_24dp)
@ -269,7 +269,7 @@ public class NotificationManager {
.setContentIntent(PendingIntent.getActivity(context, 0, TaskIntents.getTaskListIntent(context, filter), PendingIntent.FLAG_UPDATE_CURRENT))
.setGroupSummary(true)
.setGroup(GROUP_KEY)
.setTicker(Joiner.on(", ").join(ticker))
.setTicker(Joiner.on(context.getString(R.string.list_separator_with_space)).join(ticker))
.setGroupAlertBehavior(notify ? NotificationCompat.GROUP_ALERT_SUMMARY : NotificationCompat.GROUP_ALERT_CHILDREN);
Intent snoozeIntent = new Intent(context, SnoozeActivity.class);

@ -19,6 +19,8 @@ import android.widget.TextView;
import com.appeaser.sublimepickerlibrary.drawables.CheckableDrawable;
import com.appeaser.sublimepickerlibrary.recurrencepicker.WeekButton;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.repeats.RepeatControlSet;
import org.tasks.R;
@ -31,6 +33,7 @@ import org.tasks.locale.Locale;
import org.tasks.preferences.ResourceResolver;
import org.tasks.themes.Theme;
import org.tasks.themes.ThemeAccent;
import org.tasks.time.DateTime;
import java.text.DateFormatSymbols;
import java.util.ArrayList;
@ -52,6 +55,7 @@ import static com.todoroo.astrid.repeats.RepeatControlSet.FREQUENCY_MONTHS;
import static com.todoroo.astrid.repeats.RepeatControlSet.FREQUENCY_WEEKS;
import static com.todoroo.astrid.repeats.RepeatControlSet.FREQUENCY_YEARS;
import static com.todoroo.astrid.repeats.RepeatControlSet.TYPE_COMPLETION_DATE;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class CustomRecurrenceDialog extends InjectingDialogFragment {
@ -62,8 +66,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
}
public interface CustomRecurrenceCallback {
void onSelected(int frequency, int interval, long repeatUntilValue,
boolean repeatAfterCompletion, boolean[] isChecked);
void onSelected(int frequency, int interval, long repeatUntilValue, boolean[] isChecked);
}
private static final int REQUEST_PICK_DATE = 505;
@ -84,7 +87,6 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
@BindView(R.id.week_day_7) WeekButton day7;
@BindView(R.id.repeat_until) Spinner repeatUntilSpinner;
@BindView(R.id.repeatType) Spinner typeSpinner;
@BindView(R.id.frequency) Spinner frequencySpinner;
@BindView(R.id.repeatValue) EditText intervalEditText;
@BindView(R.id.intervalText) TextView intervalTextView;
@ -97,8 +99,6 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
private int interval;
private long repeatUntilValue;
private boolean repeatAfterCompletion;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@ -115,10 +115,6 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
intervalEditText.setSelectAllOnFocus(true);
intervalEditText.selectAll();
ArrayAdapter<String> typeAdapter = new ArrayAdapter<>(context, R.layout.simple_spinner_item, getResources().getStringArray(R.array.repeat_type));
typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
typeSpinner.setAdapter(typeAdapter);
repeatUntilAdapter = new ArrayAdapter<>(context, R.layout.simple_spinner_item, repeatUntilOptions);
repeatUntilAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
repeatUntilSpinner.setAdapter(repeatUntilAdapter);
@ -137,13 +133,13 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
// set up days of week
ThemeAccent accent = theme.getThemeAccent();
DateFormatSymbols dfs = new DateFormatSymbols();
DateFormatSymbols dfs = new DateFormatSymbols(locale.getLocale());
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
String[] shortWeekdays = dfs.getShortWeekdays();
for(int i = 0; i < 7; i++) {
final int index = i;
WeekButton weekButton = weekButtons[i];
WeekButton weekButton = weekButtons[index];
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String text = shortWeekdays[dayOfWeek];
weekButton.setBackgroundDrawable(new CheckableDrawable(accent.getAccentColor(), false, expandedWidthHeight));
@ -155,14 +151,11 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
calendar.add(Calendar.DATE, 1);
}
typeSpinner.setSelection(repeatAfterCompletion ? TYPE_COMPLETION_DATE : RepeatControlSet.TYPE_DUE_DATE);
return dialogBuilder.newDialog()
.setView(dialogView)
.setPositiveButton(android.R.string.ok, (dialog12, which) ->
((CustomRecurrenceCallback) getTargetFragment())
.onSelected(frequency, interval, repeatUntilValue,
repeatAfterCompletion, isChecked))
.onSelected(frequency, interval, repeatUntilValue, isChecked))
.setNegativeButton(android.R.string.cancel, null)
.setOnCancelListener(DialogInterface::dismiss)
.show();
@ -201,11 +194,6 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
}
}
@OnItemSelected(R.id.repeatType)
public void onRepeatTypeChanged(Spinner spinner, int position) {
repeatAfterCompletion = position == TYPE_COMPLETION_DATE;
}
@OnItemSelected(R.id.repeat_until)
public void onRepeatUntilChanged(Spinner spinner, int position) {
if (repeatUntilOptions.size() == 2) {
@ -261,7 +249,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
private void updateRepeatUntilOptions() {
repeatUntilOptions.clear();
if (repeatUntilValue > 0) {
repeatUntilOptions.add(getString(R.string.repeat_until, RepeatControlSet.getDisplayString(context, repeatUntilValue)));
repeatUntilOptions.add(getString(R.string.repeat_until, getDisplayString(context, repeatUntilValue)));
}
repeatUntilOptions.add(getString(R.string.repeat_forever));
repeatUntilOptions.add(getString(R.string.repeat_until, "").trim());
@ -285,4 +273,17 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
private static String getDisplayString(Context context, long repeatUntilValue) {
StringBuilder displayString = new StringBuilder();
DateTime d = newDateTime(repeatUntilValue);
if (d.getMillis() > 0) {
displayString.append(DateUtilities.getDateString(d));
if (Task.hasDueTime(repeatUntilValue)) {
displayString.append(", "); //$NON-NLS-1$ //$NON-NLS-2$
displayString.append(DateUtilities.getTimeString(context, repeatUntilValue));
}
}
return displayString.toString();
}
}

@ -10,7 +10,7 @@
android:orientation="vertical">
<LinearLayout
android:id="@+id/repeatContainer"
android:id="@+id/repeatTypeContainer"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical">
@ -59,6 +59,7 @@
android:layout_height="wrap_content"
android:ems="3"
android:focusable="true"
android:imeOptions="flagNoExtractUi"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:inputType="number"
@ -81,18 +82,6 @@
</LinearLayout>
<Spinner
android:id="@+id/repeatType"
style="Widget.AppCompat.Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:paddingEnd="@dimen/keyline_first"
android:paddingLeft="@dimen/keyline_first"
android:paddingRight="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_first"
android:textColor="?attr/colorPrimary" />
<include layout="@layout/week_buttons" />
<Spinner

@ -6,23 +6,42 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false">
android:baselineAligned="false"
android:orientation="vertical">
<TextView
android:id="@+id/display_row_edit"
style="@style/TaskEditTextPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:gravity="start"
android:textAlignment="viewStart" />
<LinearLayout
android:layout_width="0dp"
android:id="@+id/repeatTypeContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="100">
android:paddingTop="@dimen/task_edit_drawable_padding_top_bottom"
android:visibility="gone">
<TextView
android:id="@+id/display_row_edit"
style="@style/TaskEditTextPrimary"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="5dp"
android:paddingLeft="0dp"
android:paddingRight="5dp"
android:paddingStart="0dp"
android:text="@string/repeats_from"
android:textAppearance="@style/TextAppearance" />
<Spinner
android:id="@+id/repeatType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:textAlignment="viewStart"
android:gravity="start"/>
android:background="@null"
android:textColor="?attr/colorPrimary" />
</LinearLayout>

@ -11,4 +11,6 @@
android:paddingStart="0dp"
android:paddingTop="12dp"
android:singleLine="true"
android:layout_gravity="start"
android:textAlignment="viewStart"
android:textColor="?fab_text" />

@ -113,14 +113,6 @@
<string name="default_random_reminder_bi_weekly">مرتين في الاسبوع</string>
<string name="default_random_reminder_monthly">شهري</string>
<string name="default_random_reminder_bi_monthly">مرتين في الشهر</string>
<string name="repeat_interval_day">أيام</string>
<string name="repeat_interval_week">أسابيع</string>
<string name="repeat_interval_month">أشهُر</string>
<string name="repeat_interval_hour">ساعات</string>
<string name="repeat_interval_minute">دقائق</string>
<string name="repeat_interval_year">سنين</string>
<string name="repeat_type_due">من تاريخ الموعد</string>
<string name="repeat_type_completion">من تاريخ الاتمام</string>
<string name="repeat_forever">تكرار دائم</string>
<string name="tag_FEx_untagged">غير مصنف</string>
<string name="TEA_timer_controls">مؤقت</string>

@ -199,16 +199,6 @@
<string name="default_random_reminder_bi_weekly">два пъти седмично</string>
<string name="default_random_reminder_monthly">месечно</string>
<string name="default_random_reminder_bi_monthly">на два месеца</string>
<string name="repeat_interval_day">Ден(дни)</string>
<string name="repeat_interval_week">Седмица(и)</string>
<string name="repeat_interval_month">Месец(и)</string>
<string name="repeat_interval_hour">Час(ове)</string>
<string name="repeat_interval_minute">Минута(и)</string>
<string name="repeat_interval_year">Година(и)</string>
<string name="repeat_type_due">от краен срок</string>
<string name="repeat_type_completion">от датата на завършване</string>
<string name="repeat_detail_duedate">Всеки %s</string>
<string name="repeat_detail_duedate_until">Всеки %1$s\nдо %2$s</string>
<string name="repeat_forever">Повтаряй завинаги</string>
<string name="repeat_until">Повтаряй до %s</string>
<string name="repeat_snackbar">%1$s е насрочено за %2$s</string>

@ -95,8 +95,6 @@
<string name="rmd_EPr_quiet_hours_start_title">Inici de Silenci</string>
<string name="rmd_EPr_quiet_hours_end_title">Final de Silenci</string>
<string name="rmd_EPr_defaultRemind_title">Notificacions al Atzar</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\nfins %2$s</string>
<string name="repeat_forever">Repeteix indefinidament</string>
<string name="repeat_until">Repeteix fins %s</string>
<string name="tag_FEx_untagged">A cap llista</string>

@ -182,16 +182,6 @@
<string name="default_random_reminder_bi_weekly">každých ctrnáct dní</string>
<string name="default_random_reminder_monthly">měsíčně</string>
<string name="default_random_reminder_bi_monthly">každý druhý měsíc</string>
<string name="repeat_interval_day">Dnů</string>
<string name="repeat_interval_week">Týdnů</string>
<string name="repeat_interval_month">Měsíců</string>
<string name="repeat_interval_hour">Hodin</string>
<string name="repeat_interval_minute">Minuta(-y)</string>
<string name="repeat_interval_year">Rok(y)</string>
<string name="repeat_type_due">od data splnění</string>
<string name="repeat_type_completion">od data dokončení</string>
<string name="repeat_detail_duedate">Každý %s</string>
<string name="repeat_detail_duedate_until">Každý %1$s\n až do %2$s</string>
<string name="repeat_forever">Opakovat stále</string>
<string name="repeat_until">Opakovat až do %s</string>
<string name="new_tag">Vytvořit nový štítek</string>

@ -83,8 +83,6 @@
<string name="rmd_EPr_quiet_hours_start_title">Stille timer start</string>
<string name="rmd_EPr_quiet_hours_end_title">Stille timer slut</string>
<string name="rmd_EPr_defaultRemind_title">Tilfældige påmindelser</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="repeat_detail_duedate_until">Hver %1$s\nindtil %2$s</string>
<string name="repeat_forever">Gentag uendeligt</string>
<string name="repeat_until">Gentag indtil %s</string>
<string name="delete_task">Slet opgave</string>

@ -192,16 +192,6 @@
<string name="default_random_reminder_bi_weekly">vierzehntägig</string>
<string name="default_random_reminder_monthly">monatlich</string>
<string name="default_random_reminder_bi_monthly">alle zwei Monate</string>
<string name="repeat_interval_day">Tag(e)</string>
<string name="repeat_interval_week">Woche(n)</string>
<string name="repeat_interval_month">Monat(e)</string>
<string name="repeat_interval_hour">Stunde(n)</string>
<string name="repeat_interval_minute">Minute(n)</string>
<string name="repeat_interval_year">Jahr(e)</string>
<string name="repeat_type_due">bei Fälligkeit</string>
<string name="repeat_type_completion">bei Erledigung</string>
<string name="repeat_detail_duedate">Jede(n) %s</string>
<string name="repeat_detail_duedate_until">Jede(n) %1$s\nbis %2$s</string>
<string name="repeat_forever">Endlos wiederholen</string>
<string name="repeat_until">Wiederhole bis %s</string>
<string name="repeat_snackbar">%1$s verschoben um %2$s</string>

@ -162,16 +162,6 @@
<string name="default_random_reminder_bi_weekly">κάθε δυο εβδομάδες</string>
<string name="default_random_reminder_monthly">μηνιαία</string>
<string name="default_random_reminder_bi_monthly">διμηνιαία</string>
<string name="repeat_interval_day">Μέρα(ες)</string>
<string name="repeat_interval_week">Εβδομαδα(ές)</string>
<string name="repeat_interval_month">Μήνας(ές)</string>
<string name="repeat_interval_hour">Ώρα(ές)</string>
<string name="repeat_interval_minute">Λεπτό(ά)</string>
<string name="repeat_interval_year">Χρόνος(ια)</string>
<string name="repeat_type_due">απο την ημερομηνία λήξης</string>
<string name="repeat_type_completion">απο την ημερομηνία ολοκλήρωσης </string>
<string name="repeat_detail_duedate">Κάθε %s</string>
<string name="repeat_detail_duedate_until">Κάθε %1$s\nμέχρι %2$s</string>
<string name="repeat_forever">Επανάληψη επ\'αορίστου</string>
<string name="repeat_until">Επανάληψη μέχρι %s</string>
<string name="tag_FEx_untagged">Μη κατηγοριοποιημένο</string>

@ -195,16 +195,6 @@
<string name="default_random_reminder_bi_weekly">quincenalmente</string>
<string name="default_random_reminder_monthly">mensualmente</string>
<string name="default_random_reminder_bi_monthly">bimensualmente</string>
<string name="repeat_interval_day">Día(s)</string>
<string name="repeat_interval_week">Semana(s)</string>
<string name="repeat_interval_month">Mes(es)</string>
<string name="repeat_interval_hour">Hora(s)</string>
<string name="repeat_interval_minute">Minuto(s)</string>
<string name="repeat_interval_year">Año(s)</string>
<string name="repeat_type_due">desde la fecha de vencimiento</string>
<string name="repeat_type_completion">Desde la fecha de finalización</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\nhasta %2$s</string>
<string name="repeat_forever">Repetir por siempre</string>
<string name="repeat_until">Repetir hasta %s</string>
<string name="repeat_snackbar">%1$s He reprogramado esta tarea recurrente para %2$s</string>

@ -143,16 +143,6 @@
<string name="default_random_reminder_bi_weekly">یک هفته در میان</string>
<string name="default_random_reminder_monthly">هر ماه</string>
<string name="default_random_reminder_bi_monthly">یک ماه درمیان</string>
<string name="repeat_interval_day">روز(ها)</string>
<string name="repeat_interval_week">هفته(ها)</string>
<string name="repeat_interval_month">ماه(ها)</string>
<string name="repeat_interval_hour">ساعت(ها)</string>
<string name="repeat_interval_minute">دقیقه(ها)</string>
<string name="repeat_interval_year">سال(ها)</string>
<string name="repeat_type_due">از روز موعود</string>
<string name="repeat_type_completion">از تاریخ اتمام</string>
<string name="repeat_detail_duedate">هر %s</string>
<string name="repeat_detail_duedate_until">هر %1$s\nتا %2$s</string>
<string name="repeat_forever">تکرار بینهایت</string>
<string name="repeat_until">تکرار تا %s</string>
<string name="new_tag">ایجاد تگ جدید</string>

@ -199,16 +199,6 @@
<string name="default_random_reminder_bi_weekly">Jokatoinen viikko</string>
<string name="default_random_reminder_monthly">Kuukausittain</string>
<string name="default_random_reminder_bi_monthly">Jokatoinen kuukausi</string>
<string name="repeat_interval_day">Päivä(t)</string>
<string name="repeat_interval_week">Viikko(t)</string>
<string name="repeat_interval_month">Kuukausi</string>
<string name="repeat_interval_hour">Tunnit</string>
<string name="repeat_interval_minute">Minuutit</string>
<string name="repeat_interval_year">Vuosi</string>
<string name="repeat_type_due">Määräpäivästä</string>
<string name="repeat_type_completion">valmistumispäivästä</string>
<string name="repeat_detail_duedate">Joka %s</string>
<string name="repeat_detail_duedate_until">Joka %1$s\nkunnes %2$s</string>
<string name="repeat_forever">Toista loputtomiin</string>
<string name="repeat_until">Toista kunnes %s</string>
<string name="repeat_snackbar">%1$s uudelleenajastettu %2$s</string>

@ -193,15 +193,6 @@
<string name="default_random_reminder_bi_weekly">bi-hebdomadaire</string>
<string name="default_random_reminder_monthly">mensuel</string>
<string name="default_random_reminder_bi_monthly">bi-mensuel</string>
<string name="repeat_interval_day">Jour(s)</string>
<string name="repeat_interval_week">Semaine(s)</string>
<string name="repeat_interval_month">Mois</string>
<string name="repeat_interval_hour">Heure(s)</string>
<string name="repeat_interval_year">Année(s)</string>
<string name="repeat_type_due">à partir de la date due</string>
<string name="repeat_type_completion">à partir de la date d\'achèvement</string>
<string name="repeat_detail_duedate">Tous les %s</string>
<string name="repeat_detail_duedate_until">Tous les %1$s jusqu\'à %2$s</string>
<string name="repeat_forever">Répéter indéfiniment</string>
<string name="repeat_until">Répéter jusqu\'à %s</string>
<string name="repeat_snackbar">%1$s replanifiée à %2$s</string>

@ -195,16 +195,6 @@
<string name="default_random_reminder_bi_weekly">quincenalmente</string>
<string name="default_random_reminder_monthly">mensualmente</string>
<string name="default_random_reminder_bi_monthly">bimensualmente</string>
<string name="repeat_interval_day">Día(s)</string>
<string name="repeat_interval_week">Semana(s)</string>
<string name="repeat_interval_month">Mes(es)</string>
<string name="repeat_interval_hour">Hora(s)</string>
<string name="repeat_interval_minute">Minuto(s)</string>
<string name="repeat_interval_year">Año(s)</string>
<string name="repeat_type_due">desde la fecha de vencimiento</string>
<string name="repeat_type_completion">Desde la fecha de finalización</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\nhasta %2$s</string>
<string name="repeat_forever">Repetir por siempre</string>
<string name="repeat_until">Repetir hasta %s</string>
<string name="repeat_snackbar">%1$s He reprogramado esta tarea recurrente para %2$s</string>

@ -199,16 +199,6 @@
<string name="default_random_reminder_bi_weekly">Kéthetente</string>
<string name="default_random_reminder_monthly">Havonta</string>
<string name="default_random_reminder_bi_monthly">Kéthavonta</string>
<string name="repeat_interval_day">Nap</string>
<string name="repeat_interval_week">Hét</string>
<string name="repeat_interval_month">Hónap</string>
<string name="repeat_interval_hour">Óra</string>
<string name="repeat_interval_minute">Perc</string>
<string name="repeat_interval_year">Év</string>
<string name="repeat_type_due">A határidőtől</string>
<string name="repeat_type_completion">A befejezés időpontjától</string>
<string name="repeat_detail_duedate">Minden %s</string>
<string name="repeat_detail_duedate_until">Minden %1$s\neddig: %2$s</string>
<string name="repeat_forever">Ismétlés örökké</string>
<string name="repeat_until">Ismétlés eddig: %s</string>
<string name="repeat_snackbar">%1$s újraütemezve ekkorra: %2$s</string>

@ -197,16 +197,6 @@
<string name="default_random_reminder_bi_weekly">bi-settimanalmente</string>
<string name="default_random_reminder_monthly">mensilmente</string>
<string name="default_random_reminder_bi_monthly">bi-mensilmente</string>
<string name="repeat_interval_day">Giorno(i)</string>
<string name="repeat_interval_week">Settimana(e)</string>
<string name="repeat_interval_month">Mese(i)</string>
<string name="repeat_interval_hour">Ora(e)</string>
<string name="repeat_interval_minute">Minuto(i)</string>
<string name="repeat_interval_year">Anno(i)</string>
<string name="repeat_type_due">dalla data di scadenza</string>
<string name="repeat_type_completion">dalla data di completamento</string>
<string name="repeat_detail_duedate">Ogni %s</string>
<string name="repeat_detail_duedate_until">Ogni %1$s\nfino %2$s</string>
<string name="repeat_forever">Ripeti all\'infinito</string>
<string name="repeat_until">Ripeti fino %s</string>
<string name="repeat_snackbar">%1$s ripianificata per %2$s</string>

@ -196,16 +196,6 @@
<string name="default_random_reminder_bi_weekly">דו שבועי</string>
<string name="default_random_reminder_monthly">חודשי</string>
<string name="default_random_reminder_bi_monthly">דו חודשי</string>
<string name="repeat_interval_day">יום/ימים</string>
<string name="repeat_interval_week">שבוע/(ות)</string>
<string name="repeat_interval_month">חודש/ים</string>
<string name="repeat_interval_hour">שעה/ות</string>
<string name="repeat_interval_minute">דקה/דקות</string>
<string name="repeat_interval_year">שנה/שנים</string>
<string name="repeat_type_due">מתאריך היעד</string>
<string name="repeat_type_completion">מהיום שהמשימה הושלמה</string>
<string name="repeat_detail_duedate">כל %s</string>
<string name="repeat_detail_duedate_until">כל %1$s\nעד %2$s</string>
<string name="repeat_forever">חזור לנצח</string>
<string name="repeat_until">חזרה עד %s</string>
<string name="repeat_snackbar">%1$s תזמן מחדש משימה חוזרת זו ל־%2$s</string>

@ -197,16 +197,6 @@
<string name="default_random_reminder_bi_weekly">一週間おき</string>
<string name="default_random_reminder_monthly">毎月</string>
<string name="default_random_reminder_bi_monthly">一ヶ月おき</string>
<string name="repeat_interval_day">日毎</string>
<string name="repeat_interval_week">週毎</string>
<string name="repeat_interval_month">か月毎</string>
<string name="repeat_interval_hour">時間毎</string>
<string name="repeat_interval_minute"></string>
<string name="repeat_interval_year"></string>
<string name="repeat_type_due">期限から</string>
<string name="repeat_type_completion">完了日から</string>
<string name="repeat_detail_duedate">%s</string>
<string name="repeat_detail_duedate_until">%1$s 毎\n%2$s まで</string>
<string name="repeat_forever">永久に繰り返す</string>
<string name="repeat_until">%s まで繰り返す</string>
<string name="repeat_snackbar">%1$s を %2$s にスケジュール変更しました</string>

@ -200,16 +200,6 @@
<string name="default_random_reminder_bi_weekly">격주로</string>
<string name="default_random_reminder_monthly">매달</string>
<string name="default_random_reminder_bi_monthly">격월로</string>
<string name="repeat_interval_day">일마다</string>
<string name="repeat_interval_week">주마다</string>
<string name="repeat_interval_month">월마다</string>
<string name="repeat_interval_hour">시마다</string>
<string name="repeat_interval_minute">분마다</string>
<string name="repeat_interval_year">년마다</string>
<string name="repeat_type_due">마감일로부터</string>
<string name="repeat_type_completion">완료일로부터</string>
<string name="repeat_detail_duedate">매 %s</string>
<string name="repeat_detail_duedate_until">매 %1$s 마다\n%2$s 까지</string>
<string name="repeat_forever">영원히 반복하기</string>
<string name="repeat_until">%s 까지 반복</string>
<string name="repeat_snackbar">%1$s 이 %2$s 로 변경되었습니다</string>

@ -73,7 +73,6 @@
<string name="rmd_EPr_quiet_hours_start_title">Stilletimer start</string>
<string name="rmd_EPr_quiet_hours_end_title">Stilletimer slutt</string>
<string name="rmd_EPr_defaultRemind_title">Tilfeldige påminnelser</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="TPl_notification">Tidtaker aktiv for %s!</string>
<string name="TFE_workingOn">Oppgaver med tidtaker</string>
<string name="voice_create_prompt">Snakk for å skape en oppgave</string>

@ -196,16 +196,6 @@
<string name="default_random_reminder_bi_weekly">tweewekelijks</string>
<string name="default_random_reminder_monthly">maandelijks</string>
<string name="default_random_reminder_bi_monthly">tweemaandelijks</string>
<string name="repeat_interval_day">Dag(en)</string>
<string name="repeat_interval_week">week/weken</string>
<string name="repeat_interval_month">maand(en)</string>
<string name="repeat_interval_hour">uur/uren</string>
<string name="repeat_interval_minute">Minu(u)t(en)</string>
<string name="repeat_interval_year">Ja(a)r(en)</string>
<string name="repeat_type_due">vanaf einddatum</string>
<string name="repeat_type_completion">vanaf datum voltooid</string>
<string name="repeat_detail_duedate">Elke %s</string>
<string name="repeat_detail_duedate_until">Elke %1$s\ntot %2$s</string>
<string name="repeat_forever">Altijd herhalen</string>
<string name="repeat_until">Herhalen tot %s</string>
<string name="repeat_snackbar">%1$s opnieuw ingepland op %2$s</string>

@ -195,16 +195,6 @@
<string name="default_random_reminder_bi_weekly">raz na dwa tygodnie</string>
<string name="default_random_reminder_monthly">raz w miesiącu</string>
<string name="default_random_reminder_bi_monthly">raz na dwa miesiące</string>
<string name="repeat_interval_day">Dzień/Dni</string>
<string name="repeat_interval_week">Tydzień/Tygodni(e)</string>
<string name="repeat_interval_month">Miesiąc/Miesiący(e)</string>
<string name="repeat_interval_hour">Godzinę(y)/Godzin</string>
<string name="repeat_interval_minute">Minut(a/y)</string>
<string name="repeat_interval_year">Rok/lata</string>
<string name="repeat_type_due">od planowanego terminu</string>
<string name="repeat_type_completion">od daty ukończenia</string>
<string name="repeat_detail_duedate">Każdy %s</string>
<string name="repeat_detail_duedate_until">Co %1$s\ndo %2$s</string>
<string name="repeat_forever">Powtarzaj bez końca</string>
<string name="repeat_until">Powtarzaj do %s</string>
<string name="repeat_snackbar">%1$s przełożone na %2$s</string>

@ -192,16 +192,6 @@
<string name="default_random_reminder_bi_weekly">a cada duas semanas</string>
<string name="default_random_reminder_monthly">mensalmente</string>
<string name="default_random_reminder_bi_monthly">a cada dois meses</string>
<string name="repeat_interval_day">Dia(s)</string>
<string name="repeat_interval_week">Semana(s)</string>
<string name="repeat_interval_month">Mês(es)</string>
<string name="repeat_interval_hour">Hora(s)</string>
<string name="repeat_interval_minute">Minuto(s)</string>
<string name="repeat_interval_year">Ano(s)</string>
<string name="repeat_type_due">à partir do dia do prazo final</string>
<string name="repeat_type_completion">à partir do dia de realização</string>
<string name="repeat_detail_duedate">a cada %s</string>
<string name="repeat_detail_duedate_until">Todo %1$s\naté %2$s</string>
<string name="repeat_forever">Repetir para sempre</string>
<string name="repeat_until">Repetir até %s</string>
<string name="repeat_snackbar">%1$s remarcada para %2$s</string>

@ -179,16 +179,6 @@
<string name="default_random_reminder_bi_weekly">bissemanal</string>
<string name="default_random_reminder_monthly">mensal</string>
<string name="default_random_reminder_bi_monthly">bimensal</string>
<string name="repeat_interval_day">Dia(s)</string>
<string name="repeat_interval_week">Semana(s)</string>
<string name="repeat_interval_month">Mês(es)</string>
<string name="repeat_interval_hour">Hora(s)</string>
<string name="repeat_interval_minute">Minuto(s)</string>
<string name="repeat_interval_year">Ano(s)</string>
<string name="repeat_type_due">da data limite</string>
<string name="repeat_type_completion">desde a data de conclusão</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\naté %2$s</string>
<string name="repeat_forever">Repetir eternamente</string>
<string name="repeat_until">Repetir até %s</string>
<string name="repeat_snackbar">%1$s agendada para %2$s</string>

@ -196,16 +196,6 @@
<string name="default_random_reminder_bi_weekly">каждые две недели</string>
<string name="default_random_reminder_monthly">ежемесячно</string>
<string name="default_random_reminder_bi_monthly">каждые два месяца</string>
<string name="repeat_interval_day">День(дней)</string>
<string name="repeat_interval_week">Неделя(ль)</string>
<string name="repeat_interval_month">Месяц(ев)</string>
<string name="repeat_interval_hour">Час(ов)</string>
<string name="repeat_interval_minute">Минута(ы)</string>
<string name="repeat_interval_year">Лет (Года)</string>
<string name="repeat_type_due">с намеченного времени</string>
<string name="repeat_type_completion">со времени завершения</string>
<string name="repeat_detail_duedate">С интервалом %s</string>
<string name="repeat_detail_duedate_until">\"Каждые %1$s до %2$s\"</string>
<string name="repeat_forever">Повторять всегда</string>
<string name="repeat_until">Повторять до %s</string>
<string name="repeat_snackbar">«%1$s» перенесено на %2$s</string>

@ -174,16 +174,6 @@
<string name="default_random_reminder_bi_weekly">každý druhý týždeň</string>
<string name="default_random_reminder_monthly">mesačne</string>
<string name="default_random_reminder_bi_monthly">každý druhý mesiac</string>
<string name="repeat_interval_day">Deň</string>
<string name="repeat_interval_week">Týždeň</string>
<string name="repeat_interval_month">Mesiac</string>
<string name="repeat_interval_hour">Hodina</string>
<string name="repeat_interval_minute">Minúta</string>
<string name="repeat_interval_year">Rok</string>
<string name="repeat_type_due">od dátumu ukončenia</string>
<string name="repeat_type_completion">od dátumu dokončenia</string>
<string name="repeat_detail_duedate">Každý %s</string>
<string name="repeat_detail_duedate_until">Každý %1$s\ndo %2$s</string>
<string name="repeat_forever">Opakovať donekonečna</string>
<string name="repeat_until">Opakovať do %s</string>
<string name="repeat_snackbar">%1$s preplánované na %2$s</string>

@ -166,16 +166,6 @@
<string name="default_random_reminder_bi_weekly">vsake dva tedna</string>
<string name="default_random_reminder_monthly">mesečno</string>
<string name="default_random_reminder_bi_monthly">vsake dva meseca</string>
<string name="repeat_interval_day">Dan/dni</string>
<string name="repeat_interval_week">V tednih</string>
<string name="repeat_interval_month">Mesec/a /e /ev</string>
<string name="repeat_interval_hour">V urah</string>
<string name="repeat_interval_minute">V minutah</string>
<string name="repeat_interval_year">Let/o /i /a</string>
<string name="repeat_type_due">od datuma dospelosti</string>
<string name="repeat_type_completion">od datuma dokončanja</string>
<string name="repeat_detail_duedate">Vsak %s</string>
<string name="repeat_detail_duedate_until">Vsak %1$s\n do %2$s</string>
<string name="repeat_forever">Ponavljaj do preklica</string>
<string name="repeat_until">Ponavljaj do %s</string>
<string name="tag_FEx_untagged">Nerazvrščen</string>

@ -24,7 +24,6 @@
<string name="CFC_dueBefore_text">Po datumu: ?</string>
<string name="gcal_completed_title">%s (završeno)</string>
<string name="rmd_EPr_defaultRemind_title">Nasumice posetnik</string>
<string name="repeat_detail_duedate">Svaki %s</string>
<string name="repeat_forever">Ponavljaj zauvek</string>
<string name="repeat_until">Interval ponavljanja %s</string>
<string name="delete_task">Obriši zadatak</string>

@ -196,16 +196,6 @@
<string name="default_random_reminder_bi_weekly">varannan vecka</string>
<string name="default_random_reminder_monthly">varje månad</string>
<string name="default_random_reminder_bi_monthly">varannan månad</string>
<string name="repeat_interval_day">Dag(ar)</string>
<string name="repeat_interval_week">Vecka (veckor)</string>
<string name="repeat_interval_month">Månad(er)</string>
<string name="repeat_interval_hour">Timme (timmar)</string>
<string name="repeat_interval_minute">Minut(er)</string>
<string name="repeat_interval_year">År</string>
<string name="repeat_type_due">från förfallodatumet</string>
<string name="repeat_type_completion">från avslutningsdatumet</string>
<string name="repeat_detail_duedate">Varje %s</string>
<string name="repeat_detail_duedate_until">Varje %1$s\ntill %2$s </string>
<string name="repeat_forever">Repetera oändligt</string>
<string name="repeat_until">Repetera till %s</string>
<string name="repeat_snackbar">%1$s omplanerat till %2$s</string>

@ -201,16 +201,6 @@
<string name="default_random_reminder_bi_weekly">haftada 2 kez</string>
<string name="default_random_reminder_monthly">ayda bir</string>
<string name="default_random_reminder_bi_monthly">ayda 2 kez</string>
<string name="repeat_interval_day">Gün</string>
<string name="repeat_interval_week">Hafta</string>
<string name="repeat_interval_month">Ay</string>
<string name="repeat_interval_hour">Saat</string>
<string name="repeat_interval_minute">Dakika</string>
<string name="repeat_interval_year">Yıl</string>
<string name="repeat_type_due">son tarihten itibaren</string>
<string name="repeat_type_completion">tamamlanma tarihinden itibaren</string>
<string name="repeat_detail_duedate">Her %s</string>
<string name="repeat_detail_duedate_until">Her %1$s\n%2$s \'e kadar</string>
<string name="repeat_forever">Sürekli yinele</string>
<string name="repeat_until">%s\'e kadar yinele</string>
<string name="repeat_snackbar">%1$s, %2$s için yeniden zamanlandı</string>

@ -198,16 +198,6 @@
<string name="default_random_reminder_bi_weekly">два рази на тиждень</string>
<string name="default_random_reminder_monthly">щомісяця</string>
<string name="default_random_reminder_bi_monthly">два рази на місяць</string>
<string name="repeat_interval_day">Днів</string>
<string name="repeat_interval_week">Тижнів</string>
<string name="repeat_interval_month">Місяців</string>
<string name="repeat_interval_hour">Годин</string>
<string name="repeat_interval_minute">Хвилин</string>
<string name="repeat_interval_year">Років</string>
<string name="repeat_type_due">з кінцевої дати</string>
<string name="repeat_type_completion">з дати виконання</string>
<string name="repeat_detail_duedate">Кожні %s</string>
<string name="repeat_detail_duedate_until">Кожні %1$s\nдо %2$s</string>
<string name="repeat_forever">Повторювати завжди</string>
<string name="repeat_until">Повторювати до %s</string>
<string name="repeat_snackbar">%1$s перенесено на %2$s</string>

@ -152,16 +152,6 @@
<string name="default_random_reminder_bi_weekly">每两周</string>
<string name="default_random_reminder_monthly">每月</string>
<string name="default_random_reminder_bi_monthly">每两个月</string>
<string name="repeat_interval_day"></string>
<string name="repeat_interval_week">星期</string>
<string name="repeat_interval_month"></string>
<string name="repeat_interval_hour">小时</string>
<string name="repeat_interval_minute">分钟</string>
<string name="repeat_interval_year"></string>
<string name="repeat_type_due">自到期日</string>
<string name="repeat_type_completion">自完成日</string>
<string name="repeat_detail_duedate">每隔 %s</string>
<string name="repeat_detail_duedate_until">每隔 %1$s\n直到 %2$s</string>
<string name="repeat_forever">永远重复</string>
<string name="repeat_until">重复到 %s</string>
<string name="new_tag">新建标签</string>

@ -161,16 +161,6 @@
<string name="default_random_reminder_bi_weekly">每2週</string>
<string name="default_random_reminder_monthly">每月</string>
<string name="default_random_reminder_bi_monthly">每2個月</string>
<string name="repeat_interval_day"></string>
<string name="repeat_interval_week">星期</string>
<string name="repeat_interval_month"></string>
<string name="repeat_interval_hour">小時</string>
<string name="repeat_interval_minute">分鐘</string>
<string name="repeat_interval_year"></string>
<string name="repeat_type_due">自到期日</string>
<string name="repeat_type_completion">自完成日</string>
<string name="repeat_detail_duedate">每隔 %s</string>
<string name="repeat_detail_duedate_until">每隔 %1$s\n直到 %2$s</string>
<string name="repeat_forever">永遠重複</string>
<string name="repeat_until">重複到 %s</string>
<string name="new_tag">新增標籤</string>

@ -222,15 +222,6 @@
<item>@string/repeat_yearly</item>
</string-array>
<string-array name="repeat_interval">
<item>@string/repeat_interval_minute</item>
<item>@string/repeat_interval_hour</item>
<item>@string/repeat_interval_day</item>
<item>@string/repeat_interval_week</item>
<item>@string/repeat_interval_month</item>
<item>@string/repeat_interval_year</item>
</string-array>
<string-array name="repeat_type">
<item>@string/repeat_type_due</item>
<item>@string/repeat_type_completion</item>

@ -511,11 +511,7 @@ File %1$s contained %2$s.\n\n
<string name="default_random_reminder_monthly">Monthly</string>
<string name="default_random_reminder_bi_monthly">Bi-monthly</string>
<!-- Resources for built-in repeat plug-in -->
<!-- slide 20b: button for "every x" part of repeat (%d -> repeat value) -->
<string name="repeat_every">Every</string>
<string name="repeat_every">Every</string>
<string name="repeat_option_does_not_repeat">Does not repeat</string>
<string name="repeat_option_every_day">Every day</string>
<string name="repeat_option_every_week">Every week</string>
@ -534,42 +530,58 @@ File %1$s contained %2$s.\n\n
<item quantity="one">minute</item>
<item quantity="other">minutes</item>
</plurals>
<plurals name="repeat_n_minutes">
<item quantity="one">%d minute</item>
<item quantity="other">%d minutes</item>
</plurals>
<plurals name="repeat_hours">
<item quantity="one">hour</item>
<item quantity="other">hours</item>
</plurals>
<plurals name="repeat_n_hours">
<item quantity="one">%d hour</item>
<item quantity="other">%d hours</item>
</plurals>
<plurals name="repeat_days">
<item quantity="one">day</item>
<item quantity="other">days</item>
</plurals>
<plurals name="repeat_n_days">
<item quantity="one">%d day</item>
<item quantity="other">%d days</item>
</plurals>
<plurals name="repeat_weeks">
<item quantity="one">week</item>
<item quantity="other">weeks</item>
</plurals>
<plurals name="repeat_n_weeks">
<item quantity="one">%d week</item>
<item quantity="other">%d weeks</item>
</plurals>
<plurals name="repeat_months">
<item quantity="one">month</item>
<item quantity="other">months</item>
</plurals>
<plurals name="repeat_n_months">
<item quantity="one">%d month</item>
<item quantity="other">%d months</item>
</plurals>
<plurals name="repeat_years">
<item quantity="one">year</item>
<item quantity="other">years</item>
</plurals>
<plurals name="repeat_n_years">
<item quantity="one">%d year</item>
<item quantity="other">%d years</item>
</plurals>
<string name="repeat_interval_day">Day(s)</string>
<string name="repeat_interval_week">Week(s)</string>
<string name="repeat_interval_month">Month(s)</string>
<string name="repeat_interval_hour">Hour(s)</string>
<string name="repeat_interval_minute">Minute(s)</string>
<string name="repeat_interval_year">Year(s)</string>
<string name="repeat_type_due">from due date</string>
<string name="repeat_type_completion">from completion date</string>
<!-- task detail for repeat from due date (%s -> interval) -->
<string name="repeat_detail_duedate">Every %s</string>
<!-- task detail for repeat until a specific date (%1$s -> interval, %2$s -> finish date)-->
<string name="repeat_detail_duedate_until">Every %1$s\nuntil %2$s</string>
<string name="repeat_type_due">due date</string>
<string name="repeat_type_completion">completion date</string>
<!-- text for button when repeating task indefinitely -->
<string name="repeat_forever">Repeat forever</string>
@ -825,4 +837,20 @@ File %1$s contained %2$s.\n\n
<string name="badges">Badges</string>
<string name="launcher_support_required">Launcher support required</string>
<string name="list">List</string>
<string name="repeats_from">Repeats from</string>
<string name="repeats_single">Repeats %s</string>
<string name="repeats_single_on">Repeats %s on %s</string>
<string name="repeats_single_until">Repeats %s until %s</string>
<string name="repeats_single_on_until">Repeats %s on %s until %s</string>
<string name="repeats_minutely">minutely</string>
<string name="repeats_hourly">hourly</string>
<string name="repeats_daily">daily</string>
<string name="repeats_weekly">weekly</string>
<string name="repeats_monthly">monthly</string>
<string name="repeats_yearly">yearly</string>
<string name="repeats_plural">Repeats every %s</string>
<string name="repeats_plural_until">Repeats every %s until %s</string>
<string name="repeats_plural_on">Repeats every %s on %s</string>
<string name="repeats_plural_on_until">Repeats every %s on %s until %s</string>
<string name="list_separator_with_space">,\u0020</string>
</resources>

Loading…
Cancel
Save