6

iPhoneアプリをAndroidに移植していますが、文字列ファイルに問題があります。

このアプリは翻訳ツールであり、ユーザーは言語を切り替えることができるため、ローカライズされた文字列はすべて両方の言語であり、OSが実行しているロケールから独立しています。

iOSバージョンの場合、de.strings、en.strings、fr.stringsなどのさまざまなファイルがあります。指定された言語ペアを持つすべてのターゲットについて、文字列テーブルから文字列を読み取ります。たとえば、de-frの場合、プロジェクトにde.stringsとfr.stringsを含め、情報リストファイルに文字列テーブルの名前を設定して文字列を読み取ります。それらから。最終的に、さまざまなターゲット(さまざまな情報リストファイルを含む)を含む1つのプロジェクトがあり、すべてが適切に構成されています。

私はAndroidプラットフォームで同じことをするつもりですが、

  1. プロジェクトごとに1つのstrings.xmlのみが許可されていますか?

  2. 別のビルドターゲットを設定するにはどうすればよいですか?たとえば、私のdefrとde-enの翻訳アプリは、実際には2つのアプリであり、唯一の違いは言語のペアです。1つのプロジェクトを使用して2つのアプリを生成できるように設定するにはどうすればよいですか?XCodeでは簡単ですが、Eclipseを使用した解決策を見つけることができません。

  3. ターゲットごとにどのstrings.xmlを読み取る必要があるかを指定するにはどうすればよいですか?

回答ありがとうございますが、 OSロケールに依存しない言語設定が必要であることに注意してください。つまり、ユーザーがOSロケールをenからdeに変更した場合でも、アプリは英語でローカライズされた文字列を表示します。私が求めているのは、実際には、プリビルドのようなものを設定して、さまざまなターゲットに対してさまざまな文字列ファイルをロードする方法です。

4

4 に答える 4

9

ユーザー設定に応じた自動ロケール選択

strings.xmlには、英語を想定した元のテキストが含まれています。さまざまな言語への翻訳を作成するには、次のようなフォルダを作成できます 。ギリシャ語values-grvalues.it終わりのイタリア語の場合は、、。それらのフォルダにコピーstrings.xmlして翻訳するだけです。

アプリケーションの起動時に、OSはユーザーの好みに応じて言語を自動的に選択します。

手動でロケールを選択し、ユーザー設定を上書きします

たとえばギリシャ語を強制するには、次を使用できます。

Locale locale = new Locale("gr"); 
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

もちろん、これが機能するためにはギリシャ語の翻訳を提供する必要があります。

続きを読む

ここでドキュメントを確認できます: さまざまな言語のサポート-Android

于 2012-12-05T11:01:08.687 に答える
2

ローカライズされた文字列をvalues-es、values-de、values-frなどのさまざまなフォルダに配置する必要があります。

ファイルには、たとえばvaluesフォルダーに同じキーが含まれている必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello</string>
</resources>

値-esフォルダー内:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hola</string>
</resources>

等々。

于 2012-12-05T11:01:43.273 に答える
1

次の形式を使用して、翻訳する言語の言語ISOコードを追加する言語ごとに1つのvaluesフォルダーを作成する必要があります:values-es、values-de、...各フォルダーにstrings.xmlを追加する必要がありますその言語の文字列で。値フォルダー(国コードなし)がデフォルトの言語になります。

使用する文字列言語を選択するには、次のようにします。

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;

public class Main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String languageToLoad  = "fa"; // your language
    Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, 
    getBaseContext().getResources().getDisplayMetrics());
    this.setContentView(R.layout.main);
  }
}
于 2012-12-05T11:02:43.890 に答える
0

ad 1。いいえ、好きなだけ持つことができます。詳細については、を参照ad 3してください。

ad 2。????

ad 3。アプリで言語を選択するには、コンテキストを更新する必要があります。その後、適切なxmlが自動的に選択されます。これについて読んで、その方法を確認してください。

于 2012-12-05T11:10:11.013 に答える