diff --git a/components/app.js b/components/app.js
index 5f7c766adf1762cfe5bea08a555c619ec8efa190..b3218a5fc10ecd81d17d27efbe5dc362001d2365 100644
--- a/components/app.js
+++ b/components/app.js
@@ -9,7 +9,7 @@ import symptomViews from './cycle-day/symptoms'
 import Chart from './chart/chart'
 import Settings from './settings'
 import Stats from './stats'
-import {headerTitles, menuTitles} from './labels'
+import {headerTitles, menuTitles} from '../i18n/en/labels'
 import setupNotifications from '../lib/notifications'
 
 // design wants everyhting lowercased, but we don't
diff --git a/components/chart/chart.js b/components/chart/chart.js
index c0cd73d45a7f952164c6be77b98fad943e328f35..dc3be06cfcf511d85267a81d66960981838f6f92 100644
--- a/components/chart/chart.js
+++ b/components/chart/chart.js
@@ -11,7 +11,7 @@ import styles from './styles'
 import { scaleObservable } from '../../local-storage'
 import config from '../../config'
 import AppText from '../app-text'
-import { shared as labels } from '../labels'
+import { shared as labels } from '../../i18n/en/labels'
 import DripIcon from '../../assets/drip-icons'
 import CycleDayIcon from '../../assets/home-circle'
 import nothingChanged from '../../db/db-unchanged'
diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js
index 12260e7c1ac056853037df721cd2a7045171bf4c..92b8ac0267a7f540732323af28abd0211f0db49a 100644
--- a/components/cycle-day/cycle-day-overview.js
+++ b/components/cycle-day/cycle-day-overview.js
@@ -10,7 +10,7 @@ import Header from '../header'
 import { getCycleDay } from '../../db'
 import cycleModule from '../../lib/cycle'
 import styles from '../../styles'
-import * as labels from './labels'
+import * as labels from '../../i18n/en/cycle-day'
 import AppText from '../app-text'
 import DripIcon from '../../assets/drip-icons'
 
