Golang中carbon库的多语言翻译问题求助

Golang中carbon库的多语言翻译问题求助 carbon 是一个简单、语义化且对开发者友好的 Golang 日期时间包。

目前支持以下语言:

恳请帮助将 carbon 翻译成其他语言,谢谢。

GitHub: github.com/golang-module/carbon


更多关于Golang中carbon库的多语言翻译问题求助的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang中carbon库的多语言翻译问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


carbon库的多语言翻译可以通过添加自定义语言文件来实现。以下是添加法语翻译的示例:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	// 创建法语语言配置
	frLang := `{
		"months": ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
		"shortMonths": ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
		"weekdays": ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"],
		"shortWeekdays": ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
		"am": "AM",
		"pm": "PM"
	}`

	// 加载法语配置
	carbon.LoadLanguage(carbon.French, frLang)

	// 设置当前语言为法语
	carbon.SetLocale(carbon.French)

	// 使用法语输出
	now := carbon.Now()
	fmt.Println(now.ToDateTimeString()) // 日期时间
	fmt.Println(now.DiffForHumans())    // 相对时间描述
}

对于德语翻译:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	// 德语翻译配置
	deLang := `{
		"months": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
		"shortMonths": ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
		"weekdays": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
		"shortWeekdays": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
		"am": "vorm.",
		"pm": "nachm."
	}`

	// 定义德语语言常量
	const German carbon.Language = "de"

	// 加载德语配置
	carbon.LoadLanguage(German, deLang)
	carbon.SetLocale(German)

	// 测试德语输出
	c := carbon.Parse("2023-12-25 14:30:00")
	fmt.Println(c.ToDateString())      // 25. Dezember 2023
	fmt.Println(c.Format("l, j. F Y")) // Montag, 25. Dezember 2023
}

创建西班牙语翻译文件:

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"github.com/golang-module/carbon/v2"
)

func main() {
	// 西班牙语翻译结构
	esTranslation := map[string]interface{}{
		"months": []string{
			"enero", "febrero", "marzo", "abril", "mayo", "junio",
			"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre",
		},
		"shortMonths": []string{
			"ene", "feb", "mar", "abr", "may", "jun",
			"jul", "ago", "sep", "oct", "nov", "dic",
		},
		"weekdays": []string{
			"domingo", "lunes", "martes", "miércoles", 
			"jueves", "viernes", "sábado",
		},
		"shortWeekdays": []string{
			"dom", "lun", "mar", "mié", "jue", "vie", "sáb",
		},
		"am": "a.m.",
		"pm": "p.m.",
	}

	// 转换为JSON
	esJSON, _ := json.Marshal(esTranslation)
	
	// 保存到文件
	ioutil.WriteFile("es.json", esJSON, 0644)

	// 加载并使用
	carbon.LoadLanguage(carbon.Spanish, string(esJSON))
	carbon.SetLocale(carbon.Spanish)

	now := carbon.Now()
	fmt.Println(now.Format("l j de F de Y")) // lunes 25 de diciembre de 2023
}

俄语翻译示例:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	ruLang := `{
		"months": ["январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"],
		"shortMonths": ["янв", "фев", "мар", "апр", "май", "июн", "июл", "авг", "сен", "окт", "ноя", "дек"],
		"weekdays": ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"],
		"shortWeekdays": ["вс", "пн", "вт", "ср", "чт", "пт", "сб"],
		"am": "AM",
		"pm": "PM"
	}`

	const Russian carbon.Language = "ru"
	
	carbon.LoadLanguage(Russian, ruLang)
	carbon.SetLocale(Russian)

	c := carbon.Parse("2023-12-31 23:59:59")
	fmt.Println(c.Format("l, j F Y H:i:s")) // воскресенье, 31 декабря 2023 23:59:59
	fmt.Println(c.DiffForHumans())          // 2 дня назад
}

