convert dotted i18n to nested
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful

This commit is contained in:
FloatingGhost 2022-08-04 09:33:02 +01:00
parent d611769e83
commit fb6b949bc4
2 changed files with 449 additions and 1 deletions

29
src/i18n/dotted-to-nested Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env python3
# For restructuring files that have keys like "chat.title"
# into more useful formats
import sys
import json
from collections import defaultdict
with open(sys.argv[1], "r") as f:
data = json.load(f)
d = defaultdict(str)
def create_and_set(dic, key_path, value):
if len(key_path) == 1:
dic[key_path[0]] = value
else:
if key_path[0] not in dic:
dic[key_path[0]] = {}
create_and_set(dic[key_path[0]], key_path[1:], value)
for key, value in data.items():
nested_key = key.split(".")
create_and_set(d, nested_key, value)
with open(sys.argv[1], "w", encoding="utf-8") as f:
json.dump(d, f, indent=4, sort_keys=True, ensure_ascii=False)

View file

@ -1 +1,420 @@
{}
{
"features_panel": {
"media_proxy": "మీడియా ప్రాక్సీ",
"scope_options": "స్కోప్ ఎంపికలు",
"text_limit": "వచన పరిమితి",
"title": "లక్షణాలు",
"who_to_follow": "ఎవరిని అనుసరించాలి"
},
"finder": {
"error_fetching_user": "వినియోగదారుని పొందడంలో లోపం",
"find_user": "వినియోగదారుని కనుగొనండి"
},
"general": {
"apply": "వర్తించు",
"generic_error": "ఒక తప్పిదం సంభవించినది",
"more": "మరిన్ని",
"optional": "ఐచ్చికం",
"submit": "సమర్పించు"
},
"image_cropper": {
"cancel": "రద్దుచేయి",
"crop_picture": "చిత్రాన్ని కత్తిరించండి",
"save": "దాచు",
"save_without_cropping": "కత్తిరించకుండా సేవ్ చేయి"
},
"login": {
"description": "OAuth తో లాగిన్ అవ్వండి",
"hint": "చర్చలో చేరడానికి లాగిన్ అవ్వండి",
"login": "లాగిన్",
"logout": "లాగౌట్",
"password": "సంకేతపదము",
"placeholder": "ఉదా. lain",
"register": "నమోదు చేసుకోండి",
"username": "వాడుకరి పేరు"
},
"media_modal": {
"next": "తరువాత",
"previous": "ముందరి పుట"
},
"nav": {
"about": "గురించి",
"back": "వెనక్కి",
"dms": "నేరుగా పంపిన సందేశాలు",
"friend_requests": "అనుసరించడానికి అభ్యర్థనలు",
"mentions": "ప్రస్తావనలు",
"preferences": "ప్రాధాన్యతలు",
"public_tl": "ప్రజా కాలక్రమం",
"timeline": "కాలక్రమం",
"twkn": "మొత్తం తెలిసిన నెట్వర్క్",
"user_search": "వాడుకరి శోధన",
"who_to_follow": "ఎవరిని అనుసరించాలి"
},
"notifications": {
"broken_favorite": "తెలియని స్థితి, దాని కోసం శోధిస్తోంది...",
"favorited_you": "మీ స్థితిని ఇష్టపడ్డారు",
"followed_you": "మిమ్మల్ని అనుసరించారు",
"load_older": "పాత నోటిఫికేషన్లను లోడ్ చేయండి",
"no_more_notifications": "ఇక నోటిఫికేషన్లు లేవు",
"notifications": "ప్రకటనలు",
"read": "చదివాను!",
"repeated_you": "మీ స్థితిని పునరావృతం చేసారు"
},
"post_status": {
"account_not_locked_warning": "మీ ఖాతా {0} కాదు. ఎవరైనా మిమ్మల్ని అనుసరించి అనుచరులకు మాత్రమే ఉద్దేశించిన పోస్టులను చూడవచ్చు.",
"account_not_locked_warning_link": "తాళం వేయబడినది",
"attachments_sensitive": "జోడింపులను సున్నితమైనవిగా గుర్తించండి",
"content_type": {
"text/html": "హెచ్‌టిఎమ్ఎల్",
"text/markdown": "మార్క్డౌన్",
"text/plain": "సాధారణ అక్షరాలు"
},
"content_warning": "విషయం (ఐచ్ఛికం)",
"default": "ఇప్పుడే విజయవాడలో దిగాను.",
"new_status": "క్రొత్త స్థితిని పోస్ట్ చేయండి",
"posting": "పోస్ట్ చేస్తున్నా",
"scope": {
"direct": "ప్రత్యక్ష - పేర్కొన్న వినియోగదారులకు మాత్రమే పోస్ట్ చేయబడుతుంది",
"private": "అనుచరులకు మాత్రమే - అనుచరులకు మాత్రమే పోస్ట్ చేయబడుతుంది",
"public": "పబ్లిక్ - ప్రజా కాలక్రమాలకు పోస్ట్ చేయబడుతుంది",
"unlisted": "జాబితా చేయబడనిది - ప్రజా కాలక్రమాలకు పోస్ట్ చేయవద్దు"
}
},
"registration": {
"bio": "బయో",
"bio_placeholder": "e.g.\nHi, I'm Lain.\nIm an anime girl living in suburban Japan. You may know me from the Wired.",
"captcha": "కాప్చా",
"email": "ఈ మెయిల్",
"fullname": "ప్రదర్శన పేరు",
"fullname_placeholder": "ఉదా. Lain Iwakura",
"new_captcha": "కొత్త కాప్చా పొందుటకు చిత్రం మీద క్లిక్ చేయండి",
"password_confirm": "పాస్వర్డ్ నిర్ధారణ",
"registration": "నమోదు",
"token": "ఆహ్వాన టోకెన్",
"username_placeholder": "ఉదా. lain",
"validations": {
"email_required": "ఖాళీగా విడిచిపెట్టరాదు",
"fullname_required": "ఖాళీగా విడిచిపెట్టరాదు",
"password_confirmation_match": "సంకేతపదం వలె ఉండాలి",
"password_confirmation_required": "ఖాళీగా విడిచిపెట్టరాదు",
"password_required": "ఖాళీగా విడిచిపెట్టరాదు",
"username_required": "ఖాళీగా విడిచిపెట్టరాదు"
}
},
"settings": {
"app_name": "అనువర్తన పేరు",
"attachmentRadius": "జోడింపులు",
"attachments": "జోడింపులు",
"avatar": "అవతారం",
"avatarAltRadius": "అవతారాలు (ప్రకటనలు)",
"avatarRadius": "అవతారాలు",
"avatar_size_instruction": "అవతార్ చిత్రాలకు సిఫార్సు చేసిన కనీస పరిమాణం 150x150 పిక్సెల్స్.",
"background": "బ్యాక్‌గ్రౌండు",
"bio": "బయో",
"blocks_tab": "బ్లాక్‌లు",
"btnRadius": "బటన్లు",
"cBlue": "నీలం (ప్రత్యుత్తరం, అనుసరించండి)",
"cGreen": "Green (Retweet)",
"cOrange": "ఆరెంజ్ (ఇష్టపడు)",
"cRed": "Red (Cancel)",
"change_password": "పాస్‌వర్డ్ మార్చండి",
"change_password_error": "మీ పాస్వర్డ్ను మార్చడంలో సమస్య ఉంది.",
"changed_password": "పాస్వర్డ్ విజయవంతంగా మార్చబడింది!",
"checkboxRadius": "Checkboxes",
"collapse_subject": "Collapse posts with subjects",
"composing": "Composing",
"confirm_new_password": "కొత్త పాస్వర్డ్ను నిర్ధారించండి",
"current_avatar": "మీ ప్రస్తుత అవతారం",
"current_password": "ప్రస్తుత పాస్వర్డ్",
"data_import_export_tab": "Data Import / Export",
"default_vis": "Default visibility scope",
"delete_account": "Delete Account",
"delete_account_description": "మీ ఖాతా మరియు మీ అన్ని సందేశాలను శాశ్వతంగా తొలగించండి.",
"delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
"delete_account_instructions": "ఖాతా తొలగింపును నిర్ధారించడానికి దిగువ ఇన్పుట్లో మీ పాస్వర్డ్ను టైప్ చేయండి.",
"enable_web_push_notifications": "Enable web push notifications",
"export_theme": "Save preset",
"filtering": "వడపోత",
"filtering_explanation": "All statuses containing these words will be muted, one per line",
"follow_export": "Follow export",
"follow_export_button": "Export your follows to a csv file",
"follow_import": "Follow import",
"follow_import_error": "అనుచరులను దిగుమతి చేయడంలో లోపం",
"follows_imported": "Follows imported! Processing them will take a while.",
"foreground": "Foreground",
"general": "General",
"hide_attachments_in_convo": "సంభాషణలలో జోడింపులను దాచు",
"hide_attachments_in_tl": "కాలక్రమంలో జోడింపులను దాచు",
"hide_filtered_statuses": "Hide filtered statuses",
"hide_followers_description": "నన్ను ఎవరు అనుసరిస్తున్నారో చూపవద్దు",
"hide_follows_description": "నేను ఎవరిని అనుసరిస్తున్నానో చూపించవద్దు",
"hide_isp": "Hide instance-specific panel",
"hide_muted_posts": "మ్యూట్ చేసిన వినియోగదారుల యొక్క పోస్ట్లను దాచిపెట్టు",
"hide_post_stats": "Hide post statistics (e.g. the number of favorites)",
"hide_user_stats": "Hide user statistics (e.g. the number of followers)",
"import_followers_from_a_csv_file": "Import follows from a csv file",
"import_theme": "Load preset",
"inputRadius": "Input fields",
"instance_default": "(default: {value})",
"instance_default_simple": "(default)",
"interface": "Interface",
"interfaceLanguage": "Interface language",
"invalid_theme_imported": "The selected file is not a supported Pleroma theme. No changes to your theme were made.",
"limited_availability": "మీ బ్రౌజర్లో అందుబాటులో లేదు",
"links": "Links",
"lock_account_description": "మీ ఖాతాను ఆమోదించిన అనుచరులకు మాత్రమే పరిమితం చేయండి",
"loop_video": "Loop videos",
"loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")",
"max_thumbnails": "Maximum amount of thumbnails per post",
"mutes_tab": "మ్యూట్ చేయబడినవి",
"name": "Name",
"name_bio": "పేరు & బయో",
"new_password": "కొత్త సంకేతపదం",
"no_blocks": "బ్లాక్స్ లేవు",
"no_mutes": "మ్యూట్లు లేవు",
"no_rich_text_description": "అన్ని పోస్ట్ల నుండి రిచ్ టెక్స్ట్ ఫార్మాటింగ్ను స్ట్రిప్ చేయండి",
"notification_visibility": "చూపించవలసిన నోటిఫికేషన్ రకాలు",
"notification_visibility_follows": "Follows",
"notification_visibility_likes": "ఇష్టాలు",
"notification_visibility_mentions": "ప్రస్తావనలు",
"notification_visibility_repeats": "పునఃప్రసారాలు",
"notifications": "Notifications",
"nsfw_clickthrough": "Enable clickthrough NSFW attachment hiding",
"oauth_tokens": "OAuth tokens",
"panelRadius": "Panels",
"pause_on_unfocused": "Pause streaming when tab is not focused",
"play_videos_in_modal": "మీడియా వీక్షికలో నేరుగా వీడియోలను ప్లే చేయి",
"post_status_content_type": "Post status content type",
"preload_images": "Preload images",
"presets": "Presets",
"profile_background": "Profile Background",
"profile_banner": "Profile Banner",
"profile_tab": "Profile",
"radii_help": "Set up interface edge rounding (in pixels)",
"refresh_token": "Refresh Token",
"replies_in_timeline": "Replies in timeline",
"reply_visibility_all": "Show all replies",
"reply_visibility_following": "Only show replies directed at me or users I'm following",
"reply_visibility_self": "Only show replies directed at me",
"revoke_token": "Revoke",
"saving_err": "Error saving settings",
"saving_ok": "Settings saved",
"scope_copy": "Copy scope when replying (DMs are always copied)",
"security_tab": "Security",
"set_new_avatar": "Set new avatar",
"set_new_profile_background": "Set new profile background",
"set_new_profile_banner": "Set new profile banner",
"settings": "Settings",
"show_admin_badge": "నా ప్రొఫైల్ లో అడ్మిన్ బ్యాడ్జ్ చూపించు",
"show_moderator_badge": "నా ప్రొఫైల్లో మోడరేటర్ బ్యాడ్జ్ని చూపించు",
"stop_gifs": "Play-on-hover GIFs",
"streaming": "Enable automatic streaming of new posts when scrolled to the top",
"style": {
"advanced_colors": {
"_tab_label": "Advanced",
"alert": "Alert background",
"alert_error": "Error",
"badge": "Badge background",
"badge_notification": "Notification",
"borders": "Borders",
"buttons": "Buttons",
"faint_text": "Faded text",
"inputs": "Input fields",
"panel_header": "Panel header",
"top_bar": "Top bar"
},
"common": {
"color": "Color",
"contrast": {
"context": {
"18pt": "for large (18pt+) text",
"text": "for text"
},
"hint": "Contrast ratio is {ratio}, it {level} {context}",
"level": {
"aa": "meets Level AA guideline (minimal)",
"aaa": "meets Level AAA guideline (recommended)",
"bad": "doesn't meet any accessibility guidelines"
}
},
"opacity": "Opacity"
},
"common_colors": {
"_tab_label": "Common",
"foreground_hint": "See \"Advanced\" tab for more detailed control",
"main": "Common colors",
"rgbo": "Icons, accents, badges"
},
"fonts": {
"_tab_label": "Fonts",
"components": {
"input": "Input fields",
"interface": "Interface",
"post": "Post text",
"postCode": "Monospaced text in a post (rich text)"
},
"custom": "Custom",
"family": "Font name",
"help": "Select font to use for elements of UI. For \"custom\" you have to enter exact font name as it appears in system.",
"size": "Size (in px)",
"weight": "Weight (boldness)"
},
"preview": {
"button": "Button",
"checkbox": "I have skimmed over terms and conditions",
"content": "Content",
"error": "Example error",
"faint_link": "helpful manual",
"fine_print": "Read our {0} to learn nothing useful!",
"header": "Preview",
"header_faint": "This is fine",
"input": "Just landed in L.A.",
"link": "a nice lil' link",
"mono": "content",
"text": "A bunch of more {0} and {1}"
},
"radii": {
"_tab_label": "Roundness"
},
"shadows": {
"_tab_label": "Shadow and lighting",
"blur": "Blur",
"component": "Component",
"components": {
"avatar": "User avatar (in profile view)",
"avatarStatus": "User avatar (in post display)",
"button": "Button",
"buttonHover": "Button (hover)",
"buttonPressed": "Button (pressed)",
"buttonPressedHover": "Button (pressed+hover)",
"input": "Input field",
"panel": "Panel",
"panelHeader": "Panel header",
"popup": "Popups and tooltips",
"topBar": "Top bar"
},
"filter_hint": {
"always_drop_shadow": "Warning, this shadow always uses {0} when browser supports it.",
"avatar_inset": "Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.",
"drop_shadow_syntax": "{0} does not support {1} parameter and {2} keyword.",
"inset_classic": "Inset shadows will be using {0}",
"spread_zero": "Shadows with spread > 0 will appear as if it was set to zero"
},
"inset": "Inset",
"override": "Override",
"shadow_id": "Shadow #{value}",
"spread": "Spread"
},
"switcher": {
"clear_all": "Clear all",
"clear_opacity": "Clear opacity",
"keep_color": "Keep colors",
"keep_fonts": "Keep fonts",
"keep_opacity": "Keep opacity",
"keep_roundness": "Keep roundness",
"keep_shadows": "Keep shadows",
"reset": "Reset",
"save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything."
}
},
"subject_input_always_show": "Always show subject field",
"subject_line_behavior": "Copy subject when replying",
"subject_line_email": "Like email: \"re: subject\"",
"subject_line_mastodon": "Like mastodon: copy as is",
"subject_line_noop": "Do not copy",
"text": "Text",
"theme": "Theme",
"theme_help": "Use hex color codes (#rrggbb) to customize your color theme.",
"theme_help_v2_1": "You can also override certain component's colors and opacity by toggling the checkbox, use \"Clear all\" button to clear all overrides.",
"theme_help_v2_2": "Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.",
"token": "Token",
"tooltipRadius": "Tooltips/alerts",
"upload_a_photo": "Upload a photo",
"use_contain_fit": "అటాచ్మెంట్ సూక్ష్మచిత్రాలను కత్తిరించవద్దు",
"use_one_click_nsfw": "కేవలం ఒక క్లిక్ తో NSFW జోడింపులను తెరవండి",
"user_settings": "User Settings",
"valid_until": "Valid Until",
"values": {
"false": "no",
"true": "yes"
},
"version": {
"backend_version": "Backend Version",
"frontend_version": "Frontend Version",
"title": "Version"
}
},
"status": {
"replies_list": "Replies:",
"reply_to": "Reply to"
},
"timeline": {
"collapse": "Collapse",
"conversation": "Conversation",
"load_older": "Load older statuses",
"no_more_statuses": "No more statuses",
"no_retweet_hint": "Post is marked as followers-only or direct and cannot be repeated",
"no_statuses": "No statuses",
"repeated": "repeated",
"show_new": "Show new",
"up_to_date": "Up-to-date"
},
"tool_tip": {
"favorite": "Favorite",
"media_upload": "Upload Media",
"repeat": "Repeat",
"reply": "Reply",
"user_settings": "User Settings"
},
"upload": {
"error": {
"base": "Upload failed.",
"default": "Try again later",
"file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]"
},
"file_size_units": {
"B": "B",
"GiB": "GiB",
"KiB": "KiB",
"MiB": "MiB",
"TiB": "TiB"
}
},
"user_card": {
"approve": "Approve",
"block": "Block",
"block_progress": "Blocking...",
"blocked": "Blocked!",
"deny": "Deny",
"favorites": "Favorites",
"follow": "Follow",
"follow_progress": "Requesting…",
"follow_sent": "Request sent!",
"follow_unfollow": "Unfollow",
"followees": "Following",
"followers": "Followers",
"following": "Following!",
"follows_you": "Follows you!",
"its_you": "It's you!",
"media": "Media",
"mute": "Mute",
"mute_progress": "Muting...",
"muted": "Muted",
"per_day": "per day",
"remote_follow": "Remote follow",
"statuses": "Statuses",
"unblock": "Unblock",
"unblock_progress": "Unblocking...",
"unmute": "Unmute",
"unmute_progress": "Unmuting..."
},
"user_profile": {
"profile_does_not_exist": "Sorry, this profile does not exist.",
"profile_loading_error": "Sorry, there was an error loading this profile.",
"timeline_title": "User Timeline"
},
"who_to_follow": {
"more": "More",
"who_to_follow": "Who to follow"
}
}