当前位置: 首页 > news >正文

网站没备案可以访问吗徐州市制作网站

网站没备案可以访问吗,徐州市制作网站,做网站用哪个工具,广东网站建站公司在做 Android 开发的过程中#xff0c;经常会遇到多语言开发的场景#xff0c;尤其在车载项目中#xff0c;多语言开发更为常见。对应多语言开发#xff0c;通常都是在中文版本的基础上开发其他国家语言#xff0c;这里我们会拿到中-外语言对照表#xff0c;这里的工作难…        在做 Android 开发的过程中经常会遇到多语言开发的场景尤其在车载项目中多语言开发更为常见。对应多语言开发通常都是在中文版本的基础上开发其他国家语言这里我们会拿到中-外语言对照表这里的工作难度其实并不高但是工作量却是非常的大而且都是复制/粘贴的无聊操作如何能快速的完成这种简单重复的操作呢这里我们就来简单实现一下。 一、准备工作 1、多语言需求 假如我们需要中文、英文和俄文三种语言的开发同时我们拿到了多语言的翻译表格 模块namezhenruSystemUIcancel取消Cancelотменsave保存Saveсохранfile_name文件名称File NameИмя файлаLaunchersave_path保存路径Saved ToПуть сохранения.text_error_tip字数超过限制The number of words exceeds the limit.Число слов превышает предел 可以看到对于车载开发来说多语言开发肯定是所以应用都需要修改的这里以 SystemUI 和 Launcher 为例。其中 name 表示在 strings.xml 中的 name 字段zh、en 和 ru 分别表示中文、英文和俄文的简写。 2、制作xls表格 这里我们用的是 xls暂时只支持 xls 格式的表格解析的表格来罗列国际化的语言字段形如下表这样的 translation.xls。 这里使用两个 Sheet 分别存在 SystemUI 和 Launcher 多语言数据多模块继续增加 Sheet 即可这里的 Sheet 其实就是 string.mxl 的数量。再看一下 Launcher 的表格数据 表格转化  在实际的操作中我们创建的表格都是 xlsx 格式的表格文件直接转换一下即可操作如下 1点击表格左上角的文件。 2这里选择另存为或导出都可以。 3另存为在保存文件是将格式修改为 Excel 97-2003 工作簿即可。 同样选择导出时也是同样的选择 二、功能实现 这里我们选择使用 Android 项目来实现多语言 strings.xml 的自动化生成工作所以先创建一个 Android 项目然后按照下面的步骤一步一步实现即可。 1、依赖引用 我们是基于 jxl 进行所以还需要依赖一个 jxl。 dependencies{implementation net.sourceforge.jexcelapi:jxl:2.6.12 }2、解析工具类 实现 xls 文件解析及生成 strings.xml 的工具类。 import org.jxls.reader.XLSReader; import jxl.Workbook; import jxl.Sheet; import jxl.Cell; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.util.HashMap; import java.util.ArrayList; import java.util.Map;public class TranslationHandler {private static final HashMapInteger, String codeMap new HashMap();private static final HashMapString, ArrayListTranslationBean keyAndValueMap new HashMap();private static final String DIR /storage/emulated/0/Download/;private static final String XLS_PATH DIR translation.xls;private static final File xlsFile new File(XLS_PATH);private static final WorkbookSettings workbookSettings new WorkbookSettings();static {if (!codeMap.isEmpty()) codeMap.clear();if (!keyAndValueMap.isEmpty()) keyAndValueMap.clear();// 设置编码防止其他国字乱码workbookSettings.setEncoding(ISO-8859-1);}// 开始入口函数public static void startAnalyze(){int sheetNums 0;try{sheetNums Workbook.getWorkbook(xlsFile, worlkbookSettings).getNumberOfSheets();for (int sheetNum 0; sheetNum sheetNums; sheetNUm)// 第2列(columnB)开始国际化,一共有3列是需要国网示化handleXlsExcel(sheetNum, startColumn: 1, 3);}} catch (Exception e){e.printStackTrace();}/*** param sheetNum: 表示sheet页数量0表示第1张sheet* param startColumn: 从0开始第几列开始是国际化* param columnCount: 一共有多少列是国际化*/private static void handleXlsExcel(int sheetNum, int startColumn, int columnCount) throws Exception {// workbook 与 sheet 是一对一Workbook workbook Workbook.getWorkbook(xlsFile, workbookSettings);Sheet sheet workbook.getSheet(sheetNum);System.out.println(sheet0 sheet.getName());// 表示从第1行开始读取for (int row 0; row sheet.getRows(); row) {if (row 0) {for (int column 0; column columnCount; column) {int columnIndex startColumn column;// B1, C1, D1单元格的内容表示国家代码String code sheet.getCell(columnIndex, row).getContents();codeMap.put(columnIndex, code);keyAndValueMap.put(code, new ArrayList());}} else {// A1 ~ A[num] 单元格String key sheet.getCell(0, row).getContents();if (key null || .equals(key)) break;for (int column 0; column columnCount; column) {int columnIndex startColumn column;String code codeMap.getOrDefault(columnIndex, null);TranslationBean bean new TranslationBean(key,sheet.getCell(columnIndex, row).getContents());ArrayListTranslationBean translationList keyAndValueMap.get(code);if (translationList ! null) {translationList.add(bean);}}}}workbook.close();File dir new File(DIR, sheet.getName());if (!dir.exists()) dir.mkdir();// 使用 try-with-resources 确保文件流正确关闭for (String code : keyAndValueMap.keySet()) {File defaultDir new File(dir, values- code);if (!defaultDir.exists() !defaultDir.mkdirs()) {System.err.println(Failed to create directory: defaultDir.getAbsolutePath());continue;}File file new File(defaultDir, strings.xml);try {if (!file.exists() !file.createNewFile()) {System.err.println(Failed to create file: file.getAbsolutePath());continue;}System.out.println(Creating or updating file at: file.getAbsolutePath());try (BufferedWriter bw new BufferedWriter(new FileWriter(file))) {bw.write(resources);bw.newLine();for (TranslationBean value : keyAndValueMap.get(code)) {bw.write(\tstring name\ escapeXml(value.getKey()) \ escapeXml(value.getValue()) /string);bw.newLine();}bw.write(/resources);}System.out.println(成功生成文件: file.getAbsolutePath());} catch (Exception e) {e.printStackTrace();System.err.println(Error writing to file: file.getAbsolutePath());}}}private static String escapeXml(String input) {return input.replace(, amp;).replace(, lt;).replace(, gt;).replace(\, quot;).replace(, apos;);}static class TranslationBean {private final String key;private final String value;public TranslationBean(String key, String value) {this.key key;this.value value;}public String getKey() {return key;}public String getValue() {return value;}} } 这里只需要调用 startAnalyze() 方法就可以开始自动化生成多语言 strings.xml 文件但是需要有一个前提那就是在对应目录中放置上面的 .xls 文件这里我们放置在 /storage/emulated/0/Download/ 下文件名为 translation.xls。 2、开始接口调用 如果是调用开始接口是很简单的在我们的 Activity 中直接调用或者增加一个按钮再点击事件中调用 TranslationTools.startAnalyze() 方法即可。但是在 Android 文件读写是需要相关权限的这里我就直接上代码了对于代码的理解部分可以参考《Android 开发中的权限申请》。 添加静态权限 uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / uses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGEtools:ignoreScopedStorage / 增加动态权限 if(Build.VERSION.SDK_INTBuild.VERSION_CODES.M context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)! PackageManager.PERMISSION_GRANTED) {//请求权限((Activity)context).requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},1); } 外部权限设置 public static boolean checkStorageManagerPermission(Context context) {if (Build.VERSION.SDK_INT Build.VERSION_CODES.R !Environment.isExternalStorageManager()) {Intent intent new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);context.startActivity(intent);return false;}return true; } 在拿到所有权限后就可以调用上面的 startAnalyze() 开始接口了。 三、文件生成/导出 1、文件生成 在执行上面的 startAnalyze() 方法后会在同目录 /storage/emulated/0/Download/ 下生成如下结构的文件 这里 translation.xls 是我们最开始保存的 .xls 文件而 SystemUI 和 Launcher 文件夹及下面的文件则是我们执行完代码自动生成的。下面我们简单看一下其中的文件。 可以看到这里的 SystemUI 对应的多语言 strings.xml 文件都是与上面的 .xls 表格对应的。 2、文件导出 1在 Studio 中选择 View Tool Windows Device File Explorer就会显示虚拟机的存储信息。 2在虚拟机的存储设备中找到 mnt sdcard Download就会看到上面生成文件列表。 3选择对应文件保存到制定路径即可。
http://www.dnsts.com.cn/news/178340.html

