Skip to content

Commit

Permalink
New Crowdin updates (#12)
Browse files Browse the repository at this point in the history
* New translations README.md (Chinese Simplified)

* New translations cos.md (Chinese Simplified)

* New translations s3.md (Chinese Simplified)

* New translations qingstor.md (Chinese Simplified)

* New translations oss.md (Chinese Simplified)

* New translations kodo.md (Chinese Simplified)

* New translations gcs.md (Chinese Simplified)

* New translations fs.md (Chinese Simplified)

* New translations dropbox.md (Chinese Simplified)

* New translations azblob.md (Chinese Simplified)

* New translations README.md (Chinese Simplified)

* New translations README.md (Chinese Simplified)

* New translations storager.md (Chinese Simplified)

* New translations statistician.md (Chinese Simplified)

* New translations servicer.md (Chinese Simplified)

* New translations segmenter.md (Chinese Simplified)

* New translations reacher.md (Chinese Simplified)

* New translations prefix_segments_lister.md (Chinese Simplified)

* New translations prefix_lister.md (Chinese Simplified)

* New translations uss.md (Chinese Simplified)

* New translations footer.json (Chinese Simplified)

* New translations current.json (Chinese Simplified)

* New translations code.json (Chinese Simplified)

* New translations navbar.json (Chinese Simplified)
  • Loading branch information
Xuanwo committed Mar 11, 2021
1 parent b054a9c commit f7e1534
Show file tree
Hide file tree
Showing 24 changed files with 813 additions and 0 deletions.
194 changes: 194 additions & 0 deletions i18n/zh_Hans/code.json
@@ -0,0 +1,194 @@
{
"theme.NotFound.title": {
"message": "Page Not Found",
"description": "The title of the 404 page"
},
"theme.NotFound.p1": {
"message": "We could not find what you were looking for.",
"description": "The first paragraph of the 404 page"
},
"theme.NotFound.p2": {
"message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
"description": "The 2nd paragraph of the 404 page"
},
"theme.AnnouncementBar.closeButtonAriaLabel": {
"message": "Close",
"description": "The ARIA label for close button of announcement bar"
},
"theme.blog.paginator.navAriaLabel": {
"message": "Blog list page navigation",
"description": "The ARIA label for the blog pagination"
},
"theme.blog.paginator.newerEntries": {
"message": "Newer Entries",
"description": "The label used to navigate to the newer blog posts page (previous page)"
},
"theme.blog.paginator.olderEntries": {
"message": "Older Entries",
"description": "The label used to navigate to the older blog posts page (next page)"
},
"theme.blog.post.readingTime.plurals": {
"message": "One min read|{readingTime} min read",
"description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.tags.tagsListLabel": {
"message": "Tags:",
"description": "The label alongside a tag list"
},
"theme.blog.post.readMore": {
"message": "Read More",
"description": "The label used in blog post item excerpts to link to full blog posts"
},
"theme.blog.post.paginator.navAriaLabel": {
"message": "Blog post page navigation",
"description": "The ARIA label for the blog posts pagination"
},
"theme.blog.post.paginator.newerPost": {
"message": "Newer Post",
"description": "The blog post button label to navigate to the newer/previous post"
},
"theme.blog.post.paginator.olderPost": {
"message": "Older Post",
"description": "The blog post button label to navigate to the older/next post"
},
"theme.tags.tagsPageTitle": {
"message": "Tags",
"description": "The title of the tag list page"
},
"theme.blog.post.plurals": {
"message": "One post|{count} posts",
"description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.blog.tagTitle": {
"message": "{nPosts} tagged with \"{tagName}\"",
"description": "The title of the page for a blog tag"
},
"theme.tags.tagsPageLink": {
"message": "View All Tags",
"description": "The label of the link targeting the tag list page"
},
"theme.CodeBlock.copyButtonAriaLabel": {
"message": "Copy code to clipboard",
"description": "The ARIA label for copy code blocks button"
},
"theme.CodeBlock.copied": {
"message": "Copied",
"description": "The copied button label on code blocks"
},
"theme.CodeBlock.copy": {
"message": "Copy",
"description": "The copy button label on code blocks"
},
"theme.docs.sidebar.expandButtonTitle": {
"message": "Expand sidebar",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.docs.sidebar.expandButtonAriaLabel": {
"message": "Expand sidebar",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.docs.paginator.navAriaLabel": {
"message": "Docs pages navigation",
"description": "The ARIA label for the docs pagination"
},
"theme.docs.paginator.previous": {
"message": "Previous",
"description": "The label used to navigate to the previous doc"
},
"theme.docs.paginator.next": {
"message": "Next",
"description": "The label used to navigate to the next doc"
},
"theme.docs.sidebar.responsiveCloseButtonLabel": {
"message": "Close menu",
"description": "The ARIA label for close button of mobile doc sidebar"
},
"theme.docs.sidebar.responsiveOpenButtonLabel": {
"message": "Open menu",
"description": "The ARIA label for open button of mobile doc sidebar"
},
"theme.docs.sidebar.collapseButtonTitle": {
"message": "Collapse sidebar",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.sidebar.collapseButtonAriaLabel": {
"message": "Collapse sidebar",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.versions.unreleasedVersionLabel": {
"message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
"description": "The label used to tell the user that he's browsing an unreleased doc version"
},
"theme.docs.versions.unmaintainedVersionLabel": {
"message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
"description": "The label used to tell the user that he's browsing an unmaintained doc version"
},
"theme.docs.versions.latestVersionSuggestionLabel": {
"message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
"description": "The label userd to tell the user that he's browsing an unmaintained doc version"
},
"theme.docs.versions.latestVersionLinkLabel": {
"message": "latest version",
"description": "The label used for the latest version suggestion link label"
},
"theme.common.editThisPage": {
"message": "Edit this page",
"description": "The link label to edit the current page"
},
"theme.common.headingLinkTitle": {
"message": "Direct link to heading",
"description": "Title for link to heading"
},
"theme.lastUpdated.atDate": {
"message": " on {date}",
"description": "The words used to describe on which date a page has been last updated"
},
"theme.lastUpdated.byUser": {
"message": " by {user}",
"description": "The words used to describe by who the page has been last updated"
},
"theme.lastUpdated.lastUpdatedAtBy": {
"message": "Last updated{atDate}{byUser}",
"description": "The sentence used to display when a page has been last updated, and by who"
},
"theme.common.skipToMainContent": {
"message": "Skip to main content",
"description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
},
"theme.SearchPage.documentsFound.plurals": {
"message": "One document found|{count} documents found",
"description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.SearchPage.existingResultsTitle": {
"message": "Search results for \"{query}\"",
"description": "The search page title for non-empty query"
},
"theme.SearchPage.emptyResultsTitle": {
"message": "Search the documentation",
"description": "The search page title for empty query"
},
"theme.SearchPage.inputPlaceholder": {
"message": "Type your search here",
"description": "The placeholder for search page input"
},
"theme.SearchPage.inputLabel": {
"message": "Search",
"description": "The ARIA label for search page input"
},
"theme.SearchPage.algoliaLabel": {
"message": "Search by Algolia",
"description": "The ARIA label for Algolia mention"
},
"theme.SearchPage.noResultsText": {
"message": "No results were found",
"description": "The paragraph for empty search result"
},
"theme.SearchPage.fetchingNewResults": {
"message": "Fetching new results...",
"description": "The paragraph for fetching new search results"
},
"theme.SearchBar.label": {
"message": "Search",
"description": "The ARIA label and placeholder for search button"
}
}
18 changes: 18 additions & 0 deletions i18n/zh_Hans/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,18 @@
{
"version.label": {
"message": "Next",
"description": "The label for version current"
},
"sidebar.docs.category.Golang": {
"message": "Golang",
"description": "The label for category Golang in sidebar docs"
},
"sidebar.docs.category.Operations": {
"message": "Operations",
"description": "The label for category Operations in sidebar docs"
},
"sidebar.docs.category.Services": {
"message": "Services",
"description": "The label for category Services in sidebar docs"
}
}
116 changes: 116 additions & 0 deletions i18n/zh_Hans/docusaurus-plugin-content-docs/current/README.md
@@ -0,0 +1,116 @@
---
slug: /
title: Introduction
---

[![Build Status](https://github.com/aos-dev/go-storage/workflows/Unittest/badge.svg?branch=master)](https://github.com/aos-dev/go-storage/actions?query=workflow%3AUnittest) [![Go dev](https://godoc.org/github.com/aos-dev/go-storage?status.svg)](https://godoc.org/github.com/aos-dev/go-storage) [![License](https://img.shields.io/badge/license-apache%20v2-blue.svg)](https://github.com/Xuanwo/storage/blob/master/LICENSE) [![Join the chat](https://img.shields.io/badge/chat-online-blue?style=flat&logo=zulip)](https://aos-dev.zulipchat.com/join/c3sqj64sp53tlau7oojg3yll/)

An application-oriented unified storage layer for Golang.

## Goal

- Production ready
- High performance
- Vendor agnostic

## Features

### Widely services support

- [azblob](./golang/services/azblob/): [Azure Blob storage](https://docs.microsoft.com/en-us/azure/storage/blobs/)
- [cos](./golang/services/cos/): [Tencent Cloud Object Storage](https://cloud.tencent.com/product/cos)
- [dropbox](./golang/services/dropbox/): [Dropbox](https://www.dropbox.com)
- [fs](./golang/services/fs/): Local file system
- [gcs](./golang/services/gcs/): [Google Cloud Storage](https://cloud.google.com/storage/)
- [kodo](./golang/services/kodo/): [qiniu kodo](https://www.qiniu.com/products/kodo)
- [oss](./golang/services/oss/): [Aliyun Object Storage](https://www.aliyun.com/product/oss)
- [qingstor](./golang/services/qingstor/): [QingStor Object Storage](https://www.qingcloud.com/products/qingstor/)
- [s3](./golang/services/s3/): [Amazon S3](https://aws.amazon.com/s3/)
- [uss](./golang/services/uss/): [UPYUN Storage Service](https://www.upyun.com/products/file-storage)

### Servicer operation support

- List: list all Storager in service
- Get: get a Storager via name
- Create: create a Storager
- Delete: delete a Storager

### Storager operation support

Basic operations

- Metadata: get storager's metadata
- Read: read file content
- Write: write content into file
- Stat: get file's metadata
- Delete: delete a file or directory

Extended operations

- Copy: copy a file inside storager
- Move: move a file inside storager
- Reach: generate a public accessible url
- Statistical: get storage service's statistics

Multiple list style support

- ListDir: list files and directories under a directory
- ListPrefix: list files under a prefix

Segment/Multipart support

- ListPrefixSegment: list segments under a prefix
- InitIndexSegment: initiate an index type segment
- WriteIndexSegment: write content into an index type segment
- CompleteSegment: complete a segment to create a file
- AbortSegment: abort a segment

### File metadata support

Required metadata

- `id`: unique key in service
- `name`: relative path towards service's work dir
- `type`: object type cloud be `file`, `dir`, `link` or `unknown`

Optional metadata

- `size`: object's content size.
- `updated_at`: object's last updated time.
- `content-md5`: md5 digest as defined in [rfc2616](https://tools.ietf.org/html/rfc2616#section-14.15)
- `content-type`: media type as defined in [rfc2616](https://tools.ietf.org/html/rfc2616#section-14.17)
- `etag`: entity tag as defined in [rfc2616](https://tools.ietf.org/html/rfc2616#section-14.19)
- `storage-class`: object's storage class

## Quick Start

```go
import (
"log"

"github.com/aos-dev/go-storage/v2"
"github.com/aos-dev/go-storage/v2/pairs"
"github.com/aos-dev/go-services-fs"
)

// Init a service.
store, err := fs.NewStorager(pairs.WithWorkDir("/tmp"))
if err != nil {
log.Fatalf("service init failed: %v", err)
}

// Use Storager API to maintain data.
var buf bytes.Buffer

n, err := store.Read("path/to/file", &buf)
if err != nil {
log.Printf("storager read: %v", err)
}
```

## Sponsor

<a href="https://vercel.com?utm_source=aos-dev&utm_campaign=oss">
<img src="/img/vercel_logo_dark.svg" />
</a>

@@ -0,0 +1,27 @@
---
title: Introduction
---

## Servicer

[servicer](./servicer/) is used to maintain multiple storage services.

## Storager

[storager](./storager/) is the interface for storage service.

## Prefix Lister

[prefix_lister](./prefix_lister/) is the interface to list prefix.

## Prefix Segments Lister

[prefix_segments_lister](./prefix_segments_lister/) used to list prefix segments.

## Reacher

[reacher](./reacher/) used to reach an Object.

## Statistician

[statistician](./statistician/) used to get storage's statistics.
@@ -0,0 +1,9 @@
PrefixLister is used for prefix based storage service to list objects under a prefix.

## ListPrefix

ListPrefix will return list a specific prefix.

Caller:

- prefix SHOULD NOT start with /, and SHOULD relative to workdir.
@@ -0,0 +1,9 @@
PrefixSegmentsLister is used for prefix based storage service to list segments under a prefix.

## ListPrefixSegments

ListPrefixSegments will list segments.

Implementer:

- If prefix == "", services should return all segments.
@@ -0,0 +1,9 @@
Reacher is the interface for Reach.

## Reach

Reach will provide a way, which can reach the object.

Implementer:

- SHOULD return a publicly reachable http url.

1 comment on commit f7e1534

@vercel
Copy link

@vercel vercel bot commented on f7e1534 Mar 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

Please sign in to comment.