今回はこの外国語対応(ローカライズ対応)を行う方法についてご紹介します。
Pocket Note supports eleven languages, English, Japanese, Russian, French etc.
I write how to localize an application to support multiple languages this time.
環境(Environment): Xcode 8, Swift 3
まず[PROJECT]の[info]-[Localizations]を選択し、[+]を押下し追加する言語を選択します。
At first,select [info]-[Localizations] in [PROJECT] and click [+] and select languages which you want to add.
次にプロジェクトにStringsファイルを追加し、ファイル名を「Localizable.strings」とします。(必ずこのファイル名でなくてはなりません。)
Next,add Strings file to project, and name it "Localizable.strings".(You must specify this file name.)
次にLocalizable.stringsを選択し[Localize...]をクリックします。
Next, select localizable.string and click [Localize...].
その後、ベースとなる英語以外の言語を選択します。
すると選択した言語のLocalizable.stringsができます。
And select language except base language.
And Localizable.string of selected languages is made.
プログラム内でローカライズ対応を行うメッセージはNSLocalizedStringで定義します。
Specify localizable message using NSLocalizedString in program.
形式(Format):NSLocalizedString("Key",comment:"")
Keyは英語の文言にするといいでしょう。(Localizable.stringに設定がない言語ではKey名がそのまま表示されるため。)
commentは特に使用しません。
It is good to specify English's message to Key.(Because key is displayed when Localized.string of iOS's language is nothing.)
Comment isn't used.
let title:String = NSLocalizedString("Do you delete this document?", comment: "")
そして先ほど作成したLocalizable.stringに [Key名 = "それぞれの言語のメッセージ"; ]の形式で記載します。
And write [Key = "message of various languages";] on Localizable.string.
Localizable.strings(Japanese)
"Do you delete this document?" = "このドキュメントを削除しますか?";
ではコード全文を見てみましょう。
Let's write the full text of code.
ViewController.swift
import UIKit
class ViewController: UIViewController {
let buttonDelete:UIButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
buttonDelete.frame = CGRect(x:10,y:50,width:200,height:50)
buttonDelete.setTitle(NSLocalizedString("Delete",comment:""), for: .normal)
buttonDelete.setTitleColor(UIColor.blue, for: .normal)
buttonDelete.layer.borderColor = UIColor.blue.cgColor
buttonDelete.layer.borderWidth = 1
buttonDelete.addTarget(self, action: #selector(self.touchUpButtonDelete), for: .touchUpInside)
self.view.addSubview(buttonDelete)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//Tap buttonDelete
func touchUpButtonDelete(){
let title:String = NSLocalizedString("Do you delete this document?", comment: "")
let alert = UIAlertController(title:title,message:"",preferredStyle:.alert)
alert.addAction(UIAlertAction(title:NSLocalizedString("OK",comment:""),style:.default,handler:nil))
self.present(alert,animated:true,completion:nil)
}
}
Localizable.strings(Japanese)
"Delete" = "削除";
"Do you delete this document?" = "このドキュメントを削除しますか?";
"OK" = "OK";
Localizable.strings(French)
"Delete" = "effacer";
"Do you delete this document?" = "Voulez-vous supprimer ce document ?";
"OK" = "Accepter";
実機もしくはシミュレーターの[設定]-[一般]-[言語と地域]で言語を変更すると、正しくローカライズされていることを確認できます。
If you change language in [Settings]-[General]-[Language&Region] of real machine or simulator, you can confirm that your application is localized correctly.
[関連記事(Articles)]
[iOS]How to localize App Extensions
にほんブログ村
クリエイティブライフ ブログランキングへ
0 件のコメント:
コメントを投稿