Användning av fler språk för att översätta texter
Hej tänk att jag har 100 sidor av texter, det jag ska göra är, att lägga några språk i min sida så att man ska kunna byta språket på texter.
Vad är det bästa och enklaste att göra med Js??
Tack〄
Det normala när man har en web-site med stöd för fler språk är att ha en uppsättning texter för varje språk. Vill man automatisera det kan man använda någon av de översättningsfunktioner som finns online för att översätta när man öppnar sidan. Det blir dock sällan riktigt bra vilket du kan se på ebay där manualer för produkter från Kina är maskinöversatta. Med nya openAI håller det här på att ändras i snabb takt så jag skulle inte bli förvånad om maskinöversättning blir lika bra inom kort.
För de flesta språken kan jag tycka att det är tillräckligt bra. Typ Spanska, Svenska, Engelska, Tyska etc. Det är väl mest språk som Bosniska, Ryska, Arabiska, Japanska etc etc som tenderar att bli ganska kassa när det översätts utav vedertagna översättningsverktyg.
CurtJ skrev:Det normala när man har en web-site med stöd för fler språk är att ha en uppsättning texter för varje språk. Vill man automatisera det kan man använda någon av de översättningsfunktioner som finns online för att översätta när man öppnar sidan. Det blir dock sällan riktigt bra vilket du kan se på ebay där manualer för produkter från Kina är maskinöversatta. Med nya openAI håller det här på att ändras i snabb takt så jag skulle inte bli förvånad om maskinöversättning blir lika bra inom kort.
<div class="book">
<div class="pages">
<div class="cover" id="cover">
<h1>Ⅰ Ħave Ŋever βeen <strong>there</strong></h1>
<p>𝔄𝔩𝔦 𝔎𝔞𝔯𝔦𝔪𝔦</p>
</div>
<div class="chapters">
<div class="innehåll">
<h3>En ny Början</h3>
<h3>Skuggorna av Hemligheter</h3>
<h3>Gemenskap och Sammanhållning</h3>
<h3>Skratt & Vänskap i Skolans Värld</h3>
<h3>Bön, Delning & Reflektion</h3>
<h3>Andlighet & Vardag</h3>
<h3>Hjärtans Färder</h3>
<h3>Frihet och Självständighet</h3>
</div>
<div class="innehåll">
<p>1 - 3</p>
<p>4 - 6</p>
<p>7 - 17</p>
<p>18 - 22</p>
<p>23 - 35</p>
<p>36 - 69</p>
<p>69 - 78</p>
<p>78 - </p>
</div>
<div class="page">
<p></p>
</div>
<div class="page">
<p></p>
</div>
<div class="page">
<p></p>
</div>
<div class="page">
<p></p>
</div>
<div class="page">
<p></p>
</div>
<div class="page">
<p></p>
</div>
</div>
</div>
</div>
<script>
var currentPage = 1;
var totalPage = 100;
function next() {
// body...
if (currentPage < totalPage) {
currentPage++;
updatePageVisibility();
}else{
currentPage = 1;
updatePageVisibility();
}
}
function previous() {
// body...
if (currentPage > 1) {
currentPage--;
updatePageVisibility();
}else{
currentPage = totalPage;
updatePageVisibility();
}
}
function updatePageVisibility() {
// body...
var pages = document.querySelectorAll('.pages > div');
for(let i = 0; i < pages.length; i++){
pages[i].style.display = i + 1 === currentPage ? 'block' : 'none';
}
}
updatePageVisibility();
</script>
Jag vet inte hur ska jag använda automatisering översättning i min kod......!
Jag förstår inte vad du försöker uppnå. Kan du visa uppgiften?
CurtJ skrev:Jag förstår inte vad du försöker uppnå. Kan du visa uppgiften?
Det är inte uppgift, jag skrev en bok på svenska som jag skulle använda automatisering översättning i några andra språk...
Jag skulle översatt texten statiskt med något verktyg och lagt in den i dina språkberoende sidor (eller databas) snarare än att översätta den "on the fly". Det har fördelen att du kan redigera texten efter översättningen. Maskinöversättning är notoriskt dålig på att bibehålla semantiken och i en bok kännas det som en viktig egenskap.
- Skriv texten på svenska
- Översätt med någon tjänst
- Låt någon språkkunnig granska den
- Koda din JS så att du har en identifierare som text
- Hämta text mha identifierare och språkval för presentation. Lagrar du texten i en databas så är det enkelt att hämta text med nyckel och språkval. Har du texten på separata sidor så identifierar du dem med textid+språkval.
Något sånt i grova drag.
Shali_Mehr skrev:CurtJ skrev:Jag förstår inte vad du försöker uppnå. Kan du visa uppgiften?
Det är inte uppgift, jag skrev en bok på svenska som jag skulle använda automatisering översättning i några andra språk...
Som @CurtJ skriver så finns det en hel del sätt att göra detta på.
Du hade t ex. kunnat strukturera upp det som JSON objekt där du kan accessa de olika språken hyfsat enkelt via punktnotation på JSON objektet.
Ex.
let pageContentJSONObj = {
"sv": 'svensk text här',
"en": 'en content goes here',
"es": 'spansk text här',
};
console.log("multilang content fr. JSON objekt (SV text): ", pageContentJSONObj.sv);
Du hade kunnat manuellt översätta delarna på Google Translate (ChatGPT gör det dock bättre nuförtiden, dock begränsat gratis med x antal prompts per timme) och sen kolla igenom om du eller någon du känner kan språket om du bryr dig om kvaliteten på översättningarna. Men med tanke på att du skrev automatiserat misstänker jag detta ej är ett alternativ?
En grej vi noterat som skiljer ChatGPT AI översättningar åt jämfört med Google Translate, är att ChatGPT kan ta sig friheter och göra "antaganden" om saker du skrivit i din text och tolka det ganska fritt när den översätter, ibland till saker som är helt off ursprungliga texten som inte alls stämmer in på vad du ville förmedla. Medan Google Translate tidigare iaf. endast brukade fumla med orden och grammatiken.
Google Translate har en URL-översättnignsfunktion du kan använda, ej att rekommendera dock återigen om du är ute efter kvalitativt översättningsarbete.
https://translate.google.com/?sl=de&tl=en&op=websites
Via API kan man även använda Google Translate (eller ChatGPT) för att automatisera, men brukar ändå behöva dubbelkollas + det kostar typ per tecken har jag för mig.
Du hade kunnat skapa upp mappar för de olika språken för din hemsida och kopiera dina filer för att översätta så dem är åtkomliga via mappen sida.se/en/ för engelska osv. t ex. Dock brukar detta inte anses som god praxis då det blir mycket dubblerat och svårt att underhålla.
Om din sida är byggd med databas så brukar det underlätta flerspråkighet där du kan ha informationen lagrad i databasen på de olika språken som sen hämtas in till sidan via antingen AJAX (med JS) eller via Back-end språk som t ex. PHP.
Ytterligare ett sätt du kan göra på, men kanske inte heller super-rekommenderat beroende på ditt ändamål - är att tilldela en class eller ett ID för språket på sidan i t ex. <body> elementet, därefter i JS känna av via IF-sats document.body.id eller document.body.classList.contains("className") om ett specifikt språks ID/klass satts, och välja innehåll baserat på det.
Det bros väldigt mycket på kvantiteten som ska översättas känns det som, är det bara lite text så kan man lösa det hyfsat enkelt. Är det däremot desto mer text. Du skriver t ex. "100 sidor", det låter ganska mycket, men då beroende på sidstorlek kanske det blir lite mer komplicerat.
Likaså om du hade tänkt använda dig av den HTML markupen du postade. Där du har varje sida som ny DIV efter tidigare varandra.
Om du har koll på Back-end språk som PHP och JS AJAX så kan du vid sidbläddring också "ladda in" externt innehåll, går säkert att göra på flera sätt, men isf. hade du t ex. kunnat ha vanliga textfiler i en mapp på din FTP/lokalt för din hemsida, döpta till typ 1.txt, 2.txt osv. och sen vid klick hämta in det externa innehållet fr. dessa filer (så allt slipper ligga i filen samtidigt också) och bara ladda in det via JS AJAX resultatet direkt in via .innerHTML eller .innerText på document.getElementsByClassName("page") elementen t ex.
En Array i JS där varje index i arrayen håller 1 sida hade kanske också funkat, iterera igenom array-listan och printa för sidan som de bläddrat till.
För flerspråkighet hade du kunnat isf. ha antingen 1 array per språk eller en flerdimensionell array likt följande:
let multidimArray = [
[ // sv array (accessed via multidimArray index 0 via [0])
"", // sida 1 accessed via multidimArray[language-index][0]
"" // sida 2
],
[ // en array (accessed via index 1)
"", //page 1
"" // page 2
]
];
Du kan iterera genom en flerdimensionell array via 2 iterator-variabler i och j t ex. likt följande:for(let i = 0; i < multidimArray.length; i++) { // längden på multidimArray motsvarar den yttersta arrayen a.k.a. dina arrayer som motsvarar de olika språken
// denna yttre loop korresponderar på samma sätt till de "yttre arraylistorna", a.k.a. de olika språken i det här fallet och de accessas i vårt fall via iterator variabel i som vi definierat
for(let j = 0; j < multidimArray[0].length; j++) { // antaget att alla språk har lika många sidor kvittar det vilket språk vi tar antalet sidor från, eller om du har en semantisk const (konstant) variabel (t ex. const PAGE_NUMBERS = 100;) för 100 sidor så kan du hänvisa till den med
console.log("printing swedish page #1 like so: ", multidimArray[0][0]);
console.log("printing english page #1 like so: ", multidimArray[1][0]);
console.log("printing swedish page #2 like so: ", multidimArray[0][1]);
}
}
Då hade du också fått ned storleken på din hemsida fil och förbättrat inladdningshastighet då varje tecken tar upp 1 Byte i den.
Vet ej om något av ovan var till någon hjälp dock, men där finns lite alternativ som sagt :)
Lycka till! Hoppas du hittar en väg framåt :)
Vad gäller själva översättningen så kan jag rekommendera antingen Claude 3.5 Sonnet, eller att du laborerar med experimental 1114 på aistudio.google.com (den är riktigt vass, men ganska begränsad om man inte betalar).
Brukar använda dessa för att översätta ryska serier utan problem, mycket mycket bättre än traditionella Google Translate.
Ska du hålla på med automatisk översättning i realtid behöver du nog koppla upp till något API, men det är mycket meckigare.
Bättre att du hårdkodar förrenderade översättningar som du kan kolla genom noggrant innan de används.