diff --git a/i18n/DroidSansFallback.ttf b/i18n/DroidSansFallback.ttf
deleted file mode 100644
index 61460b1f9..000000000
Binary files a/i18n/DroidSansFallback.ttf and /dev/null differ
diff --git a/i18n/Padauk.ttf b/i18n/Padauk.ttf
deleted file mode 100644
index cd1d113d3..000000000
Binary files a/i18n/Padauk.ttf and /dev/null differ
diff --git a/i18n/TibetanMachineUni.ttf b/i18n/TibetanMachineUni.ttf
deleted file mode 100644
index d9e1899fc..000000000
Binary files a/i18n/TibetanMachineUni.ttf and /dev/null differ
diff --git a/i18n/i18n.properties b/i18n/i18n.properties
deleted file mode 100644
index 2e7329e29..000000000
--- a/i18n/i18n.properties
+++ /dev/null
@@ -1,73 +0,0 @@
-BACK=Back
-NEXT=Next
-CANCEL=Cancel
-FINISH=Finish
-
-YES=Yes
-NO=No
-UNKNOWN=Unknown
-
-CANCELLING=Cancelling, please wait...
-
-ENCRYPTING_FILE=Encrypting file:
-EXTRACTING_FILE=Extracting file:
-COPYING_FILE=Copying file:
-
-DIRECTORY_NOT_FOUND=The chosen folder was not found:
-FILE_NOT_DIRECTORY=The chosen location is not a folder:
-DIRECTORY_NOT_ALLOWED=You do not have permission to use the chosen folder:
-
-WINDOWS=Windows
-MAC=Macintosh
-LINUX=Linux
-
-ENTER_PASSWORD=Enter password:
-CONFIRM_PASSWORD=Confirm password:
-
-INVITATION_TITLE=Create Invitation
-INVITATION_INTRO=\
-This wizard will guide you through the process of inviting a new contact to \
-join Briar.
\
-The wizard will create some files that you must give to your contact.
\
-You will also be asked to choose a password, which your contact will use to \
-unlock the invitation.
-INVITATION_EXISTING_USER=Does your contact already use Briar?
-INVITATION_OPERATING_SYSTEM=What kind of computer does your contact use?
-INVITATION_PASSWORD=\
-Please choose a password for the invitation.
\
-Your contact will need this password to unlock the invitation.
\
-It is very important that you DO NOT send this password across the internet \
-or by SMS.
-INVITATION_LOCATION_TEXT=\
-Please choose where to save the invitation files.
\
-It is recommended to save them on a removable device such as a USB stick. \
-Alternatively, you can send them to your contact by Bluetooth.
\
-Please press Next to choose a location.
-INVITATION_LOCATION_TITLE=Save Invitation Files
-INVITATION_PROGRESS_BEGIN=Preparing to create invitation...
-INVITATION_CREATED=The following files have been created:
-INVITATION_GIVE_TO_CONTACT=\
-Please give these files and the password to your contact.
-INVITATION_ERROR=An error occurred while creating the invitation:
-INVITATION_ABORTED=The invitation could not be not created.
-
-SETUP_TITLE=Setup
-SETUP_LANGUAGE=\
-Welcome to the setup program for Briar, a secure news and discussion \
-network.
\
-Please choose a language and press Next to begin the installation.
-SETUP_ALREADY_INSTALLED=Are you already a user of Briar?
-SETUP_INSTRUCTIONS=\
-To accept the person who sent you this invitation as a contact, please open \
-the invitation.dat file in Briar by selecting File > Open from the menu, or \
-by dragging the file onto the Briar window.
-SETUP_LOCATION_TEXT=\
-It is recommended to install Briar on a removable device such as a USB \
-stick.
\
-Please press Next to choose the folder where Briar will be installed.
-SETUP_LOCATION_TITLE=Choose Folder
-SETUP_PROGRESS_BEGIN=Preparing to install...
-SETUP_INSTALLED=Briar has been installed in the following folder:
-SETUP_UNINSTALL=To uninstall Briar, simply delete the folder.
-SETUP_ERROR=An error occurred while installing:
-SETUP_ABORTED=The installation could not be completed.
diff --git a/i18n/i18n_bo.properties b/i18n/i18n_bo.properties
deleted file mode 100644
index 77bd11893..000000000
--- a/i18n/i18n_bo.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-# Note: It seems to be necessary to insert a zero-width space (\u200b) after
-# every inter-word dot (\u0f0b) to allow line-breaking.
diff --git a/i18n/net/sf/briar/api/i18n/FontManager.java b/i18n/net/sf/briar/api/i18n/FontManager.java
deleted file mode 100644
index b1bd3a1fb..000000000
--- a/i18n/net/sf/briar/api/i18n/FontManager.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package net.sf.briar.api.i18n;
-
-import java.awt.Font;
-import java.io.File;
-import java.util.Locale;
-
-public interface FontManager {
-
- /**
- * Initializes the FontManager for the given locale. Fonts are loaded from
- * the given directory if they cannot be loaded from the running jar.
- */
- void initialize(Locale locale, File dir);
-
- /** Returns the appropriate font for the given language. */
- Font getFontForLanguage(String language);
-
- /** Returns the current user interface font. */
- Font getUiFont();
-
- /** Sets the user interface font appropriately for the given language. */
- void setUiFontForLanguage(String language);
-}
\ No newline at end of file
diff --git a/i18n/net/sf/briar/api/i18n/I18n.java b/i18n/net/sf/briar/api/i18n/I18n.java
deleted file mode 100644
index ef8290c42..000000000
--- a/i18n/net/sf/briar/api/i18n/I18n.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package net.sf.briar.api.i18n;
-
-import java.awt.ComponentOrientation;
-import java.awt.Font;
-import java.io.File;
-import java.io.IOException;
-import java.util.Locale;
-
-public interface I18n {
-
- /** Returns the named string, translated for the current i18n locale. */
- String tr(String name);
-
- /** Returns the i18n locale. This may not match the system locale. */
- Locale getLocale();
-
- /** Sets the i18n locale. */
- void setLocale(Locale locale);
-
- /** Loads the i18n locale from Briar/Data/locale.cfg. */
- void loadLocale() throws IOException;
-
- /** Saves the i18n locale to Briar/Data/locale.cfg. */
- void saveLocale() throws IOException;
-
- /** Loads the i18n locale from the given file. */
- void loadLocale(File f) throws IOException;
-
- /** Saves the i18n locale to the given file. */
- void saveLocale(File f) throws IOException;
-
- /** Returns the ComponentOrientation of the current i18n locale. */
- ComponentOrientation getComponentOrientation();
-
- /** Registers a listener for changes to the i18n locale. */
- void addListener(Listener l);
-
- /** Unregisters a listener for changes to the i18n locale. */
- void removeListener(Listener l);
-
- /**
- * Implemented by classes that wish to be informed of changes to the i18n
- * locale.
- */
- public interface Listener {
-
- /**
- * Called whenever the i18n locale changes.
- * @param uiFont The user interface font for the new locale.
- */
- void localeChanged(Font uiFont);
- }
-}
\ No newline at end of file
diff --git a/i18n/net/sf/briar/api/i18n/Stri18ng.java b/i18n/net/sf/briar/api/i18n/Stri18ng.java
deleted file mode 100644
index a15305b31..000000000
--- a/i18n/net/sf/briar/api/i18n/Stri18ng.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package net.sf.briar.api.i18n;
-
-/** A named translatable string. */
-public class Stri18ng {
-
- private static final String HTML_OPEN_LEFT = "
";
- private static final String HTML_OPEN_RIGHT = "";
- private static final String HTML_CLOSE = "";
- private static final String PARAGRAPH = "
"; // Yes, two of them
-
- private final String name;
- private final I18n i18n;
-
- public Stri18ng(String name, I18n i18n) {
- this.name = name;
- this.i18n = i18n;
- }
-
- /** Returns the string translated for the current i18n locale. */
- public String tr() {
- return i18n.tr(name);
- }
-
- /** Returns the string, translated for the current i18n locale, as HTML. */
- public String html() {
- if(i18n.getComponentOrientation().isLeftToRight())
- return HTML_OPEN_LEFT + i18n.tr(name) + HTML_CLOSE;
- else return HTML_OPEN_RIGHT + i18n.tr(name) + HTML_CLOSE;
- }
-
- /**
- * Returns the string, translated for the current locale, as HTML.
- * @param paras Additional (pre-translated) paragraphs that should be
- * appended to the HTML.
- */
- public String html(String... paras) {
- StringBuilder s = new StringBuilder();
- if(i18n.getComponentOrientation().isLeftToRight())
- s.append(HTML_OPEN_LEFT);
- else s.append(HTML_OPEN_RIGHT);
- s.append(tr());
- for(String para : paras) {
- s.append(PARAGRAPH);
- s.append(para);
- }
- s.append(HTML_CLOSE);
- return s.toString();
- }
-}
diff --git a/i18n/net/sf/briar/i18n/FontManagerImpl.java b/i18n/net/sf/briar/i18n/FontManagerImpl.java
deleted file mode 100644
index ad0c0b222..000000000
--- a/i18n/net/sf/briar/i18n/FontManagerImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package net.sf.briar.i18n;
-
-import java.awt.Font;
-import java.awt.FontFormatException;
-import java.awt.font.TextAttribute;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.swing.UIManager;
-
-import net.sf.briar.api.i18n.FontManager;
-
-// Needs to be public for installer
-public class FontManagerImpl implements FontManager {
-
- private static final Logger LOG =
- Logger.getLogger(FontManagerImpl.class.getName());
-
- /**
- * Each bundled font is associated with a size, which is meant to occupy
- * roughly the same amount of space as the default font (12 point sans),
- * and a list of languages for which the bundled font should be used.
- */
- private static final BundledFont[] BUNDLED_FONTS = {
- // Use TibetanMachineUni for Tibetan
- new BundledFont("TibetanMachineUni.ttf", 14f, new String[] { "bo" }),
- // Use Padauk for Burmese
- new BundledFont("Padauk.ttf", 14f, new String[] { "my" }),
- // Use DroidSansFallback for Chinese, Japanese and Korean
- new BundledFont("DroidSansFallback.ttf", 12f,
- new String[] { "zh" , "ja", "ko" })
- };
-
- // Map from languages to fonts
- private final Map fonts = new HashMap();
-
- private volatile Font defaultFont = null, uiFont = null;
-
- public void initialize(Locale locale, File dir) {
- // Look for bundled fonts in the jar and the filesystem. If any fonts
- // are missing or fail to load, fall back to the default font.
- ClassLoader loader = getClass().getClassLoader();
- for(BundledFont bf : BUNDLED_FONTS) {
- try {
- InputStream in = loader.getResourceAsStream(bf.filename);
- if(in == null)
- in = new FileInputStream(new File(dir, bf.filename));
- Font font = Font.createFont(Font.TRUETYPE_FONT, in);
- font = font.deriveFont(bf.size);
- for(String language : bf.languages) fonts.put(language, font);
- } catch(FontFormatException e) {
- if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
- } catch(IOException e) {
- if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
- }
- }
- defaultFont = getFont("Sans", 12f);
- assert defaultFont != null; // FIXME: This is failing on Windows
- setUiFontForLanguage(locale.getLanguage());
- }
-
- private Font getFont(String name, float size) {
- Map attr = new HashMap();
- attr.put(TextAttribute.FAMILY, name);
- attr.put(TextAttribute.SIZE, Float.valueOf(size));
- return Font.getFont(attr);
- }
-
- public Font getFontForLanguage(String language) {
- assert defaultFont != null;
- Font font = fonts.get(language);
- return font == null ? defaultFont : font;
- }
-
- public Font getUiFont() {
- return uiFont;
- }
-
- public void setUiFontForLanguage(String language) {
- uiFont = getFontForLanguage(language);
- Enumeration