Author: nextgens
Date: 2007-04-22 14:06:15 +0000 (Sun, 22 Apr 2007)
New Revision: 12863
Modified:
trunk/freenet/src/freenet/l10n/L10n.java
Log:
L10n: fix the problem and synchronize properly.
Modified: trunk/freenet/src/freenet/l10n/L10n.java
===================================================================
--- trunk/freenet/src/freenet/l10n/L10n.java 2007-04-22 13:56:19 UTC (rev
12862)
+++ trunk/freenet/src/freenet/l10n/L10n.java 2007-04-22 14:06:15 UTC (rev
12863)
@@ -43,6 +43,7 @@
private static L10n currentClass = null;
private static SimpleFieldSet translationOverride;
+ private static final Object sync = new Object();
L10n(String selected) {
selectedLanguage = selected;
@@ -68,47 +69,50 @@
* @param selectedLanguage (2 letter code)
* @throws MissingResourceException
*/
- public static void setLanguage(String selectedLanguage) throws
MissingResourceException {
- for(int i=0; i<AVAILABLE_LANGUAGES.length; i++){
-
if(selectedLanguage.equalsIgnoreCase(AVAILABLE_LANGUAGES[i])){
- synchronized (currentClass) {
+ public static void setLanguage(String selectedLanguage) throws
MissingResourceException {
+ synchronized (sync) {
+ for(int i=0; i<AVAILABLE_LANGUAGES.length; i++){
+
if(selectedLanguage.equalsIgnoreCase(AVAILABLE_LANGUAGES[i])){
selectedLanguage =
AVAILABLE_LANGUAGES[i];
Logger.normal(CLASS_NAME, "Changing the
current language to : " + selectedLanguage);
-
+
currentClass = new
L10n(selectedLanguage);
-
+
if(currentTranslation == null) {
currentClass = new
L10n(AVAILABLE_LANGUAGES[0]);
throw new
MissingResourceException("Unable to load the translation file for
"+selectedLanguage, "l10n", selectedLanguage);
}
+
+ return;
}
- return;
}
+
+ currentClass = new L10n(AVAILABLE_LANGUAGES[0]);
+ Logger.error(CLASS_NAME, "The requested translation is
not available!" + selectedLanguage);
+ throw new MissingResourceException("The requested
translation ("+selectedLanguage+") hasn't been found!", CLASS_NAME,
selectedLanguage);
}
-
- currentClass = new L10n(AVAILABLE_LANGUAGES[0]);
- Logger.error(CLASS_NAME, "The requested translation is not
available!" + selectedLanguage);
- throw new MissingResourceException("The requested translation
("+selectedLanguage+") hasn't been found!", CLASS_NAME, selectedLanguage);
}
public static void setOverride(String key, String value) {
key = key.trim();
value = value.trim();
-
- // If there is no need to keep it in the override, remove it
- if("".equals(value) || L10n.getString(key).equals(value)) {
- translationOverride.removeValue(key);
- } else {
- // Is the override already declared ? if not, create it.
- if(translationOverride == null)
- translationOverride = new SimpleFieldSet(false);
-
- // Set the value of the override
- translationOverride.putOverwrite(key, value);
- Logger.normal("L10n", "Got a new translation key: set
the Override!");
+ synchronized (sync) {
+ // If there is no need to keep it in the override,
remove it
+ if("".equals(value) ||
L10n.getString(key).equals(value)) {
+ translationOverride.removeValue(key);
+ } else {
+ // Is the override already declared ? if not,
create it.
+ if(translationOverride == null)
+ translationOverride = new
SimpleFieldSet(false);
+
+ // Set the value of the override
+ translationOverride.putOverwrite(key, value);
+ Logger.normal("L10n", "Got a new translation
key: set the Override!");
+ }
+
+ // Save the file to disk
+ _saveTranslationFile();
}
- // Save the file to disk
- _saveTranslationFile();
}
private static void _saveTranslationFile() {
@@ -119,9 +123,7 @@
fos = new FileOutputStream(new File(L10n.PREFIX +
L10n.getSelectedLanguage() + L10n.OVERRIDE_SUFFIX));
bos = new BufferedOutputStream(fos);
- synchronized (translationOverride) {
-
bos.write(L10n.translationOverride.toOrderedString().getBytes("UTF-8"));
- }
+
bos.write(L10n.translationOverride.toOrderedString().getBytes("UTF-8"));
Logger.normal("L10n", "Override file saved
successfully!");
} catch (IOException e) {
@@ -140,7 +142,7 @@
* @return SimpleFieldSet or null
*/
public static SimpleFieldSet getCurrentLanguageTranslation() {
- synchronized (currentTranslation) {
+ synchronized (sync) {
return (currentTranslation == null ? null : new
SimpleFieldSet(currentTranslation));
}
}
@@ -151,7 +153,7 @@
* @return SimpleFieldSet or null
*/
public static SimpleFieldSet getOverrideForCurrentLanguageTranslation()
{
- synchronized (translationOverride) {
+ synchronized (sync) {
return (translationOverride == null ? null : new
SimpleFieldSet(translationOverride));
}
}
@@ -175,13 +177,15 @@
*/
public static String getString(String key, boolean
returnNullIfNotFound) {
String result = null;
- synchronized (translationOverride) {
- result = translationOverride.get(key);
+ synchronized (sync) {
+ if(translationOverride != null)
+ result = translationOverride.get(key);
}
if(result != null) return result;
- synchronized (currentTranslation) {
- result = currentTranslation.get(key);
+ synchronized (sync) {
+ if(currentTranslation != null)
+ result = currentTranslation.get(key);
}
if(result != null)
return result;
@@ -216,7 +220,7 @@
public static String getDefaultString(String key) {
String result = null;
// We instanciate it only if necessary
- synchronized (fallbackTranslation) {
+ synchronized (sync) {
if(fallbackTranslation == null)
fallbackTranslation =
loadTranslation(AVAILABLE_LANGUAGES[0]);
@@ -275,7 +279,7 @@
* @return String
*/
public static String getSelectedLanguage() {
- synchronized (currentClass) {
+ synchronized (sync) {
return currentClass.selectedLanguage;
}
}