• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Android studio dodanie tłumaczenia na inny język w java

0 głosów
1,475 wizyt
pytanie zadane 3 listopada 2018 w Java przez PiotrSQ Nowicjusz (210 p.)

Witam

Potrzebuje pomocy w tłumaczeniu tekstu na inny język np.polski na angielski (jeśli użytkownik bedzię miał androida w języku angielskim to tekst będzie w tym języku. Język polski bedzie domyślnym językiem)

co muszę dodać by przetłumaczyć opis na język angielski ktory już dodam przez strings.xml ?

p = new Model();
        p.setTitle("przykładowy tytuł");
        p.setDescription("opis do tłumaczenia");
        models.add(p);
p = new Model();
        p.setTitle("inny tytuł");
        p.setDescription("następny tekst do tłumaczenia");
        models.add(p);

niestety tekst który się wyświetla jest z java.class a nie z .xml więc potrzebuje jakoś sprecyzować to w java .

jeśli nie dodałem czegoś istotnego lub coś jest niejasne bardzo proszę o uwagę dziękuje :).

komentarz 3 listopada 2018 przez mbabane Szeryf (79,260 p.)

Jeśli masz problem z tym co myślę (czyli tak ogólnie jak to zrobić) to dam taką wskazówkę, że w zwykłej javie desktopowej i w webowej, robi się to poprzez pliki ResourceBundle  -> https://docs.oracle.com/javase/tutorial/i18n/resbundle/propfile.html

Na androidowym devie za bardzo się nie znam, ale pewnie robi się to bardzo analogicznie. Tym bardziej, że to Java, a wydaje mi się, że kiedyś gdzieś czytałem, że w Javie napiszesz coś raz i możesz uruchomić to wszędzie... laugh

Jak coś to w google wpisz coś w stylu android java internacjonalizacja, a najlepiej po ang.

2 odpowiedzi

+3 głosów
odpowiedź 4 listopada 2018 przez JAKUBW Nałogowiec (33,470 p.)
wybrane 4 listopada 2018 przez PiotrSQ
 
Najlepsza

Robisz tak:

Wszystkie stringi zapisujesz w pliku strings.xml (on jest domyślnie utworzony w res/values/). Tam zapisujesz jako domyślne wartości (w języku angielskim) w takiej postaci:

<string name="app_name">My awesome application</string>
<string name="are_you_sure">Are you sure my friend?</string>

Następnie gdy chcesz go wziąć w JAVA to piszesz:

String appName = getString(R.string.app_name); 

Tutaj automatycznie zostanie zwrócone obsługiwane tłumaczenie.

Wiele klas ma zaimplementowane te getStringi więc możesz robić tak:

TextView tv = findViewById<TextView>(R.id.some_text_view);


tv.setText(R.string.app_name);

tv.setText(getString(R.string.app_name));

Te zapisy są równoznaczne ze sobą.

Gdy będziesz chciał ustawić tekst w layoutcie w XMLu to piszesz:

<TextView
            android:text="@string/app_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

Troszkę więcej zabawy jest z formatowaniem stringów np. gdy chcesz wyświetlić "Witaj Jakub, masz 5 wiadomości!", bo tutaj musisz wstawić dwie wartości, robi się to tak:

W xmlu:

<string name="welcome_text">Hello %s, you have %i new messages!</string>

I w JAVA:

String name = "Jakub";
int messages = 5
String displayedText = getString(R.string.welcome_text, name, messages);

Teraz gdy już umiesz korzystać z XML u getString to czas na tłumaczenie na język polski (i każdy inny).

W pliku strings.xml klikasz na górze "Open editor" i otwiera ci się edytor tłumaczeń, teraz klikasz plusik, wybierasz język polski i piszesz w tabelce tłumaczenia. Ewentualnie można po prostu wpisać w pliku strings-PL.xml (czy jak on się nazywa) wartości:

<string name="app_name">Moja wspaniała aplikacja</string> 
<string name="are_you_sure">Jesteś pewny mój przyjacielu?</string>
<string name="welcome_text">Cześć %s, masz %i nowych wiadomości!</string>

 

Warto wspomnieć, że możesz automatycznie konwertować stringi na zasobowe stringi. Gdy masz kursor do pisania w nich naciśnij ALT+ENTER i wybierz "Extract string resource"

Aha, no i oczywiście robienie tłumaczeń nie należy do najfajniejszych (przynajmniej ja tak sądzę) i powinno się je robić na końcu - przed udostępnieniem aplikacji.

0 głosów
odpowiedź 4 listopada 2018 przez PiotrSQ Nowicjusz (210 p.)
Dzięki

Przemyślałem i lepiej w praktyce wyjdzie przetłumaczenie całej aplikacji. Ktos sie orientuje czy jest to możliwe ? Chodzi o to czy jest jakis skrypt czy cos zeby przy zmianie języka skrypt wychwycił każdy tekst w aplikacji i przetłumaczyl

Podobne pytania

0 głosów
1 odpowiedź 679 wizyt
pytanie zadane 20 lutego 2017 w Java przez mo290103 Obywatel (1,860 p.)
0 głosów
0 odpowiedzi 293 wizyt
pytanie zadane 12 stycznia 2019 w Java przez Hardwell Dyskutant (9,060 p.)
0 głosów
0 odpowiedzi 265 wizyt
pytanie zadane 4 listopada 2016 w Android, Swift, Symbian przez GUNJack Użytkownik (520 p.)

93,731 zapytań

142,669 odpowiedzi

323,286 komentarzy

63,291 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...