相关文章:

  • godaddy中文网站开发宝和网站建设
  • 做网站前端需要编程基础吗易语言对做网站有什么帮助
  • 公司网站建设开发wordpress post表
  • 描述网站建设的基本流程图中英语双语网站咋做
  • 购物商城网站建设公司深圳电信网站备案
  • 江苏省建设厅官方网站资质查询wordpress 森林
  • 烟台百度做网站多少钱异构国际设计
  • 福州cms模板建站seo外链论坛
  • 北京市城乡结合部建设领导小组办公室网站优质的成都网站建设推
  • 郑州网站建设铁哥们个体户网上申报
  • 怎么建立自己网站视频广西南宁网站推广
  • 贵州建设厅报名登录网站建设银行网上营业厅官方网站下载
  • 苏州电子商务网站开发公司义乌商城网站开发
  • 鲜花网站建设项目策 划书黄冈网站建设效果
  • 白山市住房和建设局网站南宁网站建设兼职
  • 连州市网站建设wordpress清理软件
  • 做3d图的网站有哪些软件东莞市建设局网站首页
  • 深圳美容网站建网站和域名都注册怎么连接成网址
  • 12306网站谁建设的企业制作小程序
  • thinkphp 微网站开发如何选择wordpress主机
  • 做网站用那一种语言最好百度地图排名怎么优化
  • 内部网站建设appwordpress采集规则
  • 专业模板网站设计公司百度seo优化排名
  • 濮阳网站建设哪里便宜中国建设银行联行号查询网站
  • 设计素材网站飘集团网站建设方案书
  • 怎么用电脑windows做网站互联网技术的作用
  • 城市门户网站建设wordpress好用主题
  • 上海网站建设的价北京网站建设 seo公司哪家好
  • 绍兴做网站比较专业的公司一般通过会社员
  • 怎样开发设计网站建设百度如何添加店铺位置信息