[iOS]怎样在iOS开发中切换显示语言实现国际化
1.在Project设置,加入中英两种语言:
2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGxlYXNlY2FsbG1ld2h5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
3.加入一个字段,
在English中,加入:"SUBMIT_BTN_TITLE" = "Go";
在Chinese中,加入:"SUBMIT_BTN_TITLE" = "開始";
//
// GDLocalizableController.h
// guide-book
//
// Created by why on 7/16/14.
// Copyright (c) 2014 why. All rights reserved.
// #import <Foundation/Foundation.h> @interface GDLocalizableController : NSObject +(NSBundle *)bundle;//获取当前资源文件 +(void)initUserLanguage;//初始化语言文件 +(NSString *)userLanguage;//获取应用当前语言 +(void)setUserlanguage:(NSString *)language;//设置当前语言 @end //
// GDLocalizableController.m
// guide-book
//
// Created by why on 7/16/14.
// Copyright (c) 2014 why. All rights reserved.
// #import "GDLocalizableController.h" @implementation GDLocalizableController static NSBundle *bundle = nil; + ( NSBundle * )bundle{
return bundle;
}
+(void)initUserLanguage{ NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *string = [def valueForKey:@"userLanguage"];
if(string.length == 0){
//获取系统当前语言版本号
NSArray* languages = [def objectForKey:@"AppleLanguages"];
NSString *current = [languages objectAtIndex:0];
string = current;
[def setValue:current forKey:@"userLanguage"];
[def synchronize];//持久化。不加的话不会保存
} //获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@"lproj"];
bundle = [NSBundle bundleWithPath:path];//生成bundle
} +(NSString *)userLanguage{ NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *language = [def valueForKey:@"userLanguage"];
return language;
} +(void)setUserlanguage:(NSString *)language{ NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; //1.第一步改变bundle的值
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj" ];
bundle = [NSBundle bundleWithPath:path]; //2.持久化
[def setValue:language forKey:@"userLanguage"];
[def synchronize];
} @end
5. 自己定义一个宏方便处理:
// ----- 多语言设置
#define CHINESE @"zh-Hans"
#define ENGLISH @"en"
#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@"" table:nil]
6.使用:
[GDLocalizableController setUserlanguage:CHINESE];
NSLog(GDLocalizedString(@"SUBMIT_BTN_TITLE"));
[GDLocalizableController setUserlanguage:ENGLISH];
NSLog(GDLocalizedString(@"SUBMIT_BTN_TITLE"));
[iOS]怎样在iOS开发中切换显示语言实现国际化的更多相关文章
- FPGA开发中的脚本语言
多数FPGA开发者都习惯图形化界面(GUI).GUI方式简单易学,为小项目提供了一键式流程.然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率.因为GUI工具不能对整个开发过程提 ...
- ios 在storyboard 和 xib中,显示自定义view的预览效果
发现FSCalendar这个控件能在xib中显示预览效果,是怎么实现的呢?其中涉及的知识又有哪些? 主要就是IBInspectable 和 IB_DESIGNABLE 先看 IBInspectable ...
- ios开发中的C语言学习—— 结构体简介
在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...
- Web开发中的显示与隐藏
大多数编程语言,在平开发过程中,都是会遇到一些特殊的场景,需要实现显示或者隐藏来达到我们想要的效果:然而实现的方式有多种,今天就写一下,希望可以帮到各位. 小编我学习前端1年了,特意写写博客来回顾一下 ...
- CRM 2013 切换显示语言
想要更改显示需要,必须在服务器上安装语言包.不过语言包中仅包含系统的实体和字段的翻译,想要自定义的实体字段根据选择的语言变化,必须做好实体字段的翻译. 安装好语言包后,找到设置->管理-> ...
- QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言
1.效果如下图,开启就自动检测系统语言,选择系统语言显示, UI有控件设置,在中文和英文之间切换.. 2. 源码 dialog.h #ifndef DIALOG_H #define DIALOG_H ...
- developers.google.com上的开发者文档如何切换显示语言
一个小的tip,搜索到developers.google.com上的开发者文档,有些被翻译了的会自动显示中本版,如果想看英文版,可以在当前url后面加?hl=en,就会变成英文版.估计是根据地区直接推 ...
- iOS开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
- iOS - 开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
随机推荐
- 【BZOJ2565】最长双回文串 (Manacher算法)
题目: BZOJ2565 分析: 首先看到回文串,肯定能想到Manacher算法.下文中字符串\(s\)是输入的字符串\(str\)在Manacher算法中添加了字符'#'后的字符串 (构造方式如下) ...
- Hibernate自动事务揪出的编码不规范
最近重构的项目(Java初学中),Service层一个获取通知记录报错: org.springframework.dao.InvalidDataAccessResourceUsageException ...
- ubuntuKylin17.04重装KDE
不小心安装了一个不知道什么的东西,把libROS的那一套都给卸载了,然后删除掉了KDE的很多库.然后KDM也丢失了.KDE界面启动之后,plasma-desktop界面也启动不了.选择重装. 然而出现 ...
- THREE.js代码备份——webgl - scene animation(通过加载json文件来加载动画和模型)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js webgl - sc ...
- Sybase_ASA 字符串拼接
列转行并拼接字符串,使用LIST函数 SELECT LIST(T.NAME,',') FROM TAB_DEMO T;
- spring IOC bean间关系
1.0 继承关系 实体 package com.java.test5; import java.util.*; /** * @author nidegui * @create 2019-06-22 1 ...
- Ajax系列面试题总结
1.Ajax是什么?如何创建一个Ajax? Ajax并不算是一种新的技术,全称是asychronous javascript and xml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步 ...
- nodejs 文件操作模块 fs
const fs=require("fs"); //文件操作 //创建目录 ./ 代表当前目录 ../ 代表上级目录fs.mkdir('./test',function(err){ ...
- shell使用eval进行赋值bc计算,bad substitution
开始我认为是这样的: [root@jiangyi02.sqa.zmf /home/ahao.mah/ALIOS_TEST] #cat bbb.sh #!/bin/sh eval $1_new=123 ...
- Excel 导入 分批导入
tm.begin(); sm.begin(); try { result = excel.readE(headKeyV,path); for (int index = 1; index < re ...