2016-05-09 26 views
5

Localize-Swiftライブラリ(Link)を使用してアプリケーションをローカライズすると、.stringsファイルが正常に動作します。問題は、私が左にある言語にローカライズしなければならないことと、Interface Builder Storyboardを使用してローカライズする必要があるため、RTL形式でView Controllerを正しく表示できるようにすることです。質問は、私はどのようにリアルタイムでユーザーが選択した言語にストーリーボードを設定するのですか?例えばSwift:アプリ内で言語を変更する方法は?

私は2つのストーリーボードファイルを持っている:

の1- ... /ProjectName/Base.lproj/Main.storyboard

2 - ... /ProjectName/fa-IR.lproj/Mainを.storyboard

どうやってリアルタイムで切り替えるのですか?

私はすでに私がスキームとデバイス言語でそれを変更することができますが、私はそれをリアルタイムでやりたいと思います、私は自分のデバイスを再起動したくないです。

おかげ

+1

私は同じ問題を抱えていましたが、私と協力して解決策を投稿しました:http://stackoverflow.com/a/37111734/1752899 –

答えて

5

は私の答えを見つけました! 誰かがアプリケーションを再起動しない解決策を見つけられる場合は、私に知らせてください。

+1

あなたの質問に私のコメントをチェックしてください。私は再起動せずにアプリケーションをローカライズしています –

+0

@HossamGhareeb。アプリを再起動せずにどうすれば達成できますか?私に教えてください。 –

3

あなたはNSBundle+Languageサードパーティのクラスを使用することができます。

NSUserDefaults.standardUserDefaults().setObject(["language identifier"], forKey: "AppleLanguages") 
NSUserDefaults.standardUserDefaults().synchronize() 

残念ながら、ユーザーはアプリを再起動する必要があります。

+0

あなたのソリューションは非常に短く、私はそれを早く見つけましたが、試していませんでした。私はこれを試してみました。幸い..私はこれを使いました:https://github.com/maximbilan/ios_language_managerこれはまったく同じコード(コピー貼りか?!?)ですが、追加、バグ、使用例実行中のアプリ。 10分は私のプロジェクトで実装されました=] – Yitzchak

0

the RSMultiLanguage podはあなたのために何か便利ですか?私は自分のアプリでそれを使っており、アプリでユーザーの言語を変更する可能性があります。私はあなたがifループを使ってユーザの場所に応じて設定できることを確信しています。そうすれば、アプリを再起動する必要がないかもしれません。

RSMultiLanguage

、サンプルプロジェクトを実行レポのクローンを作成し、第1例のディレクトリからインストールポッドを実行するには使用

インストール

RSMultiLanguageはCocoaPodsを通じて利用可能です。それをインストールするには、単にあなたのPodfileに次の行を追加します。

pod "RSMultiLanguage" 

著者

ロイン、[email protected]

ライセンス

RSMultiLanguageは下に提供されていますMITライセンス。詳細については、LICENSEファイルを参照してください。

0
  1. アプリを再起動する必要があります。以下のコード行に従ってください。forKey: "AppleLanguages") UserDefaults.standard.synchronize(

  2. アプリケーションの再起動は不要です(提供されたソースコードでのカスタマイズが必要な場合があります)。提供されたWebリンクに従います。

http://www.factorialcomplexity.com/blog/2015/01/28/how-to-change-localization-internally-in-your-ios-application.html

1

私はKababChiの答えは正しかったと思います。しかし、Swiftの新しいバージョンではNSUserDefaultsUserDefaultsに置き換えられました。だから、コードは次のようになります

UserDefaults.standard.set(languages[indexPath.row], forKey: "AppleLanguages") 
UserDefaults.standard.synchronize() 

のAppは、まだこれらの変更を適用するために再起動する必要があります。

関連する問題