• 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

Object Storage Arubacloud
0 głosów
952 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,280 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ź 417 wizyt
pytanie zadane 20 lutego 2017 w Java przez mo290103 Obywatel (1,860 p.)
0 głosów
0 odpowiedzi 229 wizyt
pytanie zadane 12 stycznia 2019 w Java przez Hardwell Dyskutant (8,980 p.)
0 głosów
0 odpowiedzi 142 wizyt
pytanie zadane 4 listopada 2016 w Android, Swift, Symbian przez GUNJack Użytkownik (520 p.)

92,619 zapytań

141,468 odpowiedzi

319,786 komentarzy

62,001 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...