diff --git a/components/cycle-day/symptoms/action-button-footer.js b/components/cycle-day/symptoms/action-button-footer.js
index c2bfe297f50c20119bdfb9dda85bcb8bb69814be..34585509f421377e22411f4253592c378adb73c4 100644
--- a/components/cycle-day/symptoms/action-button-footer.js
+++ b/components/cycle-day/symptoms/action-button-footer.js
@@ -5,7 +5,7 @@ import {
 import Icon from 'react-native-vector-icons/MaterialCommunityIcons'
 import { saveSymptom } from '../../../db'
 import styles, {iconStyles} from '../../../styles'
-import {sharedDialogs as labels} from '../labels'
+import {sharedDialogs as labels} from '../../../i18n/en/cycle-day'
 
 export default class ActionButtonFooter extends Component {
   render() {
diff --git a/components/cycle-day/symptoms/bleeding.js b/components/cycle-day/symptoms/bleeding.js
index 47b140ba9ac5955934b0ceebf40a735be62f5bc5..a17046bf543b7222c7ef3e7df3aa2bf467a7f8d1 100644
--- a/components/cycle-day/symptoms/bleeding.js
+++ b/components/cycle-day/symptoms/bleeding.js
@@ -6,7 +6,7 @@ import {
 } from 'react-native'
 import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
-import { bleeding as labels } from '../labels'
+import { bleeding as labels } from '../../../i18n/en/cycle-day'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
 import SymptomSection from './symptom-section'
diff --git a/components/cycle-day/symptoms/cervix.js b/components/cycle-day/symptoms/cervix.js
index 815787e3447cd446ec83b95e6230dfbccb7a8e22..5b2bdddf73ad283f1d607ead582d2fb8706da68c 100644
--- a/components/cycle-day/symptoms/cervix.js
+++ b/components/cycle-day/symptoms/cervix.js
@@ -6,7 +6,7 @@ import {
 } from 'react-native'
 import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
-import { cervix as labels } from '../labels'
+import { cervix as labels } from '../../../i18n/en/cycle-day'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
 import SymptomSection from './symptom-section'
diff --git a/components/cycle-day/symptoms/desire.js b/components/cycle-day/symptoms/desire.js
index d019d48c543a16eb6935117b3d415943a669ab40..cc3b53680fd2b878c642c712aaec179029443a76 100644
--- a/components/cycle-day/symptoms/desire.js
+++ b/components/cycle-day/symptoms/desire.js
@@ -5,7 +5,7 @@ import {
 } from 'react-native'
 import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
-import { intensity, desire } from '../labels'
+import { intensity, desire } from '../../../i18n/en/cycle-day'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
 import SymptomSection from './symptom-section'
diff --git a/components/cycle-day/symptoms/mucus.js b/components/cycle-day/symptoms/mucus.js
index 548a8b364bf8593fdb312cbaf93da74dcda33e75..f2c268dc6fe9328c3c1597951810e1ce53d9d192 100644
--- a/components/cycle-day/symptoms/mucus.js
+++ b/components/cycle-day/symptoms/mucus.js
@@ -6,7 +6,7 @@ import {
 } from 'react-native'
 import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
-import { mucus as labels } from '../labels'
+import { mucus as labels } from '../../../i18n/en/cycle-day'
 import computeSensiplanValue from '../../../lib/sensiplan-mucus'
 import ActionButtonFooter from './action-button-footer'
 import SelectTabGroup from '../select-tab-group'
diff --git a/components/cycle-day/symptoms/note.js b/components/cycle-day/symptoms/note.js
index 99cc62432d1984a21f771372ba8d20efc8042874..d43843df8ad9e5c7a6f5a045af08e32fb8f1d3bd 100644
--- a/components/cycle-day/symptoms/note.js
+++ b/components/cycle-day/symptoms/note.js
@@ -9,7 +9,7 @@ import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
 import ActionButtonFooter from './action-button-footer'
 import SymptomSection from './symptom-section'
-import { noteExplainer } from '../labels'
+import { noteExplainer } from '../../../i18n/en/cycle-day'
 
 export default class Note extends Component {
   constructor(props) {
diff --git a/components/cycle-day/symptoms/pain.js b/components/cycle-day/symptoms/pain.js
index 880909e3b563023211e302e3a99baf1f7acb1fa6..1a25394fc74f349ae27ef1d6c6b62766f7a82321 100644
--- a/components/cycle-day/symptoms/pain.js
+++ b/components/cycle-day/symptoms/pain.js
@@ -5,7 +5,7 @@ import {
   View
 } from 'react-native'
 import { saveSymptom } from '../../../db'
-import { pain as labels } from '../labels'
+import { pain as labels } from '../../../i18n/en/cycle-day'
 import ActionButtonFooter from './action-button-footer'
 import SelectBoxGroup from '../select-box-group'
 import SymptomSection from './symptom-section'
diff --git a/components/cycle-day/symptoms/sex.js b/components/cycle-day/symptoms/sex.js
index ec827d65c7b0f18b2bf17fe868a5c3a95d811f30..68449855204df414d0796e03c03509223c165ddf 100644
--- a/components/cycle-day/symptoms/sex.js
+++ b/components/cycle-day/symptoms/sex.js
@@ -6,7 +6,7 @@ import {
 } from 'react-native'
 import styles from '../../../styles'
 import { saveSymptom } from '../../../db'
-import { sex as sexLabels, contraceptives as cLabels } from '../labels'
+import { sex as sexLabels, contraceptives as cLabels } from '../../../i18n/en/cycle-day'
 import ActionButtonFooter from './action-button-footer'
 import SelectBoxGroup from '../select-box-group'
 import SymptomSection from './symptom-section'
diff --git a/components/cycle-day/symptoms/temperature.js b/components/cycle-day/symptoms/temperature.js
index 8845134fc2604a3762bfb26c823f88e8b096a964..32aeb0f3716de0bfa2da209525e5961e2233ca49 100644
--- a/components/cycle-day/symptoms/temperature.js
+++ b/components/cycle-day/symptoms/temperature.js
@@ -13,9 +13,9 @@ import padWithZeros from '../../helpers/pad-time-with-zeros'
 import { getPreviousTemperature, saveSymptom } from '../../../db'
 import styles from '../../../styles'
 import { LocalTime, ChronoUnit } from 'js-joda'
-import { temperature as labels } from '../labels'
+import { temperature as labels } from '../../../i18n/en/cycle-day'
 import { scaleObservable } from '../../../local-storage'
-import { shared } from '../../labels'
+import { shared } from '../../../i18n/en/labels'
 import ActionButtonFooter from './action-button-footer'
 import config from '../../../config'
 import SymptomSection from './symptom-section'
diff --git a/components/home.js b/components/home.js
index 9553ba8ae18cd34e936b8d6be2f99aa4710b442a..8f794f4bfc12c9077eb1e3ee8da912fdabd4d36c 100644
--- a/components/home.js
+++ b/components/home.js
@@ -4,7 +4,7 @@ import { LocalDate, ChronoUnit } from 'js-joda'
 import Icon from 'react-native-vector-icons/Entypo'
 import { Surface } from 'react-native/Libraries/ART/ReactNativeART'
 import { secondaryColor, cycleDayColor, periodColor } from '../styles'
-import { home as labels, bleedingPrediction as predictLabels, shared } from './labels'
+import { home as labels, bleedingPrediction as predictLabels, shared } from '../i18n/en/labels'
 import CycleDayIcon from '../assets/home-circle'
 import Drop from '../assets/home-drop'
 import cycleModule from '../lib/cycle'
diff --git a/components/password-prompt.js b/components/password-prompt.js
index dec0b681284aa0a5ea521b51a874fe42f70b3a41..ca1676d0301437d135edb68dfe8a8f997dde82cc 100644
--- a/components/password-prompt.js
+++ b/components/password-prompt.js
@@ -4,7 +4,7 @@ import nodejs from 'nodejs-mobile-react-native'
 import { saveEncryptionFlag } from '../local-storage'
 import AppText from './app-text'
 import styles from '../styles'
-import { passwordPrompt as labels, shared } from './labels'
+import { passwordPrompt as labels, shared } from '../i18n/en/labels'
 import { requestHash, deleteDbAndOpenNew, openDb } from '../db'
 
 export default class PasswordPrompt extends Component {
diff --git a/components/settings/alert-error.js b/components/settings/alert-error.js
index ae375405ff0a3136a10622314224b19819053f5b..b4d447d25742ed21e46e24e07e053e529962c766 100644
--- a/components/settings/alert-error.js
+++ b/components/settings/alert-error.js
@@ -1,5 +1,5 @@
 import { Alert } from 'react-native'
-import { shared as sharedLabels } from '../labels'
+import { shared as sharedLabels } from '../../i18n/en/labels'
 
 export default function alertError(msg) {
   Alert.alert(sharedLabels.errorTitle, msg)
diff --git a/components/settings/export-dialog.js b/components/settings/export-dialog.js
index 4e3c21f170265e35b203a6a94da81c24a452af01..e87b9d20300e07d57292078ab21606e8d8c94b12 100644
--- a/components/settings/export-dialog.js
+++ b/components/settings/export-dialog.js
@@ -1,7 +1,7 @@
 import Share from 'react-native-share'
 import getDataAsCsvDataUri from '../../lib/import-export/export-to-csv'
 import alertError from './alert-error'
-import { settings as labels } from '../labels'
+import { settings as labels } from '../../i18n/en/settings'
 
 export default async function openShareDialogAndExport() {
   let data
diff --git a/components/settings/import-dialog.js b/components/settings/import-dialog.js
index a07671780bbe98a854cefdea9126610fd71f567b..5701b0876c43349fa5556c746290b1a6258a9982 100644
--- a/components/settings/import-dialog.js
+++ b/components/settings/import-dialog.js
@@ -2,7 +2,8 @@ import { Alert } from 'react-native'
 import { DocumentPicker, DocumentPickerUtil } from 'react-native-document-picker'
 import rnfs from 'react-native-fs'
 import importCsv from '../../lib/import-export/import-from-csv'
-import { settings as labels, shared as sharedLabels } from '../labels'
+import { shared as sharedLabels } from '../../i18n/en/labels'
+import { settings as labels } from '../../i18n/en/settings'
 import alertError from './alert-error'
 
 export default function openImportDialogAndImport() {
diff --git a/components/settings/index.js b/components/settings/index.js
index fd432f88609655df4c537ed5cf6ce0a4b6346fbc..bfddbc7026af06dcc27415f631e5dd8c668bb429 100644
--- a/components/settings/index.js
+++ b/components/settings/index.js
@@ -5,7 +5,7 @@ import {
   ScrollView,
 } from 'react-native'
 import styles from '../../styles/index'
-import { settings as labels } from '../labels'
+import { settings as labels } from '../../i18n/en/settings'
 import AppText from '../app-text'
 import TempReminderPicker from './temp-reminder-picker'
 import PeriodReminderPicker from './period-reminder'
diff --git a/components/settings/password/check-current-password.js b/components/settings/password/check-current-password.js
index 7d603086131dd2568145f4015778a37a9f359b67..76ddc9453abed9608ce05704adfd6cedf853b3af 100644
--- a/components/settings/password/check-current-password.js
+++ b/components/settings/password/check-current-password.js
@@ -1,6 +1,6 @@
 import { Alert } from 'react-native'
 import { openDb } from '../../../db'
-import { shared } from '../../labels'
+import { shared } from '../../../i18n/en/labels'
 
 export default async function checkPassword({hash, onCancel, onTryAgain }) {
   const connected = await openDb(hash)
diff --git a/components/settings/password/create.js b/components/settings/password/create.js
index 7e0429427ed11f3738cfff36d03f1967cfa25753..87bd2bf86beb7f053756c12a31107d58c36ebed4 100644
--- a/components/settings/password/create.js
+++ b/components/settings/password/create.js
@@ -6,7 +6,7 @@ import {
 import nodejs from 'nodejs-mobile-react-native'
 import AppText from '../../app-text'
 import styles from '../../../styles'
-import { settings as labels } from '../../labels'
+import { settings as labels } from '../../../i18n/en/settings'
 import { requestHash, changeEncryptionAndRestartApp } from '../../../db'
 import PasswordField from './password-field'
 import showBackUpReminder from './show-backup-reminder'
diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js
index 74fcd6b79b6ffed5ceee891c7d8a687a4a2e1a93..d75f2de62916cfb9f5a2a94e49bce08b870ffd63 100644
--- a/components/settings/password/delete.js
+++ b/components/settings/password/delete.js
@@ -6,7 +6,7 @@ import {
 import nodejs from 'nodejs-mobile-react-native'
 import AppText from '../../app-text'
 import styles from '../../../styles'
-import { settings as labels } from '../../labels'
+import { settings as labels } from '../../../i18n/en/settings'
 import { requestHash, changeEncryptionAndRestartApp } from '../../../db'
 import PasswordField from './password-field'
 import showBackUpReminder from './show-backup-reminder'
diff --git a/components/settings/password/index.js b/components/settings/password/index.js
index 7a117443c7b0dcc32297f5439556e75404887990..47e484866df58479c97f1ef7a76feb43ba28de86 100644
--- a/components/settings/password/index.js
+++ b/components/settings/password/index.js
@@ -8,7 +8,7 @@ import {
   hasEncryptionObservable
 } from '../../../local-storage'
 import styles from '../../../styles/index'
-import { settings as labels } from '../../labels'
+import { settings as labels } from '../../../i18n/en/settings'
 
 export default class PasswordSetting extends Component {
   constructor(props) {
diff --git a/components/settings/password/show-backup-reminder.js b/components/settings/password/show-backup-reminder.js
index 11a7d834a29236c81dc9af2ced7f9b08a12cad62..708b81c5edc5e7112abbc6a146fd0a2f62edf2f6 100644
--- a/components/settings/password/show-backup-reminder.js
+++ b/components/settings/password/show-backup-reminder.js
@@ -1,5 +1,6 @@
 import { Alert } from 'react-native'
-import { settings as labels, shared } from '../../labels'
+import { shared } from '../../../i18n/en/labels'
+import { settings as labels } from '../../../i18n/en/settings'
 
 export default function showBackUpReminder(okHandler, isDelete) {
   let title, message
diff --git a/components/settings/password/update.js b/components/settings/password/update.js
index 2681d2e9dec7ff42a917242e3dd7a8e78c760988..fc10cca5a4e509cc82f3ae04aec0cb86b9be7986 100644
--- a/components/settings/password/update.js
+++ b/components/settings/password/update.js
@@ -6,7 +6,8 @@ import {
 import nodejs from 'nodejs-mobile-react-native'
 import AppText from '../../app-text'
 import styles from '../../../styles'
-import { settings as labels, shared } from '../../labels'
+import { shared } from '../../../i18n/en/labels'
+import { settings as labels } from '../../../i18n/en/settings'
 import { requestHash, changeEncryptionAndRestartApp } from '../../../db'
 import PasswordField from './password-field'
 import showBackUpReminder from './show-backup-reminder'
diff --git a/components/settings/period-reminder.js b/components/settings/period-reminder.js
index 3624e2fd89a6122f3398fa87d64d9c457fa4364a..1bc41cbe885f8fea50321af9c9f70d7ef285095a 100644
--- a/components/settings/period-reminder.js
+++ b/components/settings/period-reminder.js
@@ -9,7 +9,7 @@ import {
   savePeriodReminder
 } from '../../local-storage'
 import styles from '../../styles/index'
-import { settings as labels } from '../labels'
+import { settings as labels } from '../../i18n/en/settings'
 
 export default class PeriodReminderPicker extends Component {
   constructor(props) {
diff --git a/components/settings/temp-reminder-picker.js b/components/settings/temp-reminder-picker.js
index b3a2a4e769e0ff60fb32dd4cb49bb938e710a5f2..48a7611bac78b5c5bdc14f75e4b1d8eca094e8c9 100644
--- a/components/settings/temp-reminder-picker.js
+++ b/components/settings/temp-reminder-picker.js
@@ -11,7 +11,7 @@ import {
   saveTempReminder
 } from '../../local-storage'
 import styles from '../../styles/index'
-import { settings as labels } from '../labels'
+import { settings as labels } from '../../i18n/en/settings'
 import padWithZeros from '../helpers/pad-time-with-zeros'
 
 export default class TempReminderPicker extends Component {
diff --git a/components/settings/temp-slider.js b/components/settings/temp-slider.js
index 1bd097643b1d03e0a3abf5afc639eabcd25f03c7..70522994eaa3300e642a9558a82163b1b068f5a5 100644
--- a/components/settings/temp-slider.js
+++ b/components/settings/temp-slider.js
@@ -7,7 +7,7 @@ import {
   saveTempScale,
 } from '../../local-storage'
 import { secondaryColor } from '../../styles/index'
-import { settings as labels } from '../labels'
+import { settings as labels } from '../../i18n/en/settings'
 import config from '../../config'
 import alertError from './alert-error'
 
diff --git a/components/stats.js b/components/stats.js
index a888de456440b8a00d59ec0b11b80ab58e797969..d192f04d5fe813e26797c4ccb395757762fb09ff 100644
--- a/components/stats.js
+++ b/components/stats.js
@@ -7,7 +7,7 @@ import {
 import styles from '../styles/index'
 import cycleModule from '../lib/cycle'
 import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length'
-import {stats as labels} from './labels'
+import {stats as labels} from '../i18n/en/labels'
 import AppText from './app-text'
 import { getCycleStartsSortedByDate } from '../db'
 
diff --git a/components/cycle-day/labels.js b/copy/en/cycle-day.js
similarity index 100%
rename from components/cycle-day/labels.js
rename to copy/en/cycle-day.js
diff --git a/components/labels.js b/copy/en/labels.js
similarity index 58%
rename from components/labels.js
rename to copy/en/labels.js
index 6a9709c647b469c12795a5b3bd5b7efe712807c5..059e2c0c1abbc03afc24d1f4f7b691f084fed376 100644
--- a/components/labels.js
+++ b/copy/en/labels.js
@@ -16,70 +16,6 @@ export const shared = {
   less: 'less'
 }
 
-export const settings = {
-  export: {
-    errors: {
-      noData: 'There is no data to export',
-      couldNotConvert: 'Could not convert data to CSV',
-      problemSharing: 'There was a problem sharing the data export file'
-    },
-    title: 'My Drip data export',
-    subject: 'My Drip data export',
-    button: 'Export data',
-    segmentExplainer: 'Export data in CSV format for backup or so you can use it elsewhere'
-  },
-  import: {
-    button: 'Import data',
-    title: 'Keep existing data?',
-    message: `There are two options for the import:
-1. Keep existing cycle days and replace only the ones in the import file.
-2. Delete all existing cycle days and import cycle days from file.`,
-    replaceOption: 'Import and replace',
-    deleteOption: 'Import and delete existing',
-    errors: {
-      couldNotOpenFile: 'Could not open file',
-      postFix: 'No data was imported or changed'
-    },
-    success: {
-      message: 'Data successfully imported'
-    },
-    segmentExplainer: 'Import data in CSV format'
-  },
-  tempScale: {
-    segmentTitle: 'Temperature scale',
-    segmentExplainer: 'Change the minimum and maximum value for the temperature chart',
-    min: 'Min',
-    max: 'Max',
-    loadError: 'Could not load saved temperature scale settings',
-    saveError: 'Could not save temperature scale settings'
-  },
-  tempReminder: {
-    title: 'Temperature reminder',
-    noTimeSet: 'Set a time for a daily reminder to take your temperature',
-    timeSet: time => `Daily reminder set for ${time}`,
-    notification: 'Record your morning temperature'
-  },
-  periodReminder: {
-    title: 'Next period reminder',
-    reminderText: 'Get a notification 3 days before your next period is likely to start.',
-    notification: daysToEndOfPrediction => `Your next period is likely to start in 3 to ${daysToEndOfPrediction} days.`
-  },
-  passwordSettings: {
-    title: 'App password',
-    explainerDisabled: "Encrypt the app's database with a password. You need to enter the password every time the app is started.",
-    explainerEnabled: "Password protection and database encryption is currently enabled",
-    setPassword: 'Set password',
-    changePassword: 'Change password',
-    deletePassword: 'Delete password',
-    enterCurrent: "Please enter your current password",
-    enterNew: "Please enter a new password",
-    backupReminderTitle: 'Read this before making changes to your password',
-    backupReminder: 'Just to be safe, please backup your data using the export function before making changes to your password.\n\nLonger passwords are better! Consider using a passphrase.\n\nPlease also make sure you do not lose your password. There is no way to recover your data if you do.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
-    deleteBackupReminderTitle: 'Read this before deleting your password',
-    deleteBackupReminder: 'Deleting your password means your data will no longer be encrypted.\n\nJust to be safe, please backup your data using the export function before deleting your password.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
-  }
-}
-
 export const headerTitles = {
   Home: 'Home',
   Calendar: 'Calendar',
diff --git a/copy/en/settings.js b/copy/en/settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..e985f7d84730529d382af6b3d5bf995b30b96af4
--- /dev/null
+++ b/copy/en/settings.js
@@ -0,0 +1,63 @@
+export const settings = {
+  export: {
+    errors: {
+      noData: 'There is no data to export',
+      couldNotConvert: 'Could not convert data to CSV',
+      problemSharing: 'There was a problem sharing the data export file'
+    },
+    title: 'My Drip data export',
+    subject: 'My Drip data export',
+    button: 'Export data',
+    segmentExplainer: 'Export data in CSV format for backup or so you can use it elsewhere'
+  },
+  import: {
+    button: 'Import data',
+    title: 'Keep existing data?',
+    message: `There are two options for the import:
+1. Keep existing cycle days and replace only the ones in the import file.
+2. Delete all existing cycle days and import cycle days from file.`,
+    replaceOption: 'Import and replace',
+    deleteOption: 'Import and delete existing',
+    errors: {
+      couldNotOpenFile: 'Could not open file',
+      postFix: 'No data was imported or changed'
+    },
+    success: {
+      message: 'Data successfully imported'
+    },
+    segmentExplainer: 'Import data in CSV format'
+  },
+  tempScale: {
+    segmentTitle: 'Temperature scale',
+    segmentExplainer: 'Change the minimum and maximum value for the temperature chart',
+    min: 'Min',
+    max: 'Max',
+    loadError: 'Could not load saved temperature scale settings',
+    saveError: 'Could not save temperature scale settings'
+  },
+  tempReminder: {
+    title: 'Temperature reminder',
+    noTimeSet: 'Set a time for a daily reminder to take your temperature',
+    timeSet: time => `Daily reminder set for ${time}`,
+    notification: 'Record your morning temperature'
+  },
+  periodReminder: {
+    title: 'Next period reminder',
+    reminderText: 'Get a notification 3 days before your next period is likely to start.',
+    notification: daysToEndOfPrediction => `Your next period is likely to start in 3 to ${daysToEndOfPrediction} days.`
+  },
+  passwordSettings: {
+    title: 'App password',
+    explainerDisabled: "Encrypt the app's database with a password. You need to enter the password every time the app is started.",
+    explainerEnabled: "Password protection and database encryption is currently enabled",
+    setPassword: 'Set password',
+    changePassword: 'Change password',
+    deletePassword: 'Delete password',
+    enterCurrent: "Please enter your current password",
+    enterNew: "Please enter a new password",
+    backupReminderTitle: 'Read this before making changes to your password',
+    backupReminder: 'Just to be safe, please backup your data using the export function before making changes to your password.\n\nLonger passwords are better! Consider using a passphrase.\n\nPlease also make sure you do not lose your password. There is no way to recover your data if you do.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
+    deleteBackupReminderTitle: 'Read this before deleting your password',
+    deleteBackupReminder: 'Deleting your password means your data will no longer be encrypted.\n\nJust to be safe, please backup your data using the export function before deleting your password.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
+  }
+}
\ No newline at end of file
diff --git a/i18n/en/cycle-day.js b/i18n/en/cycle-day.js
new file mode 100644
index 0000000000000000000000000000000000000000..ff7ed56975f830e98b0a8595a9a337016c74bd8a
--- /dev/null
+++ b/i18n/en/cycle-day.js
@@ -0,0 +1,96 @@
+export const bleeding = ['spotting', 'light', 'medium', 'heavy']
+export const mucusNFP = ['t', 'Ø', 'f', 'S', 'S+']
+export const intensity = ['low', 'medium', 'high']
+
+export const cervix = {
+  opening: {
+    categories: ['closed', 'medium', 'open'],
+    explainer: 'Is your cervix open or closed?'
+  },
+  firmness: {
+    categories: ['hard', 'soft'],
+    explainer: "When it's hard it might feel like the tip of your nose"
+  },
+  position: {
+    categories: ['low', 'medium', 'high'],
+    explainer: 'How high up in the vagina is the cervix?'
+  }
+}
+
+export const mucus = {
+  feeling: {
+    categories: ['dry', 'nothing', 'wet', 'slippery'],
+    explainer: 'What does your vaginal entrance feel like?'
+  },
+  texture: {
+    categories: ['nothing', 'creamy', 'egg white'],
+    explainer: "Looking at and touching your cervical mucus, which describes it best?"
+  },
+  excludeExplainer: "You can exclude this value if you don't want to use it for fertility detection"
+}
+
+export const desire = {
+  header: 'Intensity',
+  explainer: 'How would you rate your sexual desire?'
+}
+
+export const sex = {
+  categories:{
+    solo: 'Solo',
+    partner: 'Partner',
+  },
+  explainer: 'Were you sexually active today?',
+}
+
+export const contraceptives = {
+  categories:{
+    condom: 'Condom',
+    pill: 'Pill',
+    iud: 'IUD',
+    patch: 'Patch',
+    ring: 'Ring',
+    implant: 'Implant',
+    diaphragm: 'Diaphragm',
+    none: 'None',
+    other: 'Other',
+  },
+  explainer: 'Did you use contraceptives?'
+}
+
+export const pain = {
+  categories: {
+    cramps: 'Cramps',
+    ovulationPain: 'Ovulation pain',
+    headache: 'Headache',
+    backache: 'Backache',
+    nausea: 'Nausea',
+    tenderBreasts: 'Tender breasts',
+    migraine: 'Migraine',
+    other: 'Other'
+  },
+  explainer: 'How did your body feel today?'
+}
+
+export const temperature = {
+  outOfRangeWarning: 'This temperature value is out of the current range for the temperature chart. You can change the range in the settings.',
+  outOfAbsoluteRangeWarning: 'This temperature value is too high or low to be shown on the temperature chart.',
+  saveAnyway: 'Save anyway',
+  temperature: {
+    explainer: 'Take your temperature right after waking up, before getting out of bed'
+  },
+  note: {
+    explainer: 'Is there anything that could have influenced this value, such as bad sleep or alcohol consumption?'
+  },
+  excludeExplainer: "You can exclude this value if you don't want to use it for fertility detection"
+}
+
+export const noteExplainer = "Anything you want to add for the day?"
+
+export const sharedDialogs = {
+  cancel: 'Cancel',
+  areYouSureTitle: 'Are you sure?',
+  areYouSureToUnset: 'Are you sure you want to unset all entered data?',
+  reallyUnsetData: 'Yes, I am sure',
+  save: 'Save',
+  unset: 'Unset'
+}
diff --git a/i18n/en/labels.js b/i18n/en/labels.js
new file mode 100644
index 0000000000000000000000000000000000000000..059e2c0c1abbc03afc24d1f4f7b691f084fed376
--- /dev/null
+++ b/i18n/en/labels.js
@@ -0,0 +1,110 @@
+export const shared = {
+  cancel: 'Cancel',
+  save: 'Save',
+  errorTitle: 'Error',
+  successTitle: 'Success',
+  warning: 'Warning',
+  incorrectPassword: 'Password incorrect',
+  incorrectPasswordMessage: 'That password is incorrect.',
+  tryAgain: 'Try again',
+  ok: 'OK',
+  unlock: 'Unlock',
+  date: 'Date',
+  cycleDayWithLinebreak: 'Cycle\nday',
+  loading: 'Loading ...',
+  more: 'more',
+  less: 'less'
+}
+
+export const headerTitles = {
+  Home: 'Home',
+  Calendar: 'Calendar',
+  Chart: 'Chart',
+  Stats: 'Statistics',
+  Settings: 'Settings',
+  BleedingEditView: 'Bleeding',
+  TemperatureEditView: 'Temperature',
+  MucusEditView: 'Mucus',
+  CervixEditView: 'Cervix',
+  NoteEditView: 'Note',
+  DesireEditView: 'Desire',
+  SexEditView: 'Sex',
+  PainEditView: 'Pain'
+}
+
+export const menuTitles = {
+  Home: 'Home',
+  Calendar: 'Calendar',
+  Chart: 'Chart',
+  Stats: 'Stats',
+  Settings: 'Settings',
+}
+
+export const stats = {
+  cycleLengthTitle: 'Cycle length',
+  cycleLengthExplainer: 'Basic statistics about the length of your cycles.',
+  emptyStats: 'At least one completed cycle is needed to present you with stats here.',
+  //oneCycleStats: (number) => `You have documented one cycle of ${number} days.`,
+  oneCycleStats: 'You have documented one cycle of',
+  daysLabel: 'days',
+  //getBasisOfStats: (numberOfCycles) => `Stats are based on ${numberOfCycles} completed cycles.`,
+  basisOfStatsBeginning: 'Stats are based on',
+  basisOfStatsEnd: 'completed cycles.',
+  averageLabel: 'Average cycle length',
+  minLabel: 'Shortest cycle',
+  maxLabel: 'Longest cycle',
+  stdLabel: 'Standard deviation'
+}
+
+export const bleedingPrediction = {
+  noPrediction: 'There is not enough period data to predict the next one.',
+  predictionInFuture: (startDays, endDays) => `Your next period is likely to start in ${startDays} to ${endDays} days.`,
+  predictionStartedXDaysLeft: (numberOfDays) => `Your period is likely to start today or during the next ${numberOfDays} days.`,
+  predictionStarted1DayLeft: 'Your period is likely to start today or tomorrow.',
+  predictionStartedNoDaysLeft: 'Your period is likely to start today.',
+  predictionInPast: (startDate, endDate) => `Based on your documented data, your period was likely to start between ${startDate} and ${endDate}.`
+}
+
+export const passwordPrompt = {
+  title: 'Unlock app',
+  enterPassword: 'Enter password here',
+  deleteDatabaseExplainer: "If you've forgotten your password, unfortunately, there is nothing we can do to recover your data, because it is encrypted with the password only you know. You can, however, delete all your encrypted data and start fresh. Once all data has been erased, you can set a new password in the settings, if you like.",
+  forgotPassword: 'Forgot your password?',
+  deleteDatabaseTitle: 'Forgot your password?',
+  deleteData: 'Yes, delete all my data',
+  areYouSureTitle: 'Are you sure?',
+  areYouSure: 'Are you absolutely sure you want to permanently delete all your data?',
+  reallyDeleteData: 'Yes, I am sure'
+}
+
+export const home = {
+  editToday: 'add data for today',
+  cycleDayNotEnoughInfo: "We don't have enough information to know what your current cycle day is.",
+  unknown: '?',
+  cycleDayKnown: d => `Your last period started ${getDaysDescriptor(d)}.`,
+  trackPeriod: 'track your period',
+  checkFertility: 'check your fertility',
+  phase: n => `${['1st', '2nd', '3rd'][n - 1]} cycle phase`
+}
+
+const getDaysDescriptor = cycleDayNumber => {
+  if (cycleDayNumber === 1) return 'today'
+  if (cycleDayNumber === 2) return 'yesterday'
+  return `${cycleDayNumber - 1} days ago`
+}
+
+export const fertilityStatus = {
+  fertile: 'fertile',
+  infertile: 'infertile',
+  fertileUntilEvening: 'Fertile phase ends in the evening',
+  unknown: 'We cannot show any cycle information because no period data has been added.',
+  preOvuText: "With NFP rules, you may assume 5 days of infertility at the beginning of your cycle, provided you don't observe any fertile mucus or cervix values.",
+  periOvuText: "We have not been able to detect both a temperature shift and mucus or cervix shift.",
+  postOvuText: tempRule => {
+    return (
+      'We have detected a temperature shift (' + ['regular', '1st exception', '2nd exception'][tempRule] +
+      ' temperature rule), as well as a mucus shift according to NFP rules. You may assume infertility, but always remember to ' +
+      'double-check for yourself. Make sure the data makes sense to you.'
+    )
+  }
+}
diff --git a/i18n/en/settings.js b/i18n/en/settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..e985f7d84730529d382af6b3d5bf995b30b96af4
--- /dev/null
+++ b/i18n/en/settings.js
@@ -0,0 +1,63 @@
+export const settings = {
+  export: {
+    errors: {
+      noData: 'There is no data to export',
+      couldNotConvert: 'Could not convert data to CSV',
+      problemSharing: 'There was a problem sharing the data export file'
+    },
+    title: 'My Drip data export',
+    subject: 'My Drip data export',
+    button: 'Export data',
+    segmentExplainer: 'Export data in CSV format for backup or so you can use it elsewhere'
+  },
+  import: {
+    button: 'Import data',
+    title: 'Keep existing data?',
+    message: `There are two options for the import:
+1. Keep existing cycle days and replace only the ones in the import file.
+2. Delete all existing cycle days and import cycle days from file.`,
+    replaceOption: 'Import and replace',
+    deleteOption: 'Import and delete existing',
+    errors: {
+      couldNotOpenFile: 'Could not open file',
+      postFix: 'No data was imported or changed'
+    },
+    success: {
+      message: 'Data successfully imported'
+    },
+    segmentExplainer: 'Import data in CSV format'
+  },
+  tempScale: {
+    segmentTitle: 'Temperature scale',
+    segmentExplainer: 'Change the minimum and maximum value for the temperature chart',
+    min: 'Min',
+    max: 'Max',
+    loadError: 'Could not load saved temperature scale settings',
+    saveError: 'Could not save temperature scale settings'
+  },
+  tempReminder: {
+    title: 'Temperature reminder',
+    noTimeSet: 'Set a time for a daily reminder to take your temperature',
+    timeSet: time => `Daily reminder set for ${time}`,
+    notification: 'Record your morning temperature'
+  },
+  periodReminder: {
+    title: 'Next period reminder',
+    reminderText: 'Get a notification 3 days before your next period is likely to start.',
+    notification: daysToEndOfPrediction => `Your next period is likely to start in 3 to ${daysToEndOfPrediction} days.`
+  },
+  passwordSettings: {
+    title: 'App password',
+    explainerDisabled: "Encrypt the app's database with a password. You need to enter the password every time the app is started.",
+    explainerEnabled: "Password protection and database encryption is currently enabled",
+    setPassword: 'Set password',
+    changePassword: 'Change password',
+    deletePassword: 'Delete password',
+    enterCurrent: "Please enter your current password",
+    enterNew: "Please enter a new password",
+    backupReminderTitle: 'Read this before making changes to your password',
+    backupReminder: 'Just to be safe, please backup your data using the export function before making changes to your password.\n\nLonger passwords are better! Consider using a passphrase.\n\nPlease also make sure you do not lose your password. There is no way to recover your data if you do.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
+    deleteBackupReminderTitle: 'Read this before deleting your password',
+    deleteBackupReminder: 'Deleting your password means your data will no longer be encrypted.\n\nJust to be safe, please backup your data using the export function before deleting your password.\n\nMaking any changes to your password setting will keep your data as it was before and restart the app.',
+  }
+}
\ No newline at end of file
diff --git a/lib/notifications.js b/lib/notifications.js
index 638248123ce2a7b2208377c6136dbb16ccd180a9..ded27c3419038a9284b48d446993a625ae0e978e 100644
--- a/lib/notifications.js
+++ b/lib/notifications.js
@@ -2,7 +2,7 @@ import {tempReminderObservable, periodReminderObservable} from '../local-storage
 import Notification from 'react-native-push-notification'
 import { LocalDate } from 'js-joda'
 import Moment from 'moment'
-import { settings as labels } from '../components/labels'
+import { settings as labels } from '../i18n/en/settings'
 import { getBleedingDaysSortedByDate } from '../db'
 import cycleModule from './cycle'
 import nothingChanged from '../db/db-unchanged'
diff --git a/lib/sympto-adapter.js b/lib/sympto-adapter.js
index a6d0d7e68e019f9c235572bf0f9fdfcaf7ddaa3b..821e7c5220b801008401618cd9b9f6adc3cd2c8a 100644
--- a/lib/sympto-adapter.js
+++ b/lib/sympto-adapter.js
@@ -1,6 +1,6 @@
 import getFertilityStatus from './sympto'
 import cycleModule from './cycle'
-import { fertilityStatus } from '../components/labels'
+import { fertilityStatus } from '../i18n/en/labels'
 
 export function getFertilityStatusForDay(dateString) {
   const status = getCycleStatusForDay(dateString)