韩语翻译配置:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	koLang := `{
		"months": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
		"shortMonths": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
		"weekdays": ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
		"shortWeekdays": ["일", "월", "화", "수", "목", "금", "토"],
		"am": "오전",
		"pm": "오후"
	}`

	const Korean carbon.Language = "ko"
	
	carbon.LoadLanguage(Korean, koLang)
	carbon.SetLocale(Korean)

	now := carbon.Now()
	fmt.Println(now.Format("Y년 m월 d일 l A h:i:s")) // 2023년 12월 25일 월요일 오후 14:30:00
}

葡萄牙语翻译:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	ptLang := `{
		"months": ["janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"],
		"shortMonths": ["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"],
		"weekdays": ["domingo", "segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira", "sábado"],
		"shortWeekdays": ["dom", "seg", "ter", "qua", "qui", "sex", "sáb"],
		"am": "AM",
		"pm": "PM"
	}`

	const Portuguese carbon.Language = "pt"
	
	carbon.LoadLanguage(Portuguese, ptLang)
	carbon.SetLocale(Portuguese)

	c := carbon.Parse("2023-12-25")
	fmt.Println(c.Format("j de F de Y")) // 25 de dezembro de 2023
	fmt.Println(c.Format("l"))           // segunda-feira
}

意大利语翻译:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	itLang := `{
		"months": ["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"],
		"shortMonths": ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"],
		"weekdays": ["domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato"],
		"shortWeekdays": ["dom", "lun", "mar", "mer", "gio", "ven", "sab"],
		"am": "AM",
		"pm": "PM"
	}`

	const Italian carbon.Language = "it"
	
	carbon.LoadLanguage(Italian, itLang)
	carbon.SetLocale(Italian)

	c := carbon.Now()
	fmt.Println(c.Format("l j F Y")) // lunedì 25 dicembre 2023
}

阿拉伯语翻译(注意从右到左显示):

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	arLang := `{
		"months": ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
		"shortMonths": ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
		"weekdays": ["الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"],
		"shortWeekdays": ["أحد", "إثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت"],
		"am": "ص",
		"pm": "م"
	}`

	const Arabic carbon.Language = "ar"
	
	carbon.LoadLanguage(Arabic, arLang)
	carbon.SetLocale(Arabic)

	c := carbon.Parse("2023-12-25 14:30:00")
	fmt.Println(c.Format("l j F Y H:i:s")) // الإثنين 25 ديسمبر 2023 14:30:00
}

土耳其语翻译:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	trLang := `{
		"months": ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
		"shortMonths": ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
		"weekdays": ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"],
		"shortWeekdays": ["Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt"],
		"am": "ÖÖ",
		"pm": "ÖS"
	}`

	const Turkish carbon.Language = "tr"
	
	carbon.LoadLanguage(Turkish, trLang)
	carbon.SetLocale(Turkish)

	c := carbon.Now()
	fmt.Println(c.Format("l j F Y")) // Pazartesi 25 Aralık 2023
}

荷兰语翻译:

package main

import (
	"fmt"
	"github.com/golang-module/carbon/v2"
)

func main() {
	nlLang := `{
		"months": ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
		"shortMonths": ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
		"weekdays": ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
		"shortWeekdays": ["zo", "ma", "di", "wo", "do", "vr", "za"],
		"am": "a.m.",
		"pm": "p.m."
	}`

	const Dutch carbon.Language = "nl"
	
	carbon.LoadLanguage(Dutch, nlLang)
	carbon.SetLocale(Dutch)

	c := carbon.Parse("2023-12-25")
	fmt.Println(c.Format("l j F Y")) // maandag 25 december 2023
	fmt.Println(c.Format("d-m-Y"))   // 25-12-2023
}

这些示例展示了如何为carbon库添加不同语言的翻译。每个翻译都需要提供完整的月份、星期、AM/PM标记等字段。翻译完成后,可以通过Pull Request提交到carbon的GitHub仓库。

回到顶部