iOS 需求 多语言(国际化)App开发 源码
一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
前言
某些公司希望App支持的多语言文件弄到线上去,通过下载多语言文件的方式或者通过接口请求json数据回来,进行多语言显示的方式,解决多语言的问题. 经过自己在网上查阅过很多资料跟我自己想的都是一致的,无论是下载文件读取,还是请求接口,都是返回json的形式,然后我去github搜索相关的SDK,也是使用json的方式来实现多语言数据的使用.
不能解决的问题
另外.其实多语言弄到线上去,最大的一个帮助就是,更新内容的时候,直接可以热更新,不需要重新提交审核,其实并不能完全很好的解决全部问题,
1.主要是app有新的页面(功能)开发,就需要有新增的字段,也是需要重新提交审核.(只能解决原有的字段内容更新)
2.如果从线上下载多语言的字段,为了防止下载失败,通常都会在项目放入一份多语言的json文件进行备份.而且要跟线上的保持一致.如果是这样的话,线上的那份就多此一举了.本地本身有一份跟线上的一模一样,就没有必要从网上拿,如果本地不备份存在安全隐患,万一接口访问失败,整个app有很大的影响
能解决的问题
1.如果字段的内容是由不同不部门或者受到区域限制的问题,可能放到线上,其他人修改比较方便
2.如果发现内容有问题,需要及时更改及时使用,需要等待审核这段时间.
多语言代码逻辑图
github上有一个DialectSDK,是用于多语言的开发,通过下载json文件,进行保存,可以加载本地的多语言文件保存到缓存中使用.从github下载是有问题的,上面源码的链接是已经修改好的
该第三方的思路是对的,符合公司的需求,但是该第三方下载下来,语法编译不通过,修改之后才能够进行使用,多语言文件的使用逻辑有问题,需求进行修改才能正常使用,我对该SDK已经修改好了
使用
从缓存中加载数据
Dialect 每次启动通过load方法读取
判断某个语言是否有数据
[Dialect localizationDictionaryForTable:@"en"]
加载本地文件并保存
NSData *enData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"en" ofType:@"json"]];
NSDictionary *enJson = [NSJSONSerialization JSONObjectWithData:enData options:NSJSONReadingMutableContainers error:nil];
[Dialect setMainLocalizationDictionary:enJson table:@"en" update:NO storeOnDisk:YES];
读取字段数据
[Dialect stringFor:@"message" table:@"zh"];
更新数据并保存
NSData *enData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"updateEn" ofType:@"json"]];
NSDictionary *enJson = [NSJSONSerialization JSONObjectWithData:enData options:NSJSONReadingMutableContainers error:nil];
[Dialect setMainLocalizationDictionary:enJson table:@"en" update:YES storeOnDisk:YES];
相关文章:

iOS 需求 多语言(国际化)App开发 源码
一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络࿰…...

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)
一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…...
std::vector<cv::Mat>和unsigned char** in_pixels 互相转换
将std::vectorcv::Mat转换为unsigned char** in_pixels, std::vector<cv::Mat> matVector; // 假设已经有一个包含cv::Mat的vector// 创建一个二维数组,用于存储像素数据 unsigned char** in_pixels new unsigned char*[matVector.size()]; for …...

04-Java建造者模式 ( Builder Pattern )
建造者模式 摘要实现范例 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象 一个Builder 类会一步一步构造最终的对象,该 Builder 类是独立于其他对象的 建造者模式属于创建型模式,它提供了一种创建对…...

使用PHPStudy搭建Cloudreve网盘服务
文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…...
Lua协程-coroutine
lua也有协程这个机制,用以完成非抢占式的多任务处理。 协程与线程 协程和线程类似,有自己的堆栈、局部变量、指令指针等等。但同时也有不一致的地方,其中最重要的地方在于多线程程序可以同一时间运行多个线程,而协程同一时间只能…...

HTML5+CSS3+移动web——HTML 基础
目录 一、标签语法 HTML的基本框架 1. 标题标签 2. 段落标签 3. 换行和水平线 4. 文本格式化标签 5. 图像标签 6. 路径 相对路径 绝对路径 7. 超链接标签 8. 音频 9. 视频 10. 注释 二、标签结构 一、标签语法 HTML 超文本标记语言——HyperText Markup Langua…...
Java中List接口的常用方法
列举一些List接口的常用方法 List接口是Java集合框架中的一个核心接口,它定义了一个有序的集合(也称为序列)。List接口继承自Collection接口,因此它包含了Collection接口中定义的所有方法,同时还增加了一些特定的方法…...
mysql基础从头到尾快速梳理
MYSQL数据库学习 mysql的启动 net start mysql net stop mysql MYSQL客户端的连接 mysql -h 127.0.0.1 -p 3306 -u root -p SQL SQL通用语法 SQL语句可以单行或者多行书写,以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性Mysql数据库的SQL语句不区分大…...

MySQL用心总结
大家好,好久不见,今天笔者用心一步步写一份mysql的基础操作指南,欢迎各位点赞收藏 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath mysqld_bin_path(注意:等号与值之间有空格) mysql -h 地址 -…...

电路设计(13)——生产线易拉罐自动计数装置的proteus仿真
1.设计要求 使用指定元件,用模电、数电等有关知识,设计并制作一个易拉罐饮料计数自动化的模拟装置。生产单位常采用红外自动计数装置,将装有饮料的易拉罐放在马达带动的传动带上,在传动带运动的过程中让每个易拉罐依次同一方向地穿…...

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)-2.0.1
客户端注册临时实例,GRPC处理 客户端服务发现 及订阅处理 客户端数据变换,数据推送,服务端集群服务数据同步...

编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署
背景 在新公司项目开发,当前项目为自建项目,意思是从开发到运维都需要自己负责,远程的服务器也是自己搭建的win操作系统; 之前在大厂工作时,一般提交代码之后,CICD流水线会自动的执行最新代码的拉取、构建打…...
深度学习如何入门?
深度学习是一个广泛且深入的领域,入门需要一些基础知识和学习资源。以下是一些推荐的步骤和资源: 数学基础:深度学习需要一些数学基础,包括线性代数、微积分、概率论和统计学。这些都是理解深度学习算法背后的原理的关键。 编程基…...
米哈游(原神)终面算法原题
恒大正式破产 准确来说,是中国恒大(恒大汽车、恒大物业已于 2024-01-30 复牌)。 恒大破产,注定成为历史的注目焦点。 作为首个宣布破产的房地产企业,恒大的破产规模也创历史新高。 房地产作为曾推动中国三分之一经济增…...
机器学习如何改变缺陷检测的格局?
机器学习在缺陷检测中扮演着重要的角色,它能够通过自动学习和识别各种缺陷的模式和特征,改变缺陷检测的格局。以下是机器学习在缺陷检测中的一些应用和优势: 自动化检测:机器学习技术可以自动化处理大量的数据,通过学…...
【Java万花筒】图数据库 vs 多模型数据库:哪种数据库适合你的应用场景?
解密图数据库与多模型数据库:特性、查询语言和成功案例的全景展示 前言 图数据库和多模型数据库在当今数据处理领域扮演着重要的角色。本文将介绍四个主要的图数据库和多模型数据库:Neo4j、Apache TinkerPop、JGraphT和ArangoDB,探索它们的…...

【射影几何13 】梅氏定理和塞瓦定理探讨
梅氏定理和塞瓦定理 目录 一、说明二、梅涅劳斯(Menelaus)定理三、塞瓦(Giovanni Ceva)定理四、塞瓦点的推广 一、说明 在射影几何中,梅涅劳斯(Menelaus)定理和塞瓦定理是非常重要的基本定理。通过这两个定…...

Powershell Install 一键部署Openssl+certificate证书创建
前言 Openssl 是一个方便的实用程序,用于创建自签名证书。您可以在所有操作系统(如 Windows、MAC 和 Linux 版本)上使用 OpenSSL。 Windows openssl 下载 前提条件 开启wmi,配置网卡,参考 自签名证书 创建我们自己的根 CA 证书和 CA 私钥(我们自己充当 CA)创建服务器…...

SERVLET线程模型
1. SERVLET线程模型 Servlet规范定义了两种线程模型来阐明Web容器应该如何在多线程环境中处理servlet。第一种模型称为多线程模型,默认在此模型内执行所有servlet。在此模型中,每次客户机向servlet发送请求时Web容器都启动一个新线程。这意味着可能有多个线程同时访问servle…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

python学习day39
图像数据与显存 知识点回顾 1.图像数据的格式:灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 import torch import torchvision import torch.nn as nn imp…...