Siirry pääsisältöön

Paikallinen hallinta 25.10

Avaa ChatGPT:ssä

webforJ tarjoaa sisäänrakennetun tuen sovelluksen paikallisen käytön hallintaan. Paikallinen asetus määrittää, mikä kieli ja alueellinen muotoilu käytetään koko sovelluksessa. Komponentit voivat reagoida paikallisiin muutoksiin LocaleObserver-rajapinnan kautta, jolloin käyttöliittymä päivittyy heti, kun käyttäjä vaihtaa kieltä.

Oletuspaikallisen asetuksen määrittäminen

Sovelluksen paikka voidaan määrittää käyttämällä webforj.locale-ominaisuutta. Tämä asettaa paikallisen asetuksen, jota sovellus käyttää käynnistyksessä, vaikuttaen kaikkiin paikallisiin muotoiluihin ja tekstiin. Kun webforj.locale ei ole määritetty, sovellus käyttää palvelimen JVM-osoitetta. Voit lukea nykyisen paikallisen asetuksen milloin tahansa kutsumalla App.getLocale().

Katso Configuration -osio oppiaksesi, kuinka määrittää ominaisuuksia eri ympäristöille.

Paikallisen asetuksen muuttaminen

Muuta paikallista asetusta ajonaikaisesti kutsumalla App.setLocale(). Tämä päivittää paikallisen asetuksen koko sovelluksessa ja ilmoittaa kaikille komponenteille, jotka toteuttavat LocaleObserver, mahdollistaen käyttöliittymän päivittymisen ilman sivun uudelleenlatausta.

App.setLocale(Locale.GERMAN);
App.setLocale(Locale.forLanguageTag("fr"));

Selaimen paikallisen havaitseminen 25.12

Kun automaattinen havaitseminen on käytössä, webforJ lukee selaimen suosimat kielet käynnistyksen yhteydessä ja asettaa sovelluksen paikallisen asetuksen parhaiten vastaavasta määritetystä tuetusta paikasta. Jos vastaavuutta ei löydy, ensimmäistä tuettua paikallista käytetään oletuksena.

Ota automaattinen havaitseminen käyttöön asettamalla webforj.i18n.auto-detect arvoksi true ja määrittämällä webforj.i18n.supported-locales sovelluksesi tukemat paikalliset asetukset. Katso Configuration -osio oppiaksesi, kuinka määrittää ominaisuuksia eri ympäristöille.

Tuetut paikalliset asetukset vaaditaan

Automaattinen havaitseminen edellyttää, että supported-locales on määritetty. Jos luettelo on tyhjentynyt, automaattinen havaitseminen ei vaikuta ja sovellus käyttää oletuspaikallista asetusta webforj.locale-mukaisesti.

LocaleObserver-rajapinta

Komponenttien, jotka tarvitsevat sisällön päivittämistä paikallisen muutoksen yhteydessä, tulee toteuttaa LocaleObserver-rajapinta. webforJ rekisteröi ja poistaa automaattisesti havaitsijat, kun komponentteja luodaan ja poistetaan.

LocaleObserver.java
@FunctionalInterface
public interface LocaleObserver {
void onLocaleChange(LocaleEvent event);
}

Kun paikallinen asetus muuttuu, onLocaleChange kutsutaan uudella paikallisella asetuksella. Tässä menetelmässä päivitä kaikki paikallisesti herkkä teksti tai muotoilu:

MainLayout.java
@Route
public class MainLayout extends Composite<AppLayout>
implements HasTranslation, LocaleObserver {

private AppLayout self = getBoundComponent();
private AppNavItem inboxItem;
private AppNavItem outboxItem;

public MainLayout() {
inboxItem = new AppNavItem(t("menu.inbox"), InboxView.class, TablerIcon.create("inbox"));
outboxItem = new AppNavItem(t("menu.outbox"), OutboxView.class, TablerIcon.create("send-2"));

AppNav appNav = new AppNav();
appNav.addItem(inboxItem);
appNav.addItem(outboxItem);

self.addToDrawer(appNav);
}

@Override
public void onLocaleChange(LocaleEvent event) {
inboxItem.setText(t("menu.inbox"));
outboxItem.setText(t("menu.outbox"));
}
}
Sisäänrakennettu käännöstuki

Versiosta 25.12 alkaen webforJ tarjoaa sisäänrakennetun käännösjärjestelmän, joka tukee resurssikokoelmia, mukautettuja ratkaisijoita, automaattista selaimen paikallisen havaitsemista ja paikallisesti herkkiä tietosidoksia.

LocaleEvent

LocaleEvent, joka välitetään onLocaleChange()-menetelmälle, tarjoaa uuden paikallisen asetuksen ja komponentin, joka sai tapahtuman:

MetodiPalauttaaKuvaus
getLocale()LocaleAsetettu uusi paikallinen asetus
getSource()ObjectKomponentti, joka sai tapahtuman

Manuaaliset paikalliset päivitykset

Kaikki komponentit eivät reagoi paikallisiin muutoksiin automaattisesti. Jotkut komponentit, kuten Masked Fields, lukevat App.getLocale() kerran luomisen aikana määrittääkseen paikallisesti herkän muotoilun, mutta eivät toteuta LocaleObserver. Kun paikallinen asetus muuttuu ajonaikaisesti, nämä on päivitettävä erikseen onLocaleChange()-käsittelijässä:

public class OrderForm extends Composite<FlexLayout> implements LocaleObserver {
private MaskedDateField dateField = new MaskedDateField("Date");
private MaskedTimeField timeField = new MaskedTimeField("Time");

@Override
public void onLocaleChange(LocaleEvent event) {
Locale newLocale = event.getLocale();
dateField.setLocale(newLocale);
timeField.setLocale(newLocale);
}
}
Tietosidonta

BindingContext tukee paikallisesti herkkiä vahvistus- ja muunnosviestejä. Katso dynaamiset vahvistusviestit ja paikallisesti herkät Jakarta- vahvistukset.