public String translate(final String text) {
	
		final StringBuffer rv = new StringBuffer();
		
		Element temp = null;
		char current;
		boolean match = false;
		
		for (int x = 0; x < text.length(); x++) {
			current = text.charAt(x);
			temp = pattern;
			match = false;
			while(temp != null) {
				if (isMatch(current, temp)) {
					if (temp.replacement != CharacterIterator.DONE) {
						rv.append(temp.replacement);
					}
					
					// perform our squeeze :)
					while((options & Transliteration.OPTION_SQUEEZE) == Transliteration.OPTION_SQUEEZE && x + 1 < text.length() && text.charAt(x + 1) == current) {
						x++;
					}
					match = true;
					
					break;
				}
				temp = temp.next;
			}
			
			if (!match) {
				rv.append(current);
			}
		}
		
		return rv.toString();
	}