Fixed i18n and naming

This commit is contained in:
Willem Cazander 2022-03-15 00:41:40 +01:00
parent 231abff3fd
commit 2624eb4dea
19 changed files with 244 additions and 75 deletions

View file

@ -0,0 +1,119 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-glyphdemo</artifactId>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
org.osgi.framework,
org.osgi.service.packageadmin,
org.osgi.service.url,
org.osgi.service.startlevel,
org.osgi.util.tracker,
love.distributedrebirth.gdxapp4d.tos4.service,
love.distributedrebirth.gdxapp4d.vrgem4.service,
love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp,
com.badlogic.gdx,
com.badlogic.gdx.assets,
com.badlogic.gdx.assets.loaders,
com.badlogic.gdx.assets.loaders.resolvers,
com.badlogic.gdx.audio,
com.badlogic.gdx.files,
com.badlogic.gdx.graphics,
com.badlogic.gdx.graphics.g2d,
com.badlogic.gdx.graphics.g2d.freetype,
com.badlogic.gdx.graphics.g3d,
com.badlogic.gdx.graphics.g3d.attributes,
com.badlogic.gdx.graphics.g3d.decals,
com.badlogic.gdx.graphics.g3d.environment,
com.badlogic.gdx.graphics.g3d.loader,
com.badlogic.gdx.graphics.g3d.model,
com.badlogic.gdx.graphics.g3d.model.data,
com.badlogic.gdx.graphics.g3d.particles,
com.badlogic.gdx.graphics.g3d.particles.bactches,
com.badlogic.gdx.graphics.g3d.particles.emitters,
com.badlogic.gdx.graphics.g3d.particles.influencers,
com.badlogic.gdx.graphics.g3d.particles.renderers,
com.badlogic.gdx.graphics.g3d.particles.values,
com.badlogic.gdx.graphics.g3d.shaders,
com.badlogic.gdx.graphics.g3d.utils,
com.badlogic.gdx.graphics.g3d.utils.shapebuilders,
com.badlogic.gdx.graphics.glutils,
com.badlogic.gdx.graphics.profiling,
com.badlogic.gdx.input,
com.badlogic.gdx.maps,
com.badlogic.gdx.maps.objects,
com.badlogic.gdx.maps.tiled,
com.badlogic.gdx.maps.tiled.objects,
com.badlogic.gdx.maps.tiled.renderers,
com.badlogic.gdx.maps.tiled.tiles,
com.badlogic.gdx.math,
com.badlogic.gdx.math.collision,
com.badlogic.gdx.net,
com.badlogic.gdx.scenes.scene2d,
com.badlogic.gdx.scenes.scene2d.actions,
com.badlogic.gdx.scenes.scene2d.ui,
com.badlogic.gdx.scenes.scene2d.utils,
com.badlogic.gdx.utils,
com.badlogic.gdx.utils.async,
com.badlogic.gdx.utils.compression,
com.badlogic.gdx.utils.compression.lz,
com.badlogic.gdx.utils.compression.lzma,
com.badlogic.gdx.utils.compression.rangecoder,
com.badlogic.gdx.utils.reflect,
com.badlogic.gdx.utils.viewport,
imgui,
imgui.flag,
imgui.glfw,
imgui.gl3,
imgui.type,
net.spookygames.gdx.nativefilechooser,
love.distributedrebirth.bassboonyd,
love.distributedrebirth.bassboonyd.jmx,
love.distributedrebirth.numberxd,
love.distributedrebirth.numberxd.base2t,
love.distributedrebirth.numberxd.base2t.part,
love.distributedrebirth.numberxd.base2t.part.warp,
love.distributedrebirth.numberxd.base2t.type,
love.distributedrebirth.numberxd.base2t.typexl,
love.distributedrebirth.numberxd.glyph,
love.distributedrebirth.numberxd.x4o,
love.distributedrebirth.warpme,
love.distributedrebirth.warpme.core,
love.distributedrebirth.warpme.hash,
love.distributedrebirth.warpme.sea,
love.distributedrebirth.warpme.ship,
love.distributedrebirth.unicode4d,
love.distributedrebirth.unicode4d.atlas
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,54 @@
package love.distributedrebirth.gdxapp4d.app.glyphdemo;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoUnicodePlaneDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoGlyphSetDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoNumberPartDeskApp;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
@Component
public class GlyphDemoComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private VrGem4LocaleService localeService;
private final DeskAppLauncher unicodeLauncher;
private final DeskAppLauncher baseGlyphLauncher;
private final DeskAppLauncher basePartLauncher;
public GlyphDemoComponent() {
unicodeLauncher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "Demo Unicode Plane", () -> new DemoUnicodePlaneDeskApp(localeService));
baseGlyphLauncher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "Demo Glyph Set", () -> new DemoGlyphSetDeskApp(localeService));
basePartLauncher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "Demo Number Parts", () -> new DemoNumberPartDeskApp(localeService));
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(unicodeLauncher);
deskAppService.installDeskApp(baseGlyphLauncher);
deskAppService.installDeskApp(basePartLauncher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(unicodeLauncher);
deskAppService.removeDeskApp(baseGlyphLauncher);
deskAppService.removeDeskApp(basePartLauncher);
}
}

View file

@ -0,0 +1,99 @@
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImBoolean;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer;
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public class DemoGlyphSetDeskApp extends AbstractDeskApp {
private final VrGem4LocaleService localeService;
private final ImBoolean showBase27 = new ImBoolean(false);
public DemoGlyphSetDeskApp(VrGem4LocaleService localeService) {
this.localeService = localeService;
}
private String getTxt(String key) {
ResourceBundle bundle = ResourceBundle.getBundle("love.distributedrebirth.gdxapp4d.app.glyphdemo.Main", localeService.getTextLocale());
return bundle.getString(DemoGlyphSetDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, new DeskAppRenderer() {
@Override
public void render() {
ImGui.checkbox(getTxt("showBase27"), showBase27);
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("base-part", 3, flags);
ImGui.tableSetupColumn(getTxt("colScript"));
ImGui.tableSetupColumn(getTxt("col10Num"));
if (showBase27.get()) {
ImGui.tableSetupColumn(getTxt("col27Num"));
} else {
ImGui.tableSetupColumn(getTxt("col16Num"));
}
ImGui.tableHeadersRow();
for (BaseGlyphSet set:BaseGlyphSet.values()) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(set.BȍőnNaam());
ImGui.tableNextColumn();
ImGui.text(print10Numbers(set));
ImGui.tableNextColumn();
if (showBase27.get()) {
ImGui.text(print27Numbers(set));
} else {
ImGui.text(print16Numbers(set));
}
}
ImGui.endTable();
}
});
}
private String print10Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
for (int i=0;i<10;i++) {
buf.append(set.BȍőnPrintNumber10(i, 9));
buf.append(" ");
}
return buf.toString();
}
private String print16Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
if (set.BȍőnNumber16() == null) {
return buf.toString();
}
int x=240;
for (int i=0;i<16;i++) {
buf.append(set.BȍőnPrintNumber16(i + x, 16)); // hex; +one
buf.append(" ");
x = x - 16;
}
return buf.toString();
}
private String print27Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
if (set.BȍőnNumber27() == null) {
return buf.toString();
}
for (int i=0;i<27;i++) {
buf.append(set.BȍőnPrintNumber27(i, 26));
buf.append(" ");
}
return buf.toString();
}
}

View file

@ -0,0 +1,191 @@
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImBoolean;
import imgui.type.ImInt;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer;
import love.distributedrebirth.numberxd.base2t.Base2PartsFactory;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt1ʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt2ʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt3ʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt4ʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartʸᴰ;
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public class DemoNumberPartDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final VrGem4LocaleService localeService;
private ImInt selectedBasePart = new ImInt();
private final ImBoolean showBase10 = new ImBoolean(false);
private final ImBoolean showBase16 = new ImBoolean(false);
private final ImBoolean showBase27 = new ImBoolean(false);
public DemoNumberPartDeskApp(VrGem4LocaleService localeService) {
this.localeService = localeService;
}
private String getTxt(String key) {
ResourceBundle bundle = ResourceBundle.getBundle("love.distributedrebirth.gdxapp4d.app.glyphdemo.Main", localeService.getTextLocale());
return bundle.getString(DemoNumberPartDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
List<String> bases = new ArrayList<>();
for (int base:Base2PartsFactory.INSTANCE.BãßBases()) {
bases.add(Integer.toString(base));
}
String[] items = new String[bases.size()];
items = bases.toArray(items);
String selectedItem = items[selectedBasePart.get()];
Integer baseNumber = Integer.valueOf(selectedItem);
BãßBȍőnPartʸᴰ<?>[] baseParts = Base2PartsFactory.INSTANCE.BãßBuildPartsByBase(baseNumber);
ImGui.combo(getTxt("selectBase"), selectedBasePart, items);
ImGui.text(getTxt("selectName"));
ImGui.sameLine();
ImGui.text(baseParts[0].BãßClassNaam());
ImGui.text(getTxt("selectPurpose"));
ImGui.sameLine();
ImGui.text(baseParts[0].BãßClassPurpose());
ImGui.checkbox(getTxt("showBase10"), showBase10);
ImGui.checkbox(getTxt("showBase16"), showBase16);
ImGui.checkbox(getTxt("showBase27"), showBase27);
int columns = 10;
if (showBase10.get()) {
columns += 4;
}
if (showBase16.get()) {
columns += 4;
}
if (showBase27.get()) {
columns += 5;
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
ImGui.beginTable("base-part", columns, flags);
ImGui.tableSetupColumn("BȍőnNaam");
ImGui.tableSetupColumn("TelNul");
ImGui.tableSetupColumn("TelEen");
ImGui.tableSetupColumn("Tone");
if (showBase10.get()) {
ImGui.tableSetupColumn("10Tone");
ImGui.tableSetupColumn("10Kor");
ImGui.tableSetupColumn("10Beng");
ImGui.tableSetupColumn("10Arab");
}
if (showBase16.get()) {
ImGui.tableSetupColumn("16Tone");
ImGui.tableSetupColumn("16Kor");
ImGui.tableSetupColumn("16Runi");
ImGui.tableSetupColumn("16LatB");
}
if (showBase27.get()) {
ImGui.tableSetupColumn("27Tone");
ImGui.tableSetupColumn("27Kor");
ImGui.tableSetupColumn("27LatB");
ImGui.tableSetupColumn("27Gre");
ImGui.tableSetupColumn("27Mala");
}
ImGui.tableSetupColumn("prcK");
ImGui.tableSetupColumn("prcV");
ImGui.tableSetupColumn("Alt1");
ImGui.tableSetupColumn("Alt2");
ImGui.tableSetupColumn("Alt3");
ImGui.tableSetupColumn("Alt4");
ImGui.tableHeadersRow();
for (BãßBȍőnPartʸᴰ<?> part:baseParts) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(part.BȍőnNaam());
ImGui.tableNextColumn();
ImGui.text(Integer.toString(part.BȍőnRangTelNul()));
ImGui.tableNextColumn();
ImGui.text(Integer.toString(part.BȍőnRangTelEen()));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnDialTone());
if (showBase10.get()) {
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.TONE_SCRIPT));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.KOREAN));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.BENGALI));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.ARABIC));
}
if (showBase16.get()) {
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.TONE_SCRIPT));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.KOREAN));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.RUNIC));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.LATIN_BASIC));
}
if (showBase27.get()) {
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.TONE_SCRIPT));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.KOREAN));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.LATIN_BASIC));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.GREEK));
ImGui.tableNextColumn();
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.MALAYALAM));
}
ImGui.tableNextColumn();
ImGui.text(part.BȍőnChinaKey());
ImGui.tableNextColumn();
ImGui.text(part.BȍőnChinaValue());
ImGui.tableNextColumn();
if (part instanceof BãßBȍőnPartAlt1ʸᴰ) {
ImGui.text(BãßBȍőnPartAlt1ʸᴰ.class.cast(part).BȍőnAlt1Value());
} else {
ImGui.text("");
}
ImGui.tableNextColumn();
if (part instanceof BãßBȍőnPartAlt2ʸᴰ) {
ImGui.text(BãßBȍőnPartAlt2ʸᴰ.class.cast(part).BȍőnAlt2Value());
} else {
ImGui.text("");
}
ImGui.tableNextColumn();
if (part instanceof BãßBȍőnPartAlt3ʸᴰ) {
ImGui.text(BãßBȍőnPartAlt3ʸᴰ.class.cast(part).BȍőnAlt3Value());
} else {
ImGui.text("");
}
ImGui.tableNextColumn();
if (part instanceof BãßBȍőnPartAlt4ʸᴰ) {
ImGui.text(BãßBȍőnPartAlt4ʸᴰ.class.cast(part).BȍőnAlt4Value());
} else {
ImGui.text("");
}
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,64 @@
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer;
import love.distributedrebirth.unicode4d.UnicodePlaneᶻᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public class DemoUnicodePlaneDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final VrGem4LocaleService localeService;
public DemoUnicodePlaneDeskApp(VrGem4LocaleService localeService) {
this.localeService = localeService;
}
private String getTxt(String key) {
ResourceBundle bundle = ResourceBundle.getBundle("love.distributedrebirth.gdxapp4d.app.glyphdemo.Main", localeService.getTextLocale());
return bundle.getString(DemoUnicodePlaneDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("base-part", 2, flags);
ImGui.tableSetupColumn(getTxt("colPlane"));
ImGui.tableSetupColumn(getTxt("colText"));
ImGui.tableHeadersRow();
for (UnicodePlaneᶻᴰ plane:UnicodePlaneᶻᴰ.values()) {
if (plane.name().contains("SUPPLE")) {
continue;
}
if (plane.name().contains("EXTEN")) {
continue;
}
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(plane.name());
ImGui.tableNextColumn();
StringBuilder buf = new StringBuilder();
int offset = 33;
for (int i=plane.getStart()+offset;i<plane.getStart()+33+offset;i++) {
if (i < 65536) {
buf.append((char)i);
}
buf.append(" ");
}
ImGui.text(buf.toString());
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,18 @@
DemoGlyphSetDeskApp.title=Demo Glyph Set
DemoGlyphSetDeskApp.showBase27=Show base27
DemoGlyphSetDeskApp.colScript=Script
DemoGlyphSetDeskApp.col10Num=10Numbers
DemoGlyphSetDeskApp.col16Num=16Numbers
DemoGlyphSetDeskApp.col27Num=27Numbers
DemoNumberPartDeskApp.title=Demo Number Parts
DemoNumberPartDeskApp.selectBase=Base
DemoNumberPartDeskApp.selectName=Name:
DemoNumberPartDeskApp.selectPurpose=Purpose:
DemoNumberPartDeskApp.showBase10=Show base10
DemoNumberPartDeskApp.showBase16=Show base16
DemoNumberPartDeskApp.showBase27=Show base27
DemoUnicodePlaneDeskApp.title=Demo Unicode Plane
DemoUnicodePlaneDeskApp.colPlane=Unicode Plane
DemoUnicodePlaneDeskApp.colText=Example

View file

@ -0,0 +1,18 @@
DemoGlyphSetDeskApp.title=Demo Glyph Set
DemoGlyphSetDeskApp.showBase27=\uE219 \uE362 \uE0C0 \uE13F \uE2F4 \uE387 \uE400
DemoGlyphSetDeskApp.colScript=\uE2F4 \uE3A1 \uE08B \uE1CB \uE2AA \uE20F
DemoGlyphSetDeskApp.col10Num=\uE386 \uE216 \uE171 \uE153 \uE0C0 \uE08C \uE2F4
DemoGlyphSetDeskApp.col16Num=\uE386 \uE3FF \uE216 \uE171 \uE153 \uE0C0 \uE08C \uE2F4
DemoGlyphSetDeskApp.col27Num=\uE387 \uE400 \uE216 \uE171 \uE153 \uE0C0 \uE08C \uE2F4
DemoNumberPartDeskApp.title=Demo Number Parts
DemoNumberPartDeskApp.selectBase=\uE0C0 \uE13F \uE2F4
DemoNumberPartDeskApp.selectName=\uE216 \uE13F \uE153 \uE3EC
DemoNumberPartDeskApp.selectPurpose=\uE203 \uE171 \uE08C \uE203 \uE2F4 \uE3EC
DemoNumberPartDeskApp.showBase10=\uE219 \uE362 \uE0C0 \uE13F \uE2F4 \uE386
DemoNumberPartDeskApp.showBase16=\uE219 \uE362 \uE0C0 \uE13F \uE2F4 \uE386 \uE3FF
DemoNumberPartDeskApp.showBase27=\uE219 \uE362 \uE0C0 \uE13F \uE2F4 \uE387 \uE400
DemoUnicodePlaneDeskApp.title=Demo Unicode Plane
DemoUnicodePlaneDeskApp.colPlane=Unicode Plane
DemoUnicodePlaneDeskApp.colText=Example