String Catalogit ja lokalisoidut merkkijonot
Lokalisoi teksti nykyaikaisella String Catalogilla.
String Catalogit ja lokalisoidut merkkijonot on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Miksi lokalisoida lainkaan
Lokalisointi (l10n) tarkoittaa sovelluksen tekstin esittämistä käyttäjän kielellä; kansainvälistäminen (i18n) tarkoittaa koodin rakenteen suunnittelemista niin, että lokalisointi on mahdollista. Ensimmäinen vaihe on lopettaa käyttäjälle näkyvien merkkijonojen kovakoodaus ja hakea ne sen sijaan resurssiluettelosta.
// Hardcoded — bad for localization
// let title = "Welcome"
// Localized — looked up by key
let title = String(localized: "Welcome")String Catalogit
Nykyaikaiset Xcode-projektit käyttävät String Catalog -luetteloa (.xcstrings-tiedosto). Se on yksi JSON-pohjainen tiedosto, jossa luetellaan kaikki lokalisoitavat avaimet, niiden kielikohtaiset käännökset sekä metatiedot, kuten kommentit ja monikkomuodot. Xcode voi poimia avaimet koodista automaattisesti.
// Localizable.xcstrings holds entries like:
// key: "Welcome"
// en: "Welcome"
// tr: "Hos geldiniz"
// ja: "Yokoso"String(localized:)
Koodissa String(localized:) selvittää ajon aikana avaimen ja palauttaa nykyisen kielialueen mukaisen käännöksen. Välitettävä literaali toimii sekä avaimena että kehityskielen oletustekstinä.
let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)Kommenttien lisääminen kääntäjille
Pelkkä sana Run voi tarkoittaa ohjelman suorittamista tai lenkkeilyä. comment:-parametri antaa kääntäjille asiayhteyden, jotta he voivat valita oikean ilmauksen. Kommentit siirtyvät String Catalogiin automaattisesti.
let runLabel = String(
localized: "Run",
comment: "Button that executes the user's code")Arvojen interpolointi
Voitte upottaa suorituksen aikaisia arvoja lokalisoituun merkkijonoon. Swift muuttaa jokaisen interpoloinnin muotoilupaikaksi, jotta kääntäjät voivat vaihtaa niiden järjestystä. Eri kielissä subjekti ja lukumäärä sijoitetaan eri kohtiin.
let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)LocalizedStringKey SwiftUI:ssa
SwiftUI:ssa String(localized:)-kutsua tehdään harvoin suoraan. Useimmat tekstiä vastaanottavat näkymät käyttävät LocalizedStringKey-avainta, joten tavallinen merkkijonoliteraali lokalisoidaan automaattisesti.
// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back") // auto-localized
// Button("Save") { save() } // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = keyTahattoman lokalisoinnin välttäminen
Koska SwiftUI käsittelee literaaleja avaimina, dynaamista String-muuttujaa ei lokalisoida. Jos rakennatte tekstin yhdistämällä merkkijonoja, luetteloon ei koskaan päädy todellista avainta. Välittäkää yksi literaali aina, kun haluatte lokalisointia, ja käyttäkää verbatim:-parametria, kun ette nimenomaisesti halua sitä.
let userInput = "hello"
// Text(userInput) // NOT a localization key
// Text(verbatim: userInput) // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKeyTaulun määrittäminen
Suuret sovellukset jakavat merkkijonot useisiin luetteloihin eli tauluihin. Voitte kohdistaa haun tiettyyn tauluun ja pakettiin, mikä on välttämätöntä, kun merkkijonoja toimitetaan kehyksen tai Swift-paketin mukana.
let onboardingTitle = String(
localized: "Get Started",
table: "Onboarding",
bundle: .main)LocalizedStringResource
LocalizedStringResource esittää lokalisoitavan merkkijonon arvona, jonka voitte tallentaa ja selvittää myöhemmin, myös prosessien välillä. Tämä on hyödyllistä esimerkiksi App Intentseille ja widgeteille. Todellinen haku siirtyy näyttöhetkeen.
let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)Oletuslokalisointi
Projektin kehityskieli toimii varakielenä, jos käännös puuttuu. Koodiin kirjoittamaanne merkkijonoliteraalia käsitellään lähdekielisenä arvona, joten koodi säilyy luettavana eikä käyttäjille koskaan toimiteta raakaa avainta, kuten welcome_screen_title.
// If only 'en' is translated and device is set to 'fr',
// the development-language value is shown as fallback.
let fallback = String(localized: "Settings")
print(fallback)Käytännön haku
Kun kaikki yhdistetään, saadaan funktio, joka palauttaa täysin lokalisoidun, asiayhteydellä varustetun ja interpoloidun viestin, joka on valmis käytettäväksi missä tahansa käyttöliittymässä.
func welcomeMessage(for user: String) -> String {
return String(
localized: "Welcome, \(user)!",
comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))Pikatarkistus
Palauttakaa mieleenne, miten SwiftUI päättää, lokalisoidaanko teksti.
Kertaus
Loitte lokalisoidun tekstin perustan:
- Tallentakaa käännökset String Catalog -luetteloon (
.xcstrings). - Hakekaa merkkijonot
String(localized:)-kutsulla ja lisätkää kääntäjillecomment:. - SwiftUI:ssa literaaleista tulee
LocalizedStringKey-avaimia ja ne lokalisoidaan automaattisesti; muuttujia ei lokalisoida. - Käyttäkää
table:/bundle:-parametreja kehyksille jaLocalizedStringResource-tyyppiä myöhemmin tehtävään selvitykseen.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”String Catalogit ja lokalisoidut merkkijonot” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “String Catalogit ja lokalisoidut merkkijonot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”String Catalogit ja lokalisoidut merkkijonot”?
Lokalisoi teksti nykyaikaisella String Catalogilla. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”String Catalogit ja lokalisoidut merkkijonot”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- String Catalogit ja lokalisoidut merkkijonot
- Monikkomuodot ja Stringsdict
- Lokaalitietoinen muotoilu
- Oikealta vasemmalle ja asettelusuunta