Skip to content

Commit edde796

Browse files
committed
add tests + fix in locale
1 parent 6f98242 commit edde796

12 files changed

+842
-582
lines changed
Lines changed: 73 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,73 @@
1-
package net.lecousin.framework.locale;
2-
3-
import java.util.Iterator;
4-
import java.util.LinkedList;
5-
import java.util.List;
6-
7-
import net.lecousin.framework.concurrent.synch.AsyncWork;
8-
import net.lecousin.framework.concurrent.synch.JoinPoint;
9-
import net.lecousin.framework.exception.NoException;
10-
11-
/**
12-
* List of objects to concatenate to form a string, in which any object implementing ILocalizableString will be localized.
13-
*/
14-
public class LocalizableStringBuffer implements ILocalizableString {
15-
16-
/** Constructor. */
17-
public LocalizableStringBuffer(Object... list) {
18-
for (int i = 0; i < list.length; ++i)
19-
this.list.add(list[i]);
20-
}
21-
22-
private LinkedList<Object> list = new LinkedList<>();
23-
24-
/** Append the given object. */
25-
public void add(Object string) {
26-
list.add(string);
27-
}
28-
29-
@Override
30-
public AsyncWork<String, NoException> localize(String[] languageTag) {
31-
JoinPoint<NoException> jp = new JoinPoint<>();
32-
List<AsyncWork<String, NoException>> list = new LinkedList<>();
33-
for (Object o : list)
34-
if (o instanceof ILocalizableString) {
35-
AsyncWork<String, NoException> l = ((ILocalizableString)o).localize(languageTag);
36-
jp.addToJoin(l);
37-
list.add(l);
38-
}
39-
AsyncWork<String, NoException> result = new AsyncWork<>();
40-
jp.start();
41-
jp.listenInline(new Runnable() {
42-
@Override
43-
public void run() {
44-
Iterator<AsyncWork<String, NoException>> it = list.iterator();
45-
StringBuffer s = new StringBuffer();
46-
for (Object o : list) {
47-
if (o instanceof String)
48-
s.append((String)o);
49-
else if (o instanceof ILocalizableString)
50-
s.append(it.next().getResult());
51-
else
52-
s.append(o);
53-
}
54-
result.unblockSuccess(s.toString());
55-
}
56-
});
57-
return result;
58-
}
59-
60-
@Override
61-
public String localizeSync(String[] languageTag) {
62-
StringBuffer s = new StringBuffer();
63-
for (Object o : list) {
64-
if (o instanceof String)
65-
s.append((String)o);
66-
else if (o instanceof ILocalizableString)
67-
s.append(((ILocalizableString)o).localizeSync(languageTag));
68-
else
69-
s.append(o);
70-
}
71-
return s.toString();
72-
}
73-
}
1+
package net.lecousin.framework.locale;
2+
3+
import java.util.Iterator;
4+
import java.util.LinkedList;
5+
import java.util.List;
6+
7+
import net.lecousin.framework.concurrent.synch.AsyncWork;
8+
import net.lecousin.framework.concurrent.synch.JoinPoint;
9+
import net.lecousin.framework.exception.NoException;
10+
11+
/**
12+
* List of objects to concatenate to form a string, in which any object implementing ILocalizableString will be localized.
13+
*/
14+
public class LocalizableStringBuffer implements ILocalizableString {
15+
16+
/** Constructor. */
17+
public LocalizableStringBuffer(Object... list) {
18+
for (int i = 0; i < list.length; ++i)
19+
this.list.add(list[i]);
20+
}
21+
22+
private LinkedList<Object> list = new LinkedList<>();
23+
24+
/** Append the given object. */
25+
public void add(Object string) {
26+
list.add(string);
27+
}
28+
29+
@Override
30+
public AsyncWork<String, NoException> localize(String[] languageTag) {
31+
JoinPoint<NoException> jp = new JoinPoint<>();
32+
List<AsyncWork<String, NoException>> list = new LinkedList<>();
33+
for (Object o : this.list)
34+
if (o instanceof ILocalizableString) {
35+
AsyncWork<String, NoException> l = ((ILocalizableString)o).localize(languageTag);
36+
jp.addToJoin(l);
37+
list.add(l);
38+
}
39+
AsyncWork<String, NoException> result = new AsyncWork<>();
40+
jp.start();
41+
jp.listenInline(new Runnable() {
42+
@Override
43+
public void run() {
44+
Iterator<AsyncWork<String, NoException>> it = list.iterator();
45+
StringBuffer s = new StringBuffer();
46+
for (Object o : LocalizableStringBuffer.this.list) {
47+
if (o instanceof String)
48+
s.append((String)o);
49+
else if (o instanceof ILocalizableString)
50+
s.append(it.next().getResult());
51+
else
52+
s.append(o);
53+
}
54+
result.unblockSuccess(s.toString());
55+
}
56+
});
57+
return result;
58+
}
59+
60+
@Override
61+
public String localizeSync(String[] languageTag) {
62+
StringBuffer s = new StringBuffer();
63+
for (Object o : list) {
64+
if (o instanceof String)
65+
s.append((String)o);
66+
else if (o instanceof ILocalizableString)
67+
s.append(((ILocalizableString)o).localizeSync(languageTag));
68+
else
69+
s.append(o);
70+
}
71+
return s.toString();
72+
}
73+
}

net.lecousin.core/src/main/java/net/lecousin/framework/locale/LocalizedProperties.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ public void run() {
306306
if (!lang.loading.hasError())
307307
content = lang.properties.get(key.toLowerCase());
308308
if (content != null) {
309-
localize(key, content, values, result);
309+
localize(lang.tag, key, content, values, result);
310310
lang.lastUsage = System.currentTimeMillis();
311311
return;
312312
}
@@ -321,7 +321,19 @@ public void run() {
321321
load(ns, lang);
322322
}
323323

324-
private static void localize(String key, String content, Object[] values, AsyncWork<String, NoException> result) {
324+
private static void localize(String[] languageTag, String key, String content, Object[] values, AsyncWork<String, NoException> result) {
325+
for (int i = 0; i < values.length; ++i)
326+
if (values[i] instanceof ILocalizableString) {
327+
AsyncWork<String, NoException> l = ((ILocalizableString)values[i]).localize(languageTag);
328+
Object[] newValues = new Object[values.length];
329+
System.arraycopy(values, 0, newValues, 0, values.length);
330+
int ii = i;
331+
l.listenAsync(new Task.Cpu.FromRunnable(() -> {
332+
newValues[ii] = l.getResult();
333+
localize(languageTag, key, content, newValues, result);
334+
}, "Localization", Task.PRIORITY_NORMAL), true);
335+
return;
336+
}
325337
result.unblockSuccess(setCase(replaceValues(content, values), key));
326338
}
327339

0 commit comments

Comments
 (0)