質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

2回答

650閲覧

kotlin: Arraylist内にある複数のstringの多言語化について(Android studio)

Kotaro22

総合スコア21

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

1グッド

0クリップ

投稿2019/07/14 03:22

編集2019/07/14 04:24

おはようございます。Arraylistを使って複数のクイズ(string)を作ったのですが、最初の質問以外ローカライズ出来なくて困っています。上から2つ目のコード"QuizBank"クラス内にある"a01","a02"の様に、resourceフォルダのstrings.xml内に下記の様に設定してQuestionLabel1(textView)にリンクさせて表示させたいのですが、どの様にアプローチすれば良いかアドバイスを頂けないでしょうか? 私はkotlin, java共に初心者です。

<string name="a01">1. would you want..?</string>
<string name="a02">2. What day for...</string> <string name="a03">3. how you will...?</string>

最初にクイズの為の骨組みを作りました。

class QuizSystem { var questionText : String = "" constructor(question: String) { questionText = question }

次に別のクラスにクイズリスト作成

class QuizBank { var list = ArrayList<QuizSystem>() init { val item = QuizSystem("a01") list.add(item) list.add(QuizSystem(question = "a02")) list.add(QuizSystem(question = "a03")) list.add(QuizSystem(question = "a04")) list.add(QuizSystem(question = "a05")) }

最後に別のクラスに上記で作った内容を移動させてアプリに表示しているのですが最初の質問以外思った様にローカライズ出来ていません。

class QuizActivity : AppCompatActivity() { var allQuestions = QuizBank() var questionNumber: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_question_system) nextQuiz() finalTask.visibility = View.INVISIBLE setUpTranslation() } fun setUpTranslation() { for (x in 1..4) { //val str = resources.getString(R.string.test1) var str = getString(R.string.a01) questionLabel1.text = str questionLabel2.text = str } } fun nextQuiz() { val quiz = allQuestions.list[questionNumber].questionText if (questionNumber <= 3) { questionLabel1.text = allQuestions.list[questionNumber].questionText questionLabel2.text = allQuestions.list[questionNumber].questionText } else if (questionNumber == 4) { questionLabel1.text = allQuestions.list[questionNumber].questionText questionLabel2.text = allQuestions.list[questionNumber].questionText nQButton.visibility = View.INVISIBLE finalTask.visibility = View.VISIBLE } }
jimbe👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/14 03:59

見た感じ、2問目以降はa02, a03, ...という文字列を出すだけに見えますがどうなんでしょう? > 最初の質問以外思った様にローカライズ出来ていません。 とありますが、エスパーではないのでどういう想定なのかは分かりませんが。
Kotaro22

2019/07/14 04:11

> yukkeさん 返信ありがとうございます。 resourceファイル内のstrings.xmlに質問内容の記述を下記の様に入れてtextViewとリンクさせてa02,a03以降の文字列を表示させたいのですが1問目のローカライズ以外上手くいかない状態です。 <string name="a01">1. would you want..?</string> <string name="a02">2. What day for...</string> <string name="a03">3. how you will...?</string>
guest

回答2

0

ベストアンサー

コンテンツはリソースに入れないほうが良いように思います.
QAデータは言語毎にテキストファイル等にし, そのファイルの切り替えをリソースで行っては如何でしょう.

投稿2019/07/15 03:20

jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kotaro22

2019/07/15 11:49

> jimbeさん ご指摘ありがとうございます。自分が正しくjimbeさんのアドバイスを理解出来たかは怪しい所なのですが、QAデータを言語毎にテキストファイルにそれぞれ分け下記の様にファイルの引き出しを行なったら上手くローカライズ出来ました。これでやっと次に進む事が出来そうです。どうもありがとうございます。 val locale = Locale.getDefault() val lang = locale.language if (lang == "ja") {...
jimbe

2019/07/15 13:41 編集

langからファイル名を特定して読み込むようにされたのでしょうか. 私としては, 各言語毎のvaluesフォルダ内のstrings.xmlに(共通の名前で)その言語用のファイル名を定義し, それをgetStringするようなイメージでした. 例: values/strings.xml <string name="qafile">qafile_en.txt</string> values-ja/strings.xml <string name="qafile">qafile_ja.txt</string> ファイル名取り込みコード filename = getString(R.string.qafile)
Kotaro22

2019/07/17 00:47

おはようございます。その方法で結びつける事が出来るのを知りませんでした。一通り作業が終わったら確認/復習としてvalueからファイルを定義する方法を実践してみて今後に活かせる様に自分の知識として取り入れようと思います。
guest

0

コードを眺めてて、色々修正が必要そうな気がしますが、
とりあえずテキストの取得にだけ焦点を当てます。

まず、問題のリストを作成したいのであれば、

Kotlin

1val questionList : ArrayList<String> = arrayListOf(getString(R.string.a01), getString(R.string.a02), getString(R.string.a03), getString(R.string.a04), getString(R.string.a05))

のように文字列を取得してそれを配列やリストにするか、

Kotlin

1val questionList : ArrayList<Integer> = arrayListOf(R.string.a01, R.string.a02, R.string.a03, R.string.a04, R.string.a05)

のようにIDを配列にして、textViewに入れるという手があります。

まずはそれで取得できるようにしてみてはいかがでしょうか。

投稿2019/07/14 06:50

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kotaro22

2019/07/15 11:43

> yukke_さん 具体的なアドバイスをありがとうございます。昨日の助言をしてもらった時から寝食以外の時間を使い配列でローカライズさせようとしたのですが自分のkotlinへの理解が足りないのが原因で上手くまとめることが出来ませんでした。今後はより知識の吸収に時間を充て頂いたアドバイスを有効活用出来る様に努力します。丁寧な対応本当にどうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問