I 5 kardinale synder med WordPress Theme Development snakket vi kort om betydningen av internasjonalisering av temaer og plugins, men vi diskutere ikke hvordan å gjøre det.
Hvis du er i det kommersielle temaet eller pluginplassen, forventes det nesten at arbeidet ditt vil støtte flere språk. I denne artikkelen tar vi en titt på å forstå hva internasjonalisering egentlig er, hvorfor det er viktig, og hvilke skritt er nødvendig for å internasjonalisere prosjektet.
Når det gjelder å internasjonalisere WordPress-prosjekter, er kanskje det vanskeligste aspektet faktisk å forstå hvordan man gjør det - internasjonalisering av et WordPress-prosjekt er faktisk veldig enkelt å gjøre.
Før du ser på hvordan du gjør det, er det viktig å ta en titt på betydningen av internasjonalisering og hvorfor vi som utviklere burde plage å gjøre det.
Enkelt sagt er internasjonalisering prosessen der vi forbereder vårt tema for oversettelse. Dette betyr at uansett hvilket språk det ble brukt til å utvikle arbeidet vårt, kan fremtidige brukere (eller til og med utviklere) enkelt oversette prosjektet for hvilket språk som kreves. Internationalisering krever faktisk ikke det vi gi oversettelsene (selv om de flerspråklige blant oss lett kan gjøre det), bare at vi tar de nødvendige skrittene for fremtidige oversettere å gjøre det.
For mange år siden ville jeg ha sagt at internasjonalisering bare skulle gjøres hvis målmarkedet for arbeidet ditt var noe annet enn morsmålet ditt, men det er ikke lenger tilfelle. Takket være internett kan vi snakke, samarbeide, og kommunisere med mennesker fra hele verden. Det potensielle publikum for et gitt prosjekt er bredere enn det det har vært før.
Enda har WordPress et betydelig antall moderne nettsteder. For det formål bør vi tenke globalt om vårt arbeid. Jeg hevder at internasjonalisering av kommersielle temaer eller plugins ikke lenger er omsettelig. Hvis plattformen der arbeidet ditt er bygd, brukes av en rekke språk - og WordPress er - og sagt at plattformen gir en ren og enkel måte å internasjonalisere et tema - og WordPress gjør - så er det mer et spørsmål om hvorfor er jeg ikke internasjonalisering av arbeidet mitt.
Som tidligere nevnt, er internasjonalisering av et tema faktisk et mer forsøk på å forstå de viktigste funksjonene i WordPress API enn selve prosessen med å forberede teksten. Så før du tar en titt på et konkret eksempel, la oss definere noen viktige vilkår og funksjoner: - Internationalization Key. Du kan tenke på dette som en kontekst, domene eller en unik identifikator for strenger.
Uansett er dette en enkelt, unik verdi som WordPress vil bruke til å internasjonalisere teksten gjennom temaet ditt. - __ ($ text, $ key) er en funksjon som returnerer en oversatt streng. Denne funksjonen ekkoer ikke, skriver ut eller viser strengen. Det brukes ofte når du trenger å utføre en annen operasjon på den oversatte strengen (for eksempel å overføre den til en annen funksjon). Den aksepterer to argumenter - strengen som skal oversettes og internationaliseringsnøkkelen. - _e ($ tekst, $ nøkkel) er en funksjon som faktisk ekkoer den oversatte strengen.
Dette er best brukt når du trenger å hente en oversatt verdi og vise den et sted i ditt tema eller plugin .- load_theme_textdomain ($ domain, $ translation_directory), load_plugin_textdomain ($ domain, $ translation_directory) er to funksjoner som forteller WordPress hvor du finner din oversettelser. Vi tar en titt på disse funksjonene litt mer detaljert øyeblikkelig.
For nå, bare vet at hver funksjon tjener samme formål selv om en er for temaer, en er for plugins.For det meste, er dette alt som er å forstå hvordan å internationalisere temaet ditt. Herfra tar vi en titt som nøyaktig hva som medførte å sette disse funksjonene i praksis.
Før vi internasjonaliserer et tema, la oss se på hvordan et standard stykke oppslag ser ut:
Min WordPress Blog
Bare en av de beste nettstedene på Internett
Dette avsnittet er bare det beste avsnittet som finnes i alle WordPress-bloggene på Internett. Les det og nyt.
Ingenting spektakulært, ikke sant? Ser ut som et vanlig stykke HTML (som er alt det er). Gitt, dette er et enkelt eksempel, men det er alt som kreves for å demonstrere hvordan man internasjonaliserer et tema.
For å internasjonalisere denne teksten ovenfor må vi avgjøre hvilken unik identifikator vi skal bruke for å internasjonalisere teksten vår - jeg skal gå med 'tutsplus'. For det andre, siden all den ovennevnte teksten vises på skjermen, bruker vi funksjonen __e (). Den internasjonaliserte koden skal være:
Men hva med tekst som må oversettes før de vises på skjermen? Det er ikke mye annerledes, men la oss se på hvordan vi kan internasjonalisere sidebjelker.
La oss først sette opp sidebjelken:
register_sidebar (array ('name' => 'Custom Sidebar', 'id' => 'sidebar')));
Til referanse bruker jeg register_sidebar-funksjonen som er tilgjengelig via WordPress API. Vær oppmerksom på at navnet på sidefeltet blir gjengitt på skjermbildet Widgets. Som sådan må vi internasjonalisere det; En array aksepterer imidlertid ikke en ekko streng - den aksepterer en strengverdi.
I dette tilfellet vil vi dra nytte av funksjonen __ ():
register_sidebar (array ('name' => __ ('Tilpasset sidefelt', 'tutsplus'), 'id' => 'sidebar'));
Lett nok, hei?
Husk at internasjonalisering bare skal gjelde for statisk tekst. Det er ikke utviklerens ansvar å gi internasjonalisering av sideinnhold, innleggsinnhold og så videre.
Etter at du har gått gjennom temaet ditt og rettet opp teksten som trenger å bli internasjonalisert, må du fortelle temaet eller pluginet hvor du skal finne internasjonaliseringsfilene. Vi tar en nærmere titt på dette på et øyeblikk, men først anbefaler jeg alltid å opprette en lang katalog i roten til temaet eller plugin-katalogen for å lagre internasjonaliseringsfiler.
Husk funksjonene load_theme_text_domain og load_plugin_text_domainfunksjonene fra tidligere? Det er her vi bruker dem. Hvis du jobber med et tema, må vi definere en egendefinert funksjon som kalles i after_setup_theme-kroken:
funksjon custom_theme_setup () // end custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');
Neste, vi forteller funksjonen hvor du finner oversettelsene. For å gjøre dette, legg til følgende på linjer til temaet ditt (noter kommentarene som forklarer hva hver linje gjør):
funksjon custom_theme_setup () // Hent katalogen for internasjonaliseringsfilene $ lang_dir = get_template_directory (). '/ Lang'); // Sett temaets tekstdomene ved hjelp av den unike identifikatoren fra ovenfra load_theme_textdomain ('tutsplus', $ lang_dir); // end custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');
Relativt enkelt, ikke sant? Det er ikke mye annerledes for plugins heller. Ligner på temaer, plasserer jeg alltid mine internasjonaliseringsfiler i en 'lang' underkatalog. Først må vi fortelle WordPress der internasjonaliseringsfilene er plassert. Forutsatt at du befinner deg i en 'lang' katalog:
load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');
Den andre parameteren - der vi har angitt 'false' - er nødvendig, men tilsvarer en utdatert funksjon i WordPress.
Til slutt må vi avgjøre hvor du skal ringe load_plugin_textdomain-funksjonen. Hvis vi skriver en Widget, plasserer jeg vanligvis dette funksjonsanropet i konstruktøren:
klasse My_Custom_Widget funksjon My_Custom_Widget () load_plugin_textdomain ('tutsplus', falsk, dirname (plugin_basename (__ FILE__)). '/ lang /'); // endconstructor // end My_Custom_Widget
Hvis vi skriver en vanilje-plugin, er det en rekke måter du kan fortelle WordPress der oversettelsesfilene er plassert, men du har fleksibilitet til å hekte inn i after_setup_theme
funksjon. I likhet med tema koden ovenfor kan du plassere dette i pluginet ditt:
funksjon custom_plugin_setup () load_plugin_textdomain ('tutsplus', falsk, dirname (plugin_basename (__ FILE__)). '/ lang /'); // end custom_theme_setup add_action ('after_setup_theme', 'custom_plugin_setup');
På dette tidspunktet er temaet eller plugin-modulen klar for internasjonalisering.
På dette tidspunktet er du faktisk ferdig, men det er alltid verdt å vite hva som kreves for å ta arbeidet ditt og gå videre. Her er de to fremragende oppgavene som oversettere normalt utfører for å oversette temaet ditt
I motsetning til noen av de andre utviklingsmiljøene som er tilgjengelige, gjør WordPress det utrolig enkelt å internasjonalisere arbeidet ditt. Kanskje er den mest utfordrende delen å forstå de viktigste funksjonene som er nødvendige for å forberede strenger for internasjonalisering.
I tillegg kan refactoring eksisterende arbeid alltid være en tidkrevende prosess. I sammenheng med WordPress kan det være kjedelig, men det er relativt enkelt å gjøre. Hvis du har flere forslag eller spørsmål angående internasjonalisering, kan du ikke legge dem i kommentarene!