Skip to content

Commit 92709bd

Browse files
author
杨利兵
committed
添加IOS Strings资源输出功能
1 parent 09dfa5e commit 92709bd

File tree

6 files changed

+104
-19
lines changed

6 files changed

+104
-19
lines changed

src/com/yanglb/utilitys/codegen/core/generator/impl/MsgGeneratorImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ protected void onGeneration() throws CodeGenException {
6868
supportTrans = SupportGen.msg_json_translator;
6969
} else if (this.paramaModel.getLang() == SupportLang.cs) {
7070
supportTrans = SupportGen.msg_cs_translator;
71+
} else if (this.paramaModel.getLang() == SupportLang.ios) {
72+
supportTrans = SupportGen.msg_ios_translator;
7173
}
7274

7375
// 转换为可写入的Model(单个文件)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/**
2+
* Copyright 2020 yanglb.com
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.yanglb.utilitys.codegen.core.translator.impl;
17+
18+
import java.util.HashMap;
19+
import java.util.Map;
20+
21+
import com.yanglb.utilitys.codegen.core.model.TableModel;
22+
import com.yanglb.utilitys.codegen.core.translator.BaseMsgTranslator;
23+
import com.yanglb.utilitys.codegen.exceptions.CodeGenException;
24+
import com.yanglb.utilitys.codegen.utility.MsgUtility;
25+
import com.yanglb.utilitys.codegen.utility.StringUtility;
26+
27+
public class MsgIOSTranslatorImpl extends BaseMsgTranslator {
28+
@Override
29+
protected void onBeforeTranslate() throws CodeGenException {
30+
super.onBeforeTranslate();
31+
32+
this.writableModel.setExtension("strings");
33+
String path = (this.isDefaultLanguage() ? "Base" : this.msgLang) + ".lproj";
34+
this.writableModel.setFilePath("msg/strings/" + path);
35+
36+
// 文件名
37+
String fileName = getFileName();
38+
this.writableModel.setFileName(fileName);
39+
}
40+
41+
@Override
42+
protected void onTranslate() throws CodeGenException {
43+
super.onTranslate();
44+
StringBuilder sb = this.writableModel.getData();
45+
46+
sb.append(this.settingMap.get("head"));
47+
// 替换标记
48+
String s = this.replaceFlags(sb.toString(), null);
49+
sb = new StringBuilder(s);
50+
51+
// 用于检查相同的key
52+
Map<String, Boolean> keys = new HashMap<String, Boolean>();
53+
for(TableModel tblModel : this.model) {
54+
for(Map<String, String> itm : tblModel.toList()) {
55+
String id = itm.get("id");
56+
if(StringUtility.isNullOrEmpty(id)) continue;
57+
if (keys.containsKey(id)) throw new CodeGenException(String.format(MsgUtility.getString("E_013"), id));
58+
keys.put(id, true);
59+
60+
// 对字符串进行转换
61+
String value = this.convert2CSCode(itm.get(this.msgLang));
62+
sb.append(String.format("\"%s\" = \"%s\";\r\n", id, value));
63+
}
64+
}
65+
66+
this.writableModel.setData(sb);
67+
}
68+
69+
private String convert2CSCode(String value) {
70+
if(value == null) return null;
71+
72+
// 先替换\r\n,防止有文档只有\r或\n 后面再替换一次
73+
value = value.replaceAll("\r\n", "\\\\r\\\\n");
74+
value = value.replaceAll("\r", "\\\\r\\\\n");
75+
value = value.replaceAll("\n", "\\\\r\\\\n");
76+
return value;
77+
}
78+
}

src/com/yanglb/utilitys/codegen/support/SupportGen.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,25 @@
1616
package com.yanglb.utilitys.codegen.support;
1717

1818
public enum SupportGen {
19-
// reader
20-
ddl_reader, // com.yanglb.utilitys.codegen.core.reader.impl.DdlReaderImpl
21-
dml_reader, // com.yanglb.utilitys.codegen.core.reader.impl.DmlReaderImpl
22-
hashmap_reader, // com.yanglb.utilitys.codegen.core.reader.impl.HashMapReaderImpl
23-
setting_reader, // com.yanglb.utilitys.codegen.core.reader.impl.SettingReaderImpl
24-
table_reader, // com.yanglb.utilitys.codegen.core.reader.impl.TableReaderImpl
19+
// reader
20+
ddl_reader,
21+
dml_reader,
22+
hashmap_reader,
23+
setting_reader,
24+
table_reader,
2525

26-
// translator
27-
ddl_mysql_translator, // com.yanglb.utilitys.codegen.core.translator.impl.DdlMysqlTranslatorImpl
28-
ddl_sqlite_translator, // com.yanglb.utilitys.codegen.core.translator.impl.DdlSqliteTranslatorImpl
29-
ddl_sqlserver_translator, // com.yanglb.utilitys.codegen.core.translator.impl.DdlSqlServerTranslatorImpl
30-
dml_translator, // com.yanglb.utilitys.codegen.core.translator.impl.DmlTranslatorImpl
31-
msg_js_translator, // com.yanglb.utilitys.codegen.core.translator.impl.MsgJsTranslatorImpl
32-
msg_json_translator, // com.yanglb.utilitys.codegen.core.translator.impl.MsgJsonTranslatorImpl
33-
msg_java_translator, // com.yanglb.utilitys.codegen.core.translator.impl.MsgJavaTranslatorImpl
34-
msg_cs_translator,
26+
// translator
27+
ddl_mysql_translator,
28+
ddl_sqlite_translator,
29+
ddl_sqlserver_translator,
30+
dml_translator,
31+
msg_js_translator,
32+
msg_json_translator,
33+
msg_java_translator,
34+
msg_cs_translator,
35+
msg_ios_translator,
3536

36-
// writer
37-
utf8_writer, // com.yanglb.utilitys.codegen.core.writer.impl.Utf8WriterImpl
38-
ascii_writer, // com.yanglb.utilitys.codegen.core.writer.impl.AsciiWriterImpl
37+
// writer
38+
utf8_writer,
39+
ascii_writer,
3940
}

src/com/yanglb/utilitys/codegen/support/SupportLang.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ public enum SupportLang {
2525
sql,
2626
js,
2727
json,
28-
cs
28+
cs,
29+
ios
2930
}

src/conf/CodeGenerator.xlsx

1.33 KB
Binary file not shown.

src/conf/conf.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ msg_js=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
2727
msg_json=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
2828
msg_java=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
2929
msg_cs=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
30+
msg_ios=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
31+
msg_android=com.yanglb.utilitys.codegen.core.generator.impl.MsgGeneratorImpl
3032

3133
# reader
3234
ddl_reader=com.yanglb.utilitys.codegen.core.reader.impl.DdlReaderImpl
@@ -44,6 +46,7 @@ msg_js_translator=com.yanglb.utilitys.codegen.core.translator.impl.MsgJsTranslat
4446
msg_json_translator=com.yanglb.utilitys.codegen.core.translator.impl.MsgJsonTranslatorImpl
4547
msg_java_translator=com.yanglb.utilitys.codegen.core.translator.impl.MsgJavaTranslatorImpl
4648
msg_cs_translator=com.yanglb.utilitys.codegen.core.translator.impl.MsgCSTranslatorImpl
49+
msg_ios_translator=com.yanglb.utilitys.codegen.core.translator.impl.MsgIOSTranslatorImpl
4750
po_cs_translator=com.yanglb.utilitys.codegen.core.translator.impl.PoCSharpTranslatorImpl
4851

4952
# writer

0 commit comments

Comments
 (0)