Monikielisten verkkosovellusten kehittäminen ei ole enää vapaaehtoista nykypäivän globaalissa digitaalisessa maisemassa. Käyttäjät odottavat vuorovaikutteista sisältöä äidinkielellään ja tarjoavat kokemusta suoraan vaikuttamisesta sitoutumiseen, muuntamiseen ja markkinoiden laajentamiseen. Model-View-Controller (MVC) -malli yhdistettynä vankkaan lokalisointitekniikkaan tarjoaa todistetun arkkitehtuurin skaalautuvien, ylläpidettävissä olevien monikielisten sovellusten rakentamiseen. Tämä artikkeli kulkee läpi ydinkonseptien, käytännön toteutusvaiheiden ja parhaiden käytäntöjen tuoda useita kieliä MVC-pohjaiseen verkkoprojektiisi.

MVC-malli: Natural Fit for Locatization

MVC-arkkitehtuuri jakaa sovelluksen kolmeen toisiinsa liitettyyn osaan: malliin, näkymään ja ohjaimeen. Tämä huolenaiheiden erottaminen on erityisen tärkeää, kun lisätään monikielistä tukea, koska jokaista osaa voidaan laajentaa tai muuttaa kansainvälistymiseen (i18n) ja lokalisointiin (l10n) vaikuttamatta muihin.

  • Malli:[ Hallitsee tietoa ja liiketoiminnan logiikkaa. Monikielisissä sovelluksissa mallin on säilytettävä tai haettava kielikohtaista sisältöä joko tietokannasta, API:sta tai resurssitiedostoista.
  • Näytä:[ Käsittelee esityskerrosta. Näkymät käyttävät paikallisia merkkijonoja, päivämäärä/numeromuotoilua ja suunta-aware-asetteluja (RTL/LTR) näyttääkseen sisällön oikein kullakin kielellä.
  • Ohjaaja:[ Käsittelee käyttäjän syötteet, tunnistaa paikan ja valitsee tarvittavat resurssit tai tiedot ennen niiden lähettämistä näkymään.

Tämä puhdas erottaminen tarkoittaa, että voit lisätä uuden kielen luomalla uusia resurssitiedostoja tai merkinnät, mukauttamalla näkymämalleja viiteen kyseiset resurssit, ja varmistamalla, että rekisterinpitäjä valitsee oikea locale ... kaikki ilman kirjoittamista liiketoiminnan logiikkaa tai tietokanta schemas.

Avainpaikka-analyysi

Joustotallennustiedostot

Resurssitiedostot (JSON, YAML, XML, tai .resx) pitävät kielikohtaiset jouset ulkoisina koodista. Esimerkiksi Laravel käyttää tiedostoja; ASP.NET Core käyttää [ tiedostoja; ja monet JavaScript kehys käyttää JSON käännöstiedostoja. Perusmalli on avain-arvo pari:

  • englannin kielellä
  • ranskankielinen

Resurssitiedostojen käyttäminen tekee kääntäjille työskennelleen turhan ilman, että he koskeisivat sovelluslogiikkaan, ja se pitää koodin pohjan puhtaana.

Paikalliset havainto- ja neuvottelutoimet

Sovelluksesi on automaattisesti tunnistaa käyttäjän haluama kieli. Yhteiset strategiat ovat:

  • Selain Hyväksy-kieli otsikko:[ Jäsennys saada käyttäjän prioriteettilista.
  • Käyttäjäprofiiliasetus:[ Valitun paikan tallentaminen istuntoon tai tietokantaan käyttäjätunnuksen jälkeen.
  • ]URL-etuliite tai alatunnus: esim. tai .
  • Eväste tai paikallinen tallennustila:[ Vaaditaan käyttäjän kielivalintaa istuntojen välillä.

Rekisterinpitäjän tulisi toteuttaa neuvottelualgoritmi ... esimerkiksi kokeile käyttäjää tarkasti ja palata sitten oletuskielelle. W3C:n kansainvälistymistoiminto (]W3C i18n) tarjoaa yksityiskohtaisia ohjeita sisältöneuvotteluista.

Moniarvoisuus, sukupuoli ja muotoilu

Lokalisointi menee pidemmälle kuin yksinkertainen merkkijononvaihto. Eri kielillä on monimutkaisia monikkosääntöjä (esim. ., ., ...1 kohta. kohta. vs. . . . . . 2 kohtaa. Mutta useita muotoja puolaksi tai arabiaksi). Monet puitteet tarjoavat sisäänrakennettuja monilukuisuutta sääntöjä: Laravel.s [, Symfony.s , ja ICU-viestimuoto. Samoin päivämäärä, aika, numero ja valuuttamuoto on noudatettava paikallisia käytäntöjä (esim. Saksassa vs. Yhdysvalloissa).

Sisältö Käännösstrategiat

Dynaamisen sisällön tallennettu tietokantaan (esim. tuotekuvaukset, blogikirjoitukset), sinulla on useita vaihtoehtoja:

  • Kielisarakkeet:[] Yksi tietokantasarake/kieli (esim. ]], []). Yksinkertainen, mutta ei skaalattavissa monille kielille.
  • Separoidaan käännöstaulukot:[] [ taulukko, jossa on polymorfinen suhde mihinkään käännettävään kokonaisuuteen. Tämä on joustavampi ja seuraa tietokanta normalisointi parhaita käytäntöjä.
  • JSON-sarakkeet:[ Tallenna JSON-objekti kielinäppäimillä. Nopea prototyyppien tekoon, mutta voi olla vaikea saada selville ja ylläpitää.

Valitse lähestymistapa, joka vastaa odotettua määrä kieliä ja sisällön kokoa.

MVC:n integrointi lokalisointiin: vaiheittainen opas

Let.s olettaa, että olet rakentamassa monikielinen web-sovellus tyypillinen PHP tai C# MVC-kehys. Seuraavat vaiheet osoittavat, miten lanka lokalisointi osaksi MVC virtaus.

1. Suunnittele monikielisen tiedon malli

Määrittele kokonaisuusesi tueksi useita kieliä. Esimerkiksi mallilla voi olla yksi-to-monen-suhde malliin, joka tallentaa , , [] ja []. ORM-mallissa kuten Laravel.s Eloquent, voit käyttää ominaisuutta tai omistettua pakettia oikean käännöksen lataamiseen automaattisesti. Samoin staattisten UI-jonojen resurssitiedostot tulisi järjestää paikallisten avaimien avulla.

2. Määrittele paikantimen valvoja

Perusohjaimessa (tai väliohjelmistossa) toteuta lokale-tunnistus. Aseta sovellus... nykyisen locale käyttäjän valintojen perusteella. Esimerkiksi Laravelissa:

protected function setLocale(Request $request)
{
 $locale = $request->segment(1); // from URL
 if (in_array($locale, config('app.available_locales'))) {
 app()->setLocale($locale);
 session(['locale' => $locale]);
 }
}

ASP.NET Core -sovelluksessa voit lisätä -väliohjelman automaattisen neuvottelun käsittelyyn. Rekisterinpitäjä käyttää -komentoa palauttaakseen oikeat käännökset.

3. Kehitä näkymiä Lokalisointitoimintojen avulla

Käytä kovien merkkijonojen sijaan paikantamisavustimia. Laravel Bladessa käytät ; ASP.NET Razorissa [. Dynaamisen sisällön osalta siirrä käännetty malliesimerkki suoraan näkymään ja näyttökenttiin, jotka perustuvat nykyiseen sijaintiin. Varmista myös, että päivämäärä ja numeromuotoilu käyttää tai .

Esimerkiksi yksinkertainen kirjautumissivu snippet Laravel Blade:

<h2>{{ __('auth.login_title') }}</h2>
<form>
 <label>{{ __('auth.email') }}</label>
 <input type="email" name="email">
 <label>{{ __('auth.password') }}</label>
 <input type="password" name="password">
 <button type="submit">{{ __('auth.login_button') }}</button>
</form>

4. Käytä kielenvaihtoa

Anna näkyvissä oleva kielivalitsin (usein pudotus navigointiin tai alatunnisteeseen). Kun käyttäjä valitsee kielen, ohjain tai JavaScript päivittää nykyisen paikan ja tallentaa valinnan. Pidä käyttäjä samalla reitillä, jos mahdollista, ohjaa samalla URL-osoitteella uuden lokaleen etuliitteen kanssa.

Parhaat käytännöt ja näkökohdat

Johdonmukainen sisällönhallinta

Pidä käännökset synkronoitu. Käytä versionhallintaa resurssitiedostoihin ja harkitse käännösten hallintajärjestelmän (esim. Lokalise, Crowdin) käyttöä suurempien tiimien osalta. Vältä käännösavaimien toistamista, käytä niitä uudelleen mahdollisuuksien mukaan.

Monikielisten sivustojen käyttäjien kokemus

  • Kielivalitsin:[ Käytä selkeää, näkyvää painiketta tai lippukuvakkeita (jossa on alt teksti saavutettavuuteen).
  • Muista valinta:[ Persist käyttäjän kieli istunnon, evästeen tai tietokannan kautta.
  • Katso selaimen asetukset:[ Käytä ensikäynnillä automaattisesti selainta haluamallasi kielellä, jos se on saatavilla.
  • SEO hreflangilla:[ Toteuta -attribuutti HTML:ssä , jotta hakukoneet voivat kertoa kunkin sivun vaihtoehtoisista kieliversioista. Esimerkiksi .

Suorituskyvyn optimointi

  • Käsikirjakäännökset:[ Lataa resurssitiedostoja muistiin ja välitä ne (esim. Laraveli ).
  • Eager lataa käännökset:[] Kun kyselyt käännettäviä malleja, käytä innokas lataaminen välttää N+1 kyselyn ongelma.
  • Minimisoi paikallinen havainto yläpuolella:[ Tallenna ratkaistu paikka huoltokontissa tai istunto niin se on saatavilla maailmanlaajuisesti toistamatta havaintologiikkaa.

Esteettömyys ja inklusiivisuus

Lokalisoitu sisältö on säilytettävä saatavilla. Varmista, että kieliattribuutit ([] ja []) on asetettu oikein [] tunnisteeseen. Käytä asianmukaisia ARIA-tarroja useilla kielillä. Testi näytönlukijoilla kullakin tuetulla kielellä. []W3C Kansainvälistyminen FAQ[ tarjoaa ohjeita asiakirjan kielen asettamiseen.

Monikielisen monikielisen monikielisen monikielisen monikielisen kulttuuripääkaupungin kehittämisen tukivälineet ja -puitteet

Useimmissa nykyaikaisissa MVC-kehyksissä on vankat sisäänrakennetut tai yhteisöllistetyt lokalisointipaketit:

React with Redux -mallien kaltaisissa etupään MVC-kehyksissä kirjastot, kuten (ICU-viestimuotoon perustuva) integroivat hyvin MVC-tyyppisen taustaosan.

Päätelmät

Monikielisten verkkosovellusten rakentaminen MVC-mallilla on todistettu ja ylläpidettävissä oleva lähestymistapa. Kun kehittäjät voivat hyödyntää MVC:hen liittyvien huolenaiheiden erottamista, he voivat ottaa käyttöön lokalisointia ilman koko koodipohjan refaktorointia. Resurssitiedostot, locale detection ja huolellinen tietokantasuunnittelu muodostavat ydintyökalupaketin, kun taas puitteet tarjoavat tukiinfrastruktuurin. Kun verkko edelleen vaatii maailmanlaajuista tavoittamista, investoinnit MVC-arkkitehtuurin kiinteisiin lokalisointikäytäntöihin maksavat osinkoja käyttäjätyytyväisyyteen, saavutettavuuteen ja markkinaläsnäoloon.