Assume you have built a multi language XPage application and want to add a language switcher to the application. The content for the selector should be build automatically when you add a new language resource to the application.
I store my language resource files in the files section of Domino Designer. Each file has a file suffix of “.lang.properties”
To get a list of all files with this specific suffix I put together some Java. The code builds a NoteCollection of MiscFormatElements and then does a serach within the collection to return only elements that match the search criteria.
package de.eknori;
import java.util.Vector;
import javax.faces.context.FacesContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NoteCollection;
import lotus.domino.NotesException;
public class Design {
private static final String SUFFIX_PROPERTY = ".lang.properties";
private static final String EMPTY_STRING = "";
private static final String FIELD_TITLE = "$TITLE";
public static Vector getLangFiles() throws NotesException {
Vector vec = new Vector();
try {
FacesContext fc = FacesContext.getCurrentInstance();
Database db = (Database) fc.getApplication().getVariableResolver()
.resolveVariable(fc, "database");
NoteCollection nc = null;
nc = db.createNoteCollection(false);
nc.setSelectMiscFormatElements(true);
nc.setSelectionFormula("@Contains(" + FIELD_TITLE + ";\""
+ SUFFIX_PROPERTY + "\")");
nc.buildCollection();
String nid = EMPTY_STRING;
nid = nc.getFirstNoteID();
Document doc = null;
while (!(EMPTY_STRING.equals(nid))) {
doc = db.getDocumentByID(nid);
vec.add(doc.getItemValueString(FIELD_TITLE).replace(
SUFFIX_PROPERTY, EMPTY_STRING));
nid = nc.getNextNoteID(nid);
doc.recycle();
}
nc.recycle();
} catch (Exception e) {
}
return vec;
}
}
In your XPage, you can then simply make a call to the method from a combobox
< ?xml version="1.0" encoding="UTF-8"?>
And here is the result
And with just a little tweak you can use the code to get a list of available themes and build a theme switcher … Happy